SQL複習——高階語法
阿新 • • 發佈:2018-12-14
SQL SELECT TOP 字句
SELECT TOP 字句用於規定要返回的記錄數目,對於擁有數千條記錄的大型表來說是非常有用的。
SELECT TOP number/percent column_name(s)
FROM table_name;
SQL LIKE操作符
LIKE操作符用於在WHERE字句中搜索列中的指定模式
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern; #例項 SELECT * FROM Websites WHERE name LIKE 'G%'; SELECT * FROM Websites WHERE name NOT LIKE '%oo%';
SQL 萬用字元
萬用字元可用於替代字串中的任何其他字元
萬用字元 | 描述 |
---|---|
% | 替代零個或者多個字元 |
_ | 替代一個字元 |
[charlist] | 字元列中的任何單一字元 |
[^charlist] | 不在字元列中的任何單一字元 |
SELECT * FROM Websites
WHERE url LIKE 'https%';
SELECT * FROM Websites
WHERE url LIKE '%oo%';
SELECT * FROM Websites
WHERE name LIKE '_oogle';
SQL IN 操作符
IN 操作符允許在WHERE字句中規定多個值
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
SELECT * FROM Websites
WHERE name IN ('Google','菜鳥教程');
SQL BETWEEN 操作符
BETWEEN 操作符用於選取介於兩個值之間的資料範圍內的值
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; SELECT * FROM Websites WHERE alexa BETWEEN 1 AND 20; SELECT * FROM Websites WHERE alexa NOT BETWEEN 1 AND 20; #帶有IN的BETWEEN操作符例項 SELECT * FROM Websites WHERE (alexa BETWEEN 1 AND 20) AND country NOT IN ('USA','IND'); #帶有文字值的BETWEEN 操作符例項 SELECT * FROM Websites WHERE name BETWEEN 'A' AND 'H'; #帶有日期值的BETWEEN操作符例項 SELECT * FROM access_log WHERE date BETWEEN '2016-05-10' AND ‘2016-05-14’
SQL 別名
可以為表明稱或者列名稱指定別名,基本上建立別名是為了讓列的名稱更加具有可讀性。
SELECT column_name AS alias_name
FROM table_name;
SELECT column_name(s)
FROM table_name AS alias_name;
SELECT name AS n, country AS c
FROM Websites;
#將三個列結合在一起,並建立一個新的別名
SELCT name,CONCAT(url,','alexa,',',country) AS site_info
FROM Websites;
#通過使用別名讓語句更簡短一些
SELECT w.name,w.url,a.count,a.date
FROM Websites AS w,access_log AS a
WHERE w.id=a.site_id and w.name='菜鳥教程';
SQL 連線(JOIN)
用於將兩個或多個表的行結合起來,基於這些表之間的共同欄位。最常見的JOIN型別:SQL INNER JOIN(簡單的JOIN) 從多個表中返回滿足條件的所有行。
SELECT Websites.id,Websites.name,access_log.count,access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id;
SQL INNER JOIN 關鍵字
INNER JOIN 關鍵字在表中存在至少一個匹配時返回行
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
在使用join時,on和where條件的區別如下: 1.on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。 2.where條件是在臨時表生成好之後,再對臨時表進行過濾、這是已經沒有left join的含義(必須返回左邊表的記錄了),條件不為真的就全部過濾掉。
SQL LEFT JOIN 關鍵字
LEFT JOIN 關鍵字從左表返回所有行,即使右表中沒有匹配。如果右表中沒有匹配,則結果為NULL。
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
SQL RIGHT JOIN 關鍵字
RIGHT JOIN 關鍵字從右表(table2)返回所有行,即使左表中沒有匹配。如果左表中沒有匹配,則結果為NULL。
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
SQL FULL OUTER JOIN關鍵字
FULL OUTER JOIN 關鍵字只要左表和右表其中一個表存在匹配,則返回行。
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;