天天看點

SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

ORDER BY 語句

ORDER BY 語句用于根據指定的列對結果集進行排序。

ORDER BY 語句預設按照升序對記錄進行排序

如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。

對如下表排序

Company OrderNumber
IBM 3532
W3School 2356
Apple 4698
W3School 6953

以字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company
           
SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

以字母順序顯示公司名稱(Company),并以數字順序顯示順序号(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
           
SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

執行個體 3

以逆字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
           
SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

Group By

“Group By”從字面意義上了解就是根據“By”指定的規則對資料進行分組,所謂的分組就是将一個“資料集”劃分成若幹個“小區域”,然後針對若幹個“小區域”進行資料處理。

SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

簡單Group By

示例1

select 類别, sum(數量) as 數量之和

from A

group by 類别

傳回結果如下表,實際上就是分類彙總。

SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

Group By 和 Order By

示例2

select 類别, sum(數量) AS 數量之和

from A

group by 類别

order by sum(數量) desc

傳回結果如下表

SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

Group By與聚合函數

在示例3中提到group by語句中select指定的字段必須是“分組依據字段”,其他字段若想出現在select中則必須包含在聚合函數中,常見的聚合函數如下表:

函數 作用 支援性

sum(列名) 求和     

max(列名) 最大值     

min(列名) 最小值     

avg(列名) 平均值     

first(列名) 第一條記錄 僅Access支援

last(列名) 最後一條記錄 僅Access支援

count(列名) 統計記錄數 注意和count()的差別

示例5:求各組平均值

select 類别, avg(數量) AS 平均值 from A group by 類别;

示例6:求各組記錄數目

select 類别, count() AS 記錄數 from A group by 類别;

示例7:求各組記錄數目

HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與合計函數一起使用。

我們擁有下面這個 “Orders” 表:

SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

現在,我們希望查找訂單總金額少于 2000 的客戶。

我們使用如下 SQL 語句:

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

結果為:

SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

現在我們希望查找客戶 “Bush” 或 “Adams” 擁有超過 1500 的訂單總金額。

我們在 SQL 語句中增加了一個普通的 WHERE 子句:

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500
           

結果為:

SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

SQL join

join 用于把來自兩個或多個表的行結合起來。

下圖展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相關的 7 種用法。

SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

主鍵(PRIMARY KEY)

PRIMARY KEY 限制唯一辨別資料庫表中的每條記錄。

主鍵必須包含唯一的值。

主鍵列不能包含 NULL 值。

每個表都應該有一個主鍵,并且每個表隻能有一個主鍵。

下面的 SQL 在 “Persons” 表建立時在 “P_Id” 列上建立 PRIMARY KEY 限制:

CREATE TABLE Persons
(
	P_Id int NOT NULL,
	LastName varchar(255) NOT NULL,
	FirstName varchar(255),
	Address varchar(255),
	City varchar(255),
	PRIMARY KEY (P_Id)
)
           

外鍵(FOREIGN KEY)

一個表中的 FOREIGN KEY 指向另一個表中的 UNIQUE KEY(唯一限制的鍵)。

SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句
SQL常用語句ORDER BY 語句Group ByHAVING 子句SQL join主鍵(PRIMARY KEY)外鍵(FOREIGN KEY)ALTER TABLE 語句

請注意,“Orders” 表中的 “P_Id” 列指向 “Persons” 表中的 “P_Id” 列。

“Persons” 表中的 “P_Id” 列是 “Persons” 表中的 PRIMARY KEY。

“Orders” 表中的 “P_Id” 列是 “Orders” 表中的 FOREIGN KEY。

FOREIGN KEY 限制用于預防破壞表之間連接配接的行為。

FOREIGN KEY 限制也能防止非法資料插入外鍵列,因為它必須是它指向的那個表中的值之一。

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
           

ALTER TABLE 語句

ALTER TABLE 語句用于在已有的表中添加、删除或修改列。

如需在表中添加列,請使用下面的文法:

ALTER TABLE table_name
ADD column_name datatype
           

如需删除表中的列,請使用下面的文法

ALTER TABLE table_name
DROP COLUMN column_name
           

要改變表中列的資料類型,請使用下面的文法:

ALTER TABLE table_name
ALTER COLUMN column_name datatype
           
sql