數(shù)據(jù)庫(kù)資源
本地?cái)?shù)據(jù)庫(kù):下載鏈接
在線(xiàn)數(shù)據(jù)庫(kù)測(cè)試:在線(xiàn)鏈接
基本格式
SELECT col FROM tableName羽嫡。
其中 tableName 為表名
col 為列名〖缗郏可以指定多個(gè)列杭棵,各列之間使用逗號(hào)分隔。
使用 * 通配符表示查詢(xún)所有的列氛赐。
FROM
FROM 關(guān)鍵字后可以跟多個(gè)表名颜屠。表名之間使用逗號(hào)分隔即可。
- 多個(gè)表時(shí)鹰祸,得到的結(jié)果為這些表的笛卡兒積甫窟。因此檢索出行數(shù)是第一個(gè)表的行數(shù)乘以第二個(gè)表的行數(shù)。
- 笛卡爾積:多個(gè)表的行的所有可能組合蛙婴。
DISTINCT
消除所有重復(fù)的記錄粗井,并只獲取唯一一條記錄
格式為:
SELECT DISTINCT col FROM tableName
與基本格式一致,只不過(guò)在 SELECT 后跟上 DISTINCT街图。
如果 DISTINCT 后有多個(gè)列浇衬,則返回的為各列組合在一起后的不同值。如:
其查詢(xún)結(jié)果為:
從中可以看出餐济,各列單獨(dú)時(shí)會(huì)有相同值耘擂,但是組合起來(lái)后就沒(méi)有相同值。
列名操作
查詢(xún)的列絮姆,不但可以有原始的列醉冤,還可以對(duì)這些列進(jìn)行操作。如:將不同的列進(jìn)行拼接篙悯,以及對(duì)列進(jìn)行四則運(yùn)算等蚁阳。
拼接
該操作只能用于字符串。sqlite 中使用 || 對(duì)不同的列進(jìn)行拼接鸽照。
SELECT name,area,name||'('||area||')' FROM animals
其檢索出的第三列是 name(area) 形式螺捐。
四則運(yùn)算
只能用于數(shù)值字段。
select price-num,price*num,price+num,price/num from demo
其檢索出的列便是 price 與 num 列的四則運(yùn)算的結(jié)果。
別名與 AS
通過(guò) AS 關(guān)鍵字對(duì)檢索的列取別名定血。并且可以在 WHERE 子句中使用別名赔癌。別名不能使用到檢索的列
select price,num, price*num AS total from demo where total>20
查詢(xún)結(jié)果中, price*num 列會(huì)被重新命名為 total澜沟,并且 WHERE 子句中對(duì) total 列進(jìn)行過(guò)濾届榄。
但是,不能在檢索的列中再次對(duì) total 進(jìn)行操作倔喂。即下面再次使用 total*2 會(huì)報(bào)錯(cuò)铝条。
select price,num, price*num AS ,total *2 total from demo where total>20
UNION
UNION 允許執(zhí)行多個(gè) SELECT 語(yǔ)句,并將結(jié)果做為一個(gè)查詢(xún)結(jié)果集返回席噩。
使用時(shí)班缰,只需要給出多個(gè) SELECT 語(yǔ)句,并在各個(gè)語(yǔ)句之間通過(guò) UNION 連接悼枢。
UNION 的每個(gè)查詢(xún)中必須包含相同的列埠忘,表達(dá)式或匯總函數(shù)(不要求出現(xiàn)的順序相同),即使列名不相同馒索,但別名必須相同莹妒。這便于對(duì)不同一的結(jié)果集進(jìn)行合并。
UNION 可以用于查詢(xún)多個(gè)表绰上,并且在需要組合多個(gè)表中的數(shù)據(jù)時(shí)非常有用旨怠。
UNION 查詢(xún)同一個(gè)表時(shí),與寫(xiě)多個(gè) WHERE 判斷類(lèi)似蜈块。但查詢(xún)多個(gè)表時(shí)鉴腻,WHERE 無(wú)法做到。
UNION會(huì)自動(dòng)刪除查詢(xún)結(jié)果中相同的行百揭,而 UNION ALL會(huì)保留相同的行爽哎。
在使用 UNION 時(shí),ORDER BY 必須放在最后一條 SELECT 語(yǔ)句的后面器一。
SELECT school.[name] AS n FROM school
UNION
SELECT stu.[name] AS n FROM stu
可以看出课锌,上面兩條 SELECT 語(yǔ)句完全沒(méi)有一點(diǎn)關(guān)系 —— 它們查詢(xún)不同的表,返回不同的列祈秕。
唯一有聯(lián)系的在于:不同的列的別名相同渺贤。查詢(xún)后,sql 會(huì)自動(dòng)按列名進(jìn)行對(duì)結(jié)果集進(jìn)行合并踢步。
順序
SELECT語(yǔ)句的總體順序:
首先通過(guò) SELECT FROM WHERE 對(duì)表的數(shù)據(jù)進(jìn)行過(guò)濾癣亚;
再通過(guò) GROUP BY 與 HAVING 對(duì)表進(jìn)行分組 —— 這一步是可選的丑掺。
當(dāng)所有的結(jié)果都檢索出來(lái)之后获印,通過(guò) ORDER BY 對(duì)結(jié)果集進(jìn)行排序
排序完畢之后才可以通過(guò) LIMIT OFFSET 決定要返回的記錄數(shù)。