您好,登錄后才能下訂單哦!
小編給大家分享一下MySQL中sql語(yǔ)句有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
以下兩個(gè)表格做講解
SELECT "字段" FROM "表名"; SELECT Store_Name FROM Store_Info; 顯示表格中的一個(gè)或數(shù)個(gè)字段的所有數(shù)據(jù)記錄
SELECT DISTINCT "字段" FROM "表名"; select distinct store_name from store_info; 不顯示重復(fù)的數(shù)據(jù)記錄
SELECT "字段" FROM "表名" WHERE "條件"; 查找store_info 表中 符號(hào)sales=700條件 的 store_name字段 有條件查詢
SELECT "字段" FROM "表名" WHERE "條件1" select store_name,sales,date from store_info where sales > 1000 or (sales < 500 and sales > 200); 且 或
SELECT "字段" FROM "表名" WHERE "字段" BETWEEN ('值1' AND '值2',...); select * from store_info where store_name in ('Houston','Los Angeles'); 顯示已知的值的數(shù)據(jù)記錄
SELECT "字段" FROM "表名" WHERE "字段" BETWEEN '值1' AND '值2'; select * from store_info where sales between 200 and 500; 顯示兩個(gè)值范圍
% ;百分號(hào)表示零個(gè),一個(gè)或多個(gè)字符
_ :下劃線表示單個(gè)字符'A_Z':所有以‘A'起頭,另一個(gè)任何值的字符,且以‘Z為結(jié)尾的字符串。如,'ABZ’和'A2Z′都符合這一個(gè)模式,而'AKKZ'并不符合(因?yàn)樵贏和Z之間有兩個(gè)字符,而不是一個(gè)字符)。
'ABC%':所有以 'ABC’起頭的字符串。例如,'ABCD’和'ABCABC’都符合這個(gè)模式。
'%XYZ':所有以'XYZ’結(jié)尾的字符串。例如,'WXYZ’和‘ZZXYZ’都符合這個(gè)模式。
'%AN%':所有含有 'AN'這個(gè)模式的字符串。例如,'LOS ANGELES’和 'SAN FRANCISCo’都符合這個(gè)模式。
'_AN%':所有第二個(gè)字母為'A′和第三個(gè)字母為'N’的字符串。例如,'SAN FRANCIScO’符合這個(gè)模式,而'LoS ANGELES'則不符合這個(gè)模式。
SELECT "字段" FROM "表名" WHERE"字段" LIKE {模式}; select * from store_info where store_name like '%os%'; 匹配一個(gè)模式來(lái)找出我們要的數(shù)據(jù)記錄
SELECT "字段" FROM "表名" [WHERE "條件"] ORDER BY "字段" [ASC,DESC]; select * from store_info order by sales; select * from store_info order by sales desc; #ASC 是按照升序進(jìn)行排序的,是默認(rèn)的排序方式。 #DESC 是按降序方式進(jìn)行排序
數(shù)學(xué)函數(shù);
abs (x) 返回x的絕對(duì)值 rand () 返回o到1的隨機(jī)數(shù) mod (x,y) 返回x除以y以后的余數(shù) power (x,y) 返回x的y次方 round (x) 返回離x最近的整數(shù) round (x,y) 保留x的y位小數(shù)四舍五入后的值 sqrt(x) 返回x的平方根 truncate (x, y) 返回?cái)?shù)字x截?cái)酁閥位小數(shù)的值 ceil(x) 返回大于或等于x的最小整數(shù) floor(x) 返回小于或等于x的最大整數(shù) greatest (x1,x2...) 返回集合中最大的值 least(x1,x2...) 返回集合中最小的值 聚合函數(shù): avg () 返回指定列的平均值 count () 返回指定列中非NULL值的個(gè)數(shù) min () 返回指定列的最小值 max () 返回指定列的最大值 sum (x) 返回指定列的所有值之和
#count(*)包括了所有的列的行數(shù),在統(tǒng)計(jì)結(jié)果的時(shí)候,不會(huì)忽略列值為NULL #count(列名)只包括列名那一列的行數(shù),在統(tǒng)計(jì)結(jié)果的時(shí)候,會(huì)忽略列值為NULL的行
trim () 返回去除指定格式的值 concat (x, y) 將提供的參數(shù)x和y拼接成一個(gè)字符串 substr(x,y) 獲取從字符串x中的第y個(gè)位置開始的字符串,跟 substring()函數(shù)作用相同 substr(x,y,z) 獲取從字符串x中的第y個(gè)位置開始長(zhǎng)度為z的字符串 length (x) 返回字符串x的長(zhǎng)度 replace (x,y,z) 將字符串z替代字符串x中的字符串y upper (x) 將字符串x的所有字母變成大寫字母 lower (x) 將字符串x的所有字母變成小寫字母 left (x, y) 返回字符串x的前y個(gè)字符 right (x, y) 返回字符串 x的后y個(gè)字符 repeat (x,y) 將字符串x重復(fù)y次 space (x) 返回x個(gè)空格 strcmp(x,y) 比較x和y,返回的值可以為-1,0,1 reverse (x) 將字符串x反轉(zhuǎn)
如果sql_mode開啟了PIPES_AS_CONCAT,’||’ 視為字符串的連接操作符而非或運(yùn)算符,和字符串的拼接函數(shù)Concat相類似,這和Oracle相類似,這和Oracle數(shù)據(jù)庫(kù)使用方法一樣
select "字段1",sum("字段2") from "表名" group by "字段1"; group by 有一個(gè)原則,就是select后面的所有列中,沒(méi)有使用聚合函數(shù)的列,必須出現(xiàn)在group by后面
用來(lái)過(guò)來(lái)由group by 語(yǔ)句返回的記錄集,通常與group by 語(yǔ)句聯(lián)合使用
having 語(yǔ)句的存在彌補(bǔ)了where關(guān)鍵字不能與聚合函數(shù)聯(lián)合使用的不足,如果被select的只有函數(shù)欄,那就不需要group by子句
select "表格別名"."字段一" [AS] "字段別名" from "表格名" [AS] "表格別名"; 字段別名,表格別名
select "字段1" from "表格" where "字段2" [比較運(yùn)算符] #外查詢 select "字段1" from "表格2" where "條件"; 連接表格,在where 子句或 having 子句中插入另一個(gè) sql語(yǔ)句 可以是符號(hào)的運(yùn)算符,例如 = > < <= >= 也可以文字的運(yùn)算符 例如 LIKE IN BETWEEN
用來(lái)測(cè)試內(nèi)查詢有沒(méi)有產(chǎn)生任何結(jié)果,類似布爾值是否為真 #如果有的話,系統(tǒng)就會(huì)執(zhí)行外查詢中的SQL語(yǔ)句,若是沒(méi)有的話,那整個(gè)SQL語(yǔ)句就不會(huì)產(chǎn)生任何結(jié)果。 語(yǔ)法:SELECT "字段1" from "表格1" where exists (SELECT * FROM "表格2" WHERE "條件"); SELECT SUM(Sales) FROM Store_Info WHERE EXISTS (SELECT * FROM location WHERE Region = 'West');
以下兩表做實(shí)驗(yàn)
inner join(內(nèi)連接): 只返回兩個(gè)表中聯(lián)結(jié)字段相等的行
left join(左連接):返回包括左表中的所有記錄和右表中聯(lián)結(jié)字段相等的記錄
right join (右連接):返回包括右表中的所有記錄和左表中聯(lián)結(jié)字段相等的記錄
視圖,可以當(dāng)作是虛擬表或存儲(chǔ)查詢
視圖跟表格的不同是,表格中有實(shí)際儲(chǔ)存數(shù)據(jù)記錄,而視圖是建立在表格之上的一個(gè)架構(gòu),它本身并不實(shí)際儲(chǔ)存數(shù)據(jù)記錄。臨時(shí)表在用戶退出或同數(shù)據(jù)庫(kù)的連接斷開后就自動(dòng)消失了,而視圖不會(huì)消失。
視圖不含有數(shù)據(jù),只存儲(chǔ)它的定義,它的用途一般可以簡(jiǎn)化復(fù)雜的查詢。比如你要對(duì)幾個(gè)表進(jìn)行連接查詢,而且還要進(jìn)行統(tǒng)計(jì)排序等操作,寫SQL語(yǔ)句會(huì)很麻煩的,用視圖將幾個(gè)表聯(lián)結(jié)起來(lái),然后對(duì)這個(gè)視圖進(jìn)行查詢操作,就和對(duì)一個(gè)表查詢一樣,很方便。
視圖表不會(huì)像臨時(shí)表一樣,斷開連接后自動(dòng)消失
視圖表保存的是select 語(yǔ)句查詢的結(jié)果,它本身不存儲(chǔ)數(shù)據(jù)
當(dāng)視圖表的結(jié)構(gòu)跟存儲(chǔ)數(shù)據(jù)的原始表結(jié)構(gòu)相同則可以修改或插入數(shù)據(jù),如果不一樣則不能修改或插入數(shù)據(jù)(比如多表連接查詢的結(jié)果)
union:生成結(jié)果的數(shù)據(jù)記錄值將沒(méi)有重復(fù),且按照字段的順序進(jìn)行排序
語(yǔ)法:[select 語(yǔ)句1] union [select 語(yǔ)句2];union all:將生成結(jié)果的數(shù)據(jù)記錄值都列出來(lái),無(wú)論有多少重復(fù)
語(yǔ)法:[select 語(yǔ)句1] union all [select 語(yǔ)句2];
取兩個(gè)SQL語(yǔ)句結(jié)果的交集 select A.store_name from location A inner join store_info B on A.store_name=B.store_name; select A.store_name from location A inner join store_info B using(store_name);
兩表其中的一個(gè)表沒(méi)有指定的行,而另一個(gè)表這個(gè)行有重復(fù)不適用,要求兩個(gè)表確實(shí)有交集的行的時(shí)候用
取兩個(gè)SQL語(yǔ)句結(jié)果的交集,且沒(méi)有重復(fù)
顯示第一個(gè)SQL語(yǔ)句的結(jié)果,且與第二個(gè)SQL語(yǔ)句沒(méi)有交集的結(jié)果,且沒(méi)有重復(fù)
是SQL用來(lái)做為 if-then-else 之類邏輯的關(guān)鍵字 語(yǔ)法:select casd("字段名") when "條件1" then "結(jié)果2" when "條件2" then "結(jié)果2" .... [else "結(jié)果N"] end from "表名"; #條件可以是一個(gè)數(shù)值或公式。else 子句并不是必須的
1.無(wú)值的長(zhǎng)度為0,不占用空間的;而 NULL值的長(zhǎng)度是NULL,是占用空間的。
2.IS NULL或者 IS NoT NULL,是用來(lái)判斷字段是不是為NULL或者不是 NULL,
不能查出是不是無(wú)值的。
3.無(wú)值的判斷使用=''或者<>''來(lái)處理。<>代表不等于。
4.在通過(guò) count()指定字段統(tǒng)計(jì)有多少行數(shù)時(shí),如果遇到NULL值會(huì)自動(dòng)忽略掉,遇到無(wú)值會(huì)加入到記錄中進(jìn)行計(jì)算。
匹配模式 | 描述 | 實(shí)例 |
---|---|---|
^ | 匹配文本的開始字符 | ‘^bd’ 匹配以bd開頭的字符串 |
$ | 匹配文本的結(jié)束字符 | ‘qn$’ 匹配以qn結(jié)尾的字符串 |
. | 匹配任何單個(gè)字符 | 's.t’匹配任何s和t之間有一個(gè)字符的字符串 |
* | 匹配零個(gè)或多個(gè)在它前面的字符 | ‘fo*t’ 匹配t前面有任意個(gè)o |
+ | 匹配前面的字符1次或多次 | ‘hom+’ 匹配ho開頭,后面至少一個(gè)m的字符串 |
字符串 | 匹配包含指定的字符串 | ‘clo’ 匹配含有clo的字符串 |
p1|p2 | 匹配p1或p2 | ‘bg | fg’ 匹配bg或fg |
[…] | 匹配字符集合中的任意一個(gè)字符 | ‘[abc]’ 匹配a或b或c |
[^…] | 匹配不在括號(hào)中的任何字符 | ‘[ ^ ab]’ 匹配不含a或b的字符串 |
{n} | 匹配前面的字符串n次 | ‘g{2}’ 匹配含有2個(gè)g的字符串 |
{n,m} | 匹配前面的字符串至少n次,至多m次 | ‘f{1,3}’ 匹配f最少1次 最多3次 |
語(yǔ)法:select "字段" from "表名" where "字段" regexp {模式};
存儲(chǔ)過(guò)程是一組為了完成特定功能的SQL語(yǔ)句集合。
存儲(chǔ)過(guò)程在使用過(guò)程中是將常用或者復(fù)雜的工作預(yù)先使用SQL語(yǔ)句寫好并用一個(gè)指定的名稱存儲(chǔ)起來(lái),這個(gè)過(guò)程經(jīng)編譯和優(yōu)化后存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中。當(dāng)需要使用該存儲(chǔ)過(guò)程時(shí),只需要調(diào)用它即可。存儲(chǔ)過(guò)程在執(zhí)行上比傳統(tǒng)SQL速度更快、執(zhí)行效率更高。存儲(chǔ)過(guò)程的優(yōu)點(diǎn):
1、執(zhí)行一次后,會(huì)將生成的二進(jìn)制代碼駐留緩沖區(qū),提高執(zhí)行效率
2、SQL語(yǔ)句加上控制語(yǔ)句的集合,靈活性高
3、在服務(wù)器端存儲(chǔ),客戶端調(diào)用時(shí),降低網(wǎng)絡(luò)負(fù)載
4、可多次重復(fù)被調(diào)用,可隨時(shí)修改,不影響客戶端調(diào)用
5、可完成所有的數(shù)據(jù)庫(kù)操作,也可控制數(shù)據(jù)庫(kù)的信息訪問(wèn)權(quán)限
delimiter $$ ##將語(yǔ)句的結(jié)束符號(hào)從分號(hào);臨時(shí)改為兩個(gè)$$ 可以自定義 create procedure proc() ##創(chuàng)建存儲(chǔ)過(guò)程,過(guò)程名為proc,不帶參數(shù) -> begin ##過(guò)程體以關(guān)鍵字 begin 開始 -> select * from Store_info; ##過(guò)程體語(yǔ)句 -> end $$ ##過(guò)程體以關(guān)鍵字 end結(jié)束 delimiter; ##將語(yǔ)句的結(jié)束符號(hào)恢復(fù)為分號(hào) call proc ##調(diào)用存儲(chǔ)過(guò)程 show create procedure [數(shù)據(jù)庫(kù).]存儲(chǔ)過(guò)程名;
in 輸入?yún)?shù):表示調(diào)用折向過(guò)程傳入值(傳入值可以是字面量或變量)
out 輸出參數(shù):表示過(guò)程向調(diào)用者傳出值(可以返回多個(gè)值)(傳出值只能是變量)
inout 輸入輸出參數(shù):即表示調(diào)用者向過(guò)程傳入值,又表示過(guò)程向調(diào)用者傳出值(值只能是變量)
show create procedure [數(shù)據(jù)庫(kù).]存儲(chǔ)過(guò)程名;
存儲(chǔ)過(guò)程內(nèi)容的修改方法是通過(guò)刪除原有存儲(chǔ)過(guò)程,之后再以相同的名詞創(chuàng)建新的存儲(chǔ)過(guò)程 drop procedure if exists Proc; #僅當(dāng)存在時(shí)刪除,不添加 if exists時(shí),如果指定的過(guò)程不存在,則產(chǎn)生一個(gè)錯(cuò)誤 drop procedure proc1;
(1) 條件語(yǔ)句 if-then-else …end if
delimiter $$ create procedure proc2(in num int) begin declare var int; set var=num*2; if var >= 10 then update t set id=id+1; else update t set id=id-1; end if; end$$
(2)循環(huán)語(yǔ)句while… end while
以上是“MySQL中sql語(yǔ)句有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。