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
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9kEROdXWE1ENrpWT6VkMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0UzMxQjM1UTM4ADOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
以字母順序顯示公司名稱(Company),并以數字順序顯示順序号(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
執行個體 3
以逆字母順序顯示公司名稱:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
Group By
“Group By”從字面意義上了解就是根據“By”指定的規則對資料進行分組,所謂的分組就是将一個“資料集”劃分成若幹個“小區域”,然後針對若幹個“小區域”進行資料處理。
簡單Group By
示例1
select 類别, sum(數量) as 數量之和
from A
group by 類别
傳回結果如下表,實際上就是分類彙總。
Group By 和 Order By
示例2
select 類别, sum(數量) AS 數量之和
from A
group by 類别
order by sum(數量) desc
傳回結果如下表
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” 表:
現在,我們希望查找訂單總金額少于 2000 的客戶。
我們使用如下 SQL 語句:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000
結果為:
現在我們希望查找客戶 “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 join
join 用于把來自兩個或多個表的行結合起來。
下圖展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相關的 7 種用法。
主鍵(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(唯一限制的鍵)。
請注意,“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