1. 程式人生 > 實用技巧 >SQL 基本語句規範

SQL 基本語句規範

文章轉載自 微信公眾號 資料管道
摘要

經常看到一份資料分析崗位的招聘要求:“熟練使用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

本部分展開太細,不做介紹,做為資料分析師需要重點掌握查詢語句!