SQL 基本語句規範
阿新 • • 發佈:2020-08-06
文章轉載自 微信公眾號 資料管道
摘要
經常看到一份資料分析崗位的招聘要求:“熟練使用SQL”。那你真的熟練嗎?
最基本的幾個問題,SQL是什麼?資料庫是什麼?RDBMS又是什麼?什麼叫表?
資料庫(Database):按照資料結構來組織、儲存和管理資料的倉庫。
RDBMS:(Relational Database Management System)
關係資料庫管理系統,儲存和操作關係資料庫表中排列的資料的軟體。
SQL:Structured Query Lanuage(結構化查詢語言),更詳細地說,SQL 是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關係資料庫系統,同時也是資料庫指令碼檔案的副檔名。
表:按列和行排列的一組資料。列表示儲存資料的特徵,行表示實際的資料條目。
目錄:
1、資料庫查詢語言
1.1、如何選擇多列
#語法
SELECT <Column List>
FROM <Table Name>
WHERE <Search Condition>
# 例子
SELECT FirstName, LastName, OrderDate
FROM Orders WHERE OrderDate > '10/10/2010'
1.2、如何選擇某一列並去重(重點)
#語法 SELECT DISTINCT <Column_name> FROM <Table Name> #例子 SELECT DISTINCT FirstName FROM Orders
1.3、如何從第一行開始選擇一共五行資料?
#語法
SELECT <col_name >
FROM table_name
limt 5 offset 1;
#例子
SELECT FirstName
FROM Orders
limt 5 offset 1;
1.4、如何按照指定方向(升、降)排序選擇資料?
#語法 SELECT co_name1,col_name2 FROM table_name ORDER BY col_name1 DESC,col_name2 ASC #例子 SELECT OrderDate,FirstName FROM Orders ORDER BY OrderDate DESC
1.5、常見的一些過濾選擇有哪些。(重點)
#範圍內檢查
SELECT col_name
FROM table_name
WHERE col_name BETEWEEN 5 AND 10;
# >= and <=
#空值檢查
SELECT col_name
FROM table_name
WHERE col_name IS null;
# in操作符
SELECT col_name
FROM table_name
WHERE col_name IN (....);
# NOT操作符
SELECT col_name
FROM table_name
WHERE NOT (條件);
#AND 和 OR 注意優先順序 and 優先順序高於or
SELECT col_name
FROM table_name
WHERE (condi_1 OR condi_2) AND condi_3;
#第五部分使用萬用字元進行過濾
SELECT col_name
FROM table_name
WHERE col_name like '..%..';
SELECT col_name
FROM table_name
WHERE col_name like '.._..';
SELECT col_name
FROM table_name
WHERE col_name like '[]%';
1.5、如何分組並按條件選擇資料?(重點)
#語法
SELECT <Column List>, <Aggregate Function>(<Column Name>)
FROM <Table Name>
WHERE <Search Condition>
GROUP BY <Column List>2
#例子
SELECT LastName, SUM(OrderValue)
FROM Orders
WHERE OrderDate > '10/10/2010'
GROUP BY LastName3
/*注意點: GROUP BY 後面也可以接條件。
WHERE 語句和HAVING配合的使用。
WHERE在HAVING之前。
WHERE 過濾針對的是行,HAVING過濾針對的是組。
*/
1.6、分組和排序的順序是什麼?(重點)
/*SELECT FROM WHERE GROUP BY HAVING ORDER BY*/
SELECT col_name
FROM table_name
WHERE <condition_1>
GROUP BY <col_name>
HAVING <condition_2>
ORDER BY <col_name>
1.7、如何使用子查詢?(重點)
SELECT col_name
FROM table_name
WHERE col_name = (
SELECT col_name
FROM table_name
WHERE .... );
1.8、表的聯結查詢怎麼做(非常重點!!!!一定要會!)
#語法
SELECT <Column List>
FROM <Table1> JOIN <Table2>
ON <Table1>.<Column1> = <Table2>.<Column1>、
#例子
SELECT Orders.LastName, Countries.CountryName
FROM Orders INNER JOIN Countries ON
Orders.CountryID = Countries.ID
#除此之外還有左聯結 LEFT JOIN右聯結 RIGHT JOIN全聯結 FULL JOIN
1.9、如何使用聯合查詢
#語法
SELECT <Column List>
FROM <Table1>
UNION
SELECT <Column List>
FROM <Table2>
#例子
SELECT <Column List>
FROM <Table1>
UNION
SELECT <Column List>
FROM <Table2>
**
**
2資料庫操作語言
2.1 INSERT(插入)
#語法
INSERT INTO <Table Name>(<Column List>)
VALUES (<Values>)
#例子
INSERT INTO Orders(FirstName, LastName, OrderDate)
VALUES('John', 'Smith', '10/10/2010')
2.2 UPDATE(更新)
#語法
UPDATE <Table Name>
SET <Column1> = <Value1>, <Column2> = <Value2>, …WHERE <Search Condition>
#例子
UPDATE Orders
SET FirstName = 'John', LastName = 'Who'
WHERE LastName='Wo'
2.3 DELETE(刪除)
#語法
DELETE FROM <Table Name>
WHERE <Search Condition>
#例子
DELETE FROM Orders
WHERE OrderDate <'10/10/2010'
3、資料庫定義語言
**
**
3.1、CREATE (建立表)
# 語法
CREATE TABLE <Table Name>(
Column1 DataType, Column2 DataType, Column3 DataType
)
# 例子
CREATE TABLE Orders(
FirstName CHAR(100), LastName CHAR(100), OrderDate DATE
)
3.2、ALTER(更改表)
#語法
ALTER TABLE <Table Name>
ADD col_name Datatype;
ALTER TABLE <Table Name>
DROP COLUMN <col_name>
# 例子
ALTER TABLE Vendors
ADD vend_phone CHAR(20);
ALTER TABLE Vendors
DROP COLUMN vend_phone;
3.3 DROP (刪除表)
#語法
DROP TABLE table_name;
#例子
DROP TABLE CustCopy;
4、資料庫控制語言
4.1 GRANT
4.2 REVOKE
本部分展開太細,不做介紹,做為資料分析師需要重點掌握查詢語句!