select list:其中可以包含一項(xiàng)或多項(xiàng)下列內(nèi)容:
1、“*”,表示按照create table的順序排列的所有列。
2、按照用戶所需順序排列的列名的清單。
3、可以使用別名取代列名,形式如下:column name as column_heading。
4、表達(dá)式(列名、常量、函數(shù),或以算術(shù)或逐位運(yùn)算符連接的列名、常量和函數(shù)的任何組合)。
5、內(nèi)部函數(shù)或集合函數(shù)。
6、上述各項(xiàng)的任何一種組合。
FROM:決定SELECT命令中使用哪些表。一般都要求有此項(xiàng),除非select_list中不含列名(例如,只有常量、算術(shù)表達(dá)式等)。如果表項(xiàng)中有多個(gè)表,用逗號(hào)將之分開(kāi)。在關(guān)鍵詞FROM后面的表的順序不影響結(jié)果。
表名可以給出相關(guān)別名,以便使表達(dá)清晰。這里的語(yǔ)法是tbl_name [AS] alias_name。例如:
select t1.name,t2.salary from employee as t1,info as t2 where t1.name=t2.name與select t1.name,t2.salary from employee t1,info t2 where t1.name=t2.name是完全等價(jià)的。
所有對(duì)該表的其他引用,例如在where子句和having子句中,都要用別名,別名不能以數(shù)字開(kāi)頭。
where子句設(shè)置了搜索條件,它在insert,update,delete語(yǔ)句中的應(yīng)用方法也與在select語(yǔ)句中的應(yīng)用方法完全相同。搜索條件緊跟在關(guān)鍵詞where的后面。如果用戶要在語(yǔ)句中使用多個(gè)搜索條件,則可用and或or連接。搜索條件的基本語(yǔ)法是[not] expression comparison_operator expression;[not] expression [not] like “match_string”;[not] expression is [not] null;[not] expression [not] between expression and expression;[not] column_name join_operator column_name;[not] boolean_expression。
and:用來(lái)聯(lián)結(jié)兩個(gè)條件,并在兩個(gè)條件都是TRUE的時(shí)候返回結(jié)果。當(dāng)在同一語(yǔ)句中使用多個(gè)邏輯運(yùn)算符時(shí),and運(yùn)算符總是先,除非用戶用括號(hào)改變了運(yùn)算順序。
or:用來(lái)聯(lián)結(jié)兩個(gè)條件,當(dāng)兩個(gè)條件中有任一條件是TRUE的時(shí)候返回結(jié)果。當(dāng)在同一語(yǔ)句中使用多個(gè)邏輯運(yùn)算符時(shí),運(yùn)算符or通常在運(yùn)算符and之后進(jìn)行運(yùn)算。當(dāng)然用戶可以使用括號(hào)改變運(yùn)算的順序。
between:用來(lái)標(biāo)識(shí)范圍下限的關(guān)鍵詞,and后面跟范圍上限的值。范圍where @val between x and y包含首尾值。如果between后面指定的第一個(gè)值大于第二個(gè)值,則該查詢不返回任何行。 column_name:在比較中使用的列名。在會(huì)產(chǎn)生歧義時(shí),一定要指明列所在的表名。
comparison_operator:比較運(yùn)算符。見(jiàn)下表:
符號(hào) 意義
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
<> 不等于
在比較char,varchar型數(shù)據(jù)時(shí),“<”的意思是更接近字母表頭部,“>”代表更接近字母表尾部。一般來(lái)說(shuō),小寫字母大于大寫字母,大寫字母大于數(shù)字,但是這可能依賴于服務(wù)器上操作系統(tǒng)的比較順序。
在比較時(shí),末尾的空格是被忽略的。例如,“Dirk”等于“Dirk ”。
在比較日期時(shí),“<”表示早于,“>”表示晚于。
在使用比較運(yùn)算符比較character和datetime數(shù)據(jù)時(shí),需用引號(hào)將所有數(shù)據(jù)引起來(lái)。
expression:可能是列名、常數(shù)、函數(shù)或者是列名或常數(shù)的任意組合,以及以算術(shù)運(yùn)算符或逐位運(yùn)算符連接的函數(shù)。算術(shù)運(yùn)算符如下表所示:
符號(hào) 意義
+ 加號(hào)
- 減號(hào)
* 乘號(hào)
/ 除號(hào)
is null:在搜索一個(gè)NULL值時(shí)使用。
like:關(guān)鍵詞,對(duì)char、varchar和datetime(不包括秒和毫秒)可以使用like,在MySQL中l(wèi)ike也可以用在數(shù)字的表達(dá)式上。
當(dāng)用戶在搜索datetime型數(shù)據(jù)時(shí),是使用關(guān)鍵詞like,因?yàn)橥暾膁atetime記錄包含各種各樣的日期組件。例如用戶在列arrival_time中加入一個(gè)值“9:20”,而子句where arrival_time=“9:20”卻沒(méi)有發(fā)現(xiàn)它,因?yàn)镸ySQL把錄入的數(shù)據(jù)轉(zhuǎn)換成了“Jan 1,1900 9:20AM”。然而子句where arrival_time like“%9:20%”就能找到它。
boolean_expression:返回“true”或“false”值的表達(dá)式。
match_string:由字符和通配符組成的串,用單引號(hào)或雙引號(hào)引起來(lái),是匹配模式。通配符如下表所示:
符號(hào) 意義
% 0或多個(gè)字符的字符串
_ 任何一單個(gè)字符
1、“*”,表示按照create table的順序排列的所有列。
2、按照用戶所需順序排列的列名的清單。
3、可以使用別名取代列名,形式如下:column name as column_heading。
4、表達(dá)式(列名、常量、函數(shù),或以算術(shù)或逐位運(yùn)算符連接的列名、常量和函數(shù)的任何組合)。
5、內(nèi)部函數(shù)或集合函數(shù)。
6、上述各項(xiàng)的任何一種組合。
FROM:決定SELECT命令中使用哪些表。一般都要求有此項(xiàng),除非select_list中不含列名(例如,只有常量、算術(shù)表達(dá)式等)。如果表項(xiàng)中有多個(gè)表,用逗號(hào)將之分開(kāi)。在關(guān)鍵詞FROM后面的表的順序不影響結(jié)果。
表名可以給出相關(guān)別名,以便使表達(dá)清晰。這里的語(yǔ)法是tbl_name [AS] alias_name。例如:
select t1.name,t2.salary from employee as t1,info as t2 where t1.name=t2.name與select t1.name,t2.salary from employee t1,info t2 where t1.name=t2.name是完全等價(jià)的。
所有對(duì)該表的其他引用,例如在where子句和having子句中,都要用別名,別名不能以數(shù)字開(kāi)頭。
where子句設(shè)置了搜索條件,它在insert,update,delete語(yǔ)句中的應(yīng)用方法也與在select語(yǔ)句中的應(yīng)用方法完全相同。搜索條件緊跟在關(guān)鍵詞where的后面。如果用戶要在語(yǔ)句中使用多個(gè)搜索條件,則可用and或or連接。搜索條件的基本語(yǔ)法是[not] expression comparison_operator expression;[not] expression [not] like “match_string”;[not] expression is [not] null;[not] expression [not] between expression and expression;[not] column_name join_operator column_name;[not] boolean_expression。
and:用來(lái)聯(lián)結(jié)兩個(gè)條件,并在兩個(gè)條件都是TRUE的時(shí)候返回結(jié)果。當(dāng)在同一語(yǔ)句中使用多個(gè)邏輯運(yùn)算符時(shí),and運(yùn)算符總是先,除非用戶用括號(hào)改變了運(yùn)算順序。
or:用來(lái)聯(lián)結(jié)兩個(gè)條件,當(dāng)兩個(gè)條件中有任一條件是TRUE的時(shí)候返回結(jié)果。當(dāng)在同一語(yǔ)句中使用多個(gè)邏輯運(yùn)算符時(shí),運(yùn)算符or通常在運(yùn)算符and之后進(jìn)行運(yùn)算。當(dāng)然用戶可以使用括號(hào)改變運(yùn)算的順序。
between:用來(lái)標(biāo)識(shí)范圍下限的關(guān)鍵詞,and后面跟范圍上限的值。范圍where @val between x and y包含首尾值。如果between后面指定的第一個(gè)值大于第二個(gè)值,則該查詢不返回任何行。 column_name:在比較中使用的列名。在會(huì)產(chǎn)生歧義時(shí),一定要指明列所在的表名。
comparison_operator:比較運(yùn)算符。見(jiàn)下表:
符號(hào) 意義
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
<> 不等于
在比較char,varchar型數(shù)據(jù)時(shí),“<”的意思是更接近字母表頭部,“>”代表更接近字母表尾部。一般來(lái)說(shuō),小寫字母大于大寫字母,大寫字母大于數(shù)字,但是這可能依賴于服務(wù)器上操作系統(tǒng)的比較順序。
在比較時(shí),末尾的空格是被忽略的。例如,“Dirk”等于“Dirk ”。
在比較日期時(shí),“<”表示早于,“>”表示晚于。
在使用比較運(yùn)算符比較character和datetime數(shù)據(jù)時(shí),需用引號(hào)將所有數(shù)據(jù)引起來(lái)。
expression:可能是列名、常數(shù)、函數(shù)或者是列名或常數(shù)的任意組合,以及以算術(shù)運(yùn)算符或逐位運(yùn)算符連接的函數(shù)。算術(shù)運(yùn)算符如下表所示:
符號(hào) 意義
+ 加號(hào)
- 減號(hào)
* 乘號(hào)
/ 除號(hào)
is null:在搜索一個(gè)NULL值時(shí)使用。
like:關(guān)鍵詞,對(duì)char、varchar和datetime(不包括秒和毫秒)可以使用like,在MySQL中l(wèi)ike也可以用在數(shù)字的表達(dá)式上。
當(dāng)用戶在搜索datetime型數(shù)據(jù)時(shí),是使用關(guān)鍵詞like,因?yàn)橥暾膁atetime記錄包含各種各樣的日期組件。例如用戶在列arrival_time中加入一個(gè)值“9:20”,而子句where arrival_time=“9:20”卻沒(méi)有發(fā)現(xiàn)它,因?yàn)镸ySQL把錄入的數(shù)據(jù)轉(zhuǎn)換成了“Jan 1,1900 9:20AM”。然而子句where arrival_time like“%9:20%”就能找到它。
boolean_expression:返回“true”或“false”值的表達(dá)式。
match_string:由字符和通配符組成的串,用單引號(hào)或雙引號(hào)引起來(lái),是匹配模式。通配符如下表所示:
符號(hào) 意義
% 0或多個(gè)字符的字符串
_ 任何一單個(gè)字符