SQL基礎(chǔ) 關(guān)鍵字

SQL語言類型

數(shù)據(jù)定義:create/alter/drop table/trigger/index/function/存儲過程/約束/…
數(shù)據(jù)操縱:select/update/insert/delete
數(shù)據(jù)控制:grant/revoke

增刪改查

INSERT INTO 表名稱 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

例子

INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

DELETE FROM 表名稱 WHERE 列名稱 = 值

例子

DELETE FROM Person WHERE LastName = 'Wilson' 

UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

例子

UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'

SELECT 列名稱 FROM 表名稱
SELECT * FROM 表名稱

查select

distinct 去除重復(fù)項(xiàng)

SELECT DISTINCT 列名稱 FROM 表名稱

例子
如果要從 "Company" 列中選取所有的值,我們需要使用 SELECT 語句:

SELECT Company FROM Orders

"Orders"表:

Company     OrderNumber            
IBM           3532              
W3School    2356          
Apple       4698            
W3School    6953          

結(jié)果:

Company
IBM
W3School
Apple
W3School

請注意,在結(jié)果集中,W3School 被列出了兩次。
如需從 Company" 列中僅選取唯一不同的值,我們需要使用 SELECT DISTINCT 語句:

SELECT DISTINCT Company FROM Orders 

結(jié)果:

Company
IBM
W3School
Apple

現(xiàn)在,在結(jié)果集中,"W3School" 僅被列出了一次。
參考:http://www.w3school.com.cn/sql/sql_distinct.asp

where

SQL 使用單引號來環(huán)繞文本值(大部分?jǐn)?shù)據(jù)庫系統(tǒng)也接受雙引號)。如果是數(shù)值,請不要使用引號。
eg.
數(shù)值:

SELECT * FROM Persons WHERE Year>1965

文本值:

SELECT * FROM Persons WHERE FirstName='Bush'

and/or

AND 和 OR 可在 WHERE 子語句中把兩個(gè)或多個(gè)條件結(jié)合起來。
如果第一個(gè)條件和第二個(gè)條件都成立,則 AND 運(yùn)算符顯示一條記錄。
如果第一個(gè)條件和第二個(gè)條件中只要有一個(gè)成立,則 OR 運(yùn)算符顯示一條記錄。

order by + desc,asc + top,percent

eg.

SELECT TOP 2 * FROM Persons         --查詢前2個(gè)
SELECT TOP 50 PERCENT * FROM Persons     --查詢前百分之五十

like/not like+通配符

in+()

eg.

SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')

between and

模板

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

eg.

SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'

Alias =as 別名,查詢列名或者搜索表名的別名 可省略

eg.

SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'

SELECT LastName AS Family, FirstName AS Name
FROM Persons

join on

join=inner join

在表中存在至少一個(gè)匹配時(shí),INNER JOIN 關(guān)鍵字返回行。

left join

從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。
eg.

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

right join

從右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中沒有匹配的行。

full join

只要其中某個(gè)表存在匹配(左右表匹配全部返回),F(xiàn)ULL JOIN 關(guān)鍵字就會返回行。
eg.我們希望列出所有的人,以及他們的訂單,以及所有的訂單,以及定購它們的人。(人一張表,訂單一張表)

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

結(jié)果集:

LastName    FirstName   OrderNo           
Adams           John            22456         
Adams           John            24562
Carter          Thomas          77895           
Carter          Thomas          44678          
Bush            George                   
                             34764      

FULL JOIN 關(guān)鍵字會從左表 (Persons) 和右表 (Orders) 那里返回所有的行
如果 "Persons" 中的行在表 "Orders" 中沒有匹配,或者如果 "Orders" 中的行在表 "Persons" 中沒有匹配,這些行同樣會列出。
轉(zhuǎn)載自:http://www.w3school.com.cn/sql/sql_join_full.asp

表連接 join

1)內(nèi)連接:只連接匹配的行

select A.c1,B.c2 from A join B on A.c3 = B.c3;

2)左外連接:包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行)以及右邊表中全部匹配的行

select A.c1,B.c2 from A left join B on A.c3 = B.c3;

3)右外連接:包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行)以及左邊表中全部匹配的行

select A.c1,B.c2 from A right join B on A.c3 = B.c3;

4)全外連接:包含左、右兩個(gè)表的全部行,不管在另一邊的表中是否存在與它們匹配的行

select A.c1,B.c2 from A full join B on A.c3 = B.c3;

5)非等連接:使用等值以外的條件來匹配左、右兩個(gè)表中的行

select A.c1,B.c2 from A join B on A.c3 != B.c3;     

6)交叉連接:生成笛卡爾積——它不使用任何匹配或者選取條件,而是直接將一個(gè)數(shù)據(jù)源中的每個(gè)行與另一個(gè)數(shù)據(jù)源的每個(gè)行一一匹配

select A.c1,B.c2 from A,B;       

union/union all

用于合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集
Union和Union All的區(qū)別之一在于對重復(fù)結(jié)果的處理,Union All會保留重復(fù)結(jié)果
轉(zhuǎn)載自:http://www.w3school.com.cn/sql/sql_union.asp

select into

從一個(gè)表中選取數(shù)據(jù),然后把數(shù)據(jù)插入另一個(gè)表中
常用于創(chuàng)建表的備份復(fù)件或者用于對記錄進(jìn)行存檔
轉(zhuǎn)載自:http://www.w3school.com.cn/sql/sql_select_into.asp

(auto) increment 自增長

null

NULL 值是遺漏的未知數(shù)據(jù)。
默認(rèn)地,表的列可以存放 NULL 值。
eg.

SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL

SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NOT NULL

having

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

eg.
我們擁有下面這個(gè) "Orders" 表:

O_Id    OrderDate   OrderPrice  Customer            
1        2008/12/29 1000            Bush            
2        2008/11/23 1600            Carter          
3        2008/10/05 700         Bush          
4       2008/09/28  300         Bush           
5      2008/08/06   2000            Adams           
6      2008/07/21   100         Carter   

現(xiàn)在,我們希望查找訂單總金額少于 2000 的客戶。
我們使用如下 SQL 語句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000       

結(jié)果集類似:
Customer SUM(OrderPrice)
Carter 1700
現(xiàn)在我們希望查找客戶 "Bush" 或 "Adams" 擁有超過 1500 的訂單總金額。
轉(zhuǎn)載自:http://www.w3school.com.cn/sql/sql_having.asp

sql 不區(qū)分大小寫

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容