結構化查詢語言 (Structured Query Language),關聯式資料庫標準語言。核心特性:
SELECT [DISTINCT] 欄位清單
FROM 資料表
[WHERE 條件]
[ORDER BY 欄位 [ASC|DESC]]
-- 所有作者電話
SELECT phone FROM authors;
-- 指定欄位
SELECT au_fname, au_lname, phone FROM authors;
-- 所有欄位
SELECT * FROM authors;
-- 條件篩選
SELECT phone FROM authors WHERE au_lname = 'Ringer';
-- 邏輯運算子
SELECT * FROM authors WHERE state = 'CA' AND city = 'Oakland';
SELECT * FROM authors WHERE state = 'CA' OR state = 'NY';
SELECT * FROM authors WHERE NOT state = 'CA';
-- 別名
SELECT au_lname AS '姓氏', au_fname AS '名字' FROM authors;
-- 算術運算 (不改變表內資料)
SELECT price AS '原價', price * 1.1 AS '漲價10%' FROM titles;
-- 字串串接
SELECT au_fname + ' ' + au_lname AS '全名' FROM authors;
SELECT au_lname FROM authors ORDER BY au_lname; -- 遞增 (預設)
SELECT au_lname FROM authors ORDER BY au_lname DESC; -- 遞減
SELECT au_lname, au_fname FROM authors ORDER BY au_lname, au_fname;
效能提醒:大量資料排序耗資源,僅在必要時使用。
SELECT DISTINCT au_lname FROM authors WHERE au_lname = 'Ringer'; -- 僅 1 列
同樣增加排序/雜湊開銷,按需使用。
CREATE TABLE GuestBook (
Visitor VARCHAR(40), -- 變長字串,最長 40 字元
Comments TEXT, -- 大型文字 (超過 8000 字元)
EntryDate DATETIME -- 日期時間
);
| 類別 | 型別 | 說明 |
|---|---|---|
| 字串 | VARCHAR(n) | 變長 1~8000 字元,實際長度儲存 |
| CHAR(n) | 固定長度,不足補空白 | |
| TEXT / VARCHAR(MAX) | 大型文字 (2^31-1 字元),慎用 | |
| 數值 | INT | -2,147,483,648 ~ 2,147,483,647 (4 位元組) |
| SMALLINT | -32,768 ~ 32,767 (2 位元組) | |
| TINYINT | 0 ~ 255 (1 位元組) | |
| DECIMAL(p,s) / NUMERIC(p,s) | 精確數值,p=總位數, s=小數位數 | |
| 貨幣 | MONEY | -922,337,203,685,477.5808 ~ +922,337,203,685,477.5807 (8 位元組) |
| SMALLMONEY | -214,748.3648 ~ 214,748.3647 (4 位元組) | |
| 邏輯 | BIT | 0/1/NULL,建表時才能加入 |
| 日期時間 | DATETIME | 1753-01-01 ~ 9999-12-31,精度 3.33 ms |
| SMALLDATETIME | 1900-01-01 ~ 2079-06-06,精度 1 分鐘 |
CREATE TABLE CreditCard (
CardNo CHAR(20) NOT NULL, -- 必填
ExpDate DATETIME NOT NULL
);
CREATE TABLE Address (
Country VARCHAR(30) DEFAULT 'USA',
ZipCode VARCHAR(10) DEFAULT '00000'
);
CREATE TABLE Orders (
Amount MONEY DEFAULT 0.00
);
CREATE TABLE Logs (
LogID INT IDENTITY(1,1) PRIMARY KEY, -- 種子 1, 遞增 1
Msg VARCHAR(200),
LogTime DATETIME DEFAULT GETDATE()
);
-- 新增欄位
ALTER TABLE GuestBook ADD Browser VARCHAR(50);
-- 修改欄位型別 (謹慎,資料可能截斷)
ALTER TABLE GuestBook ALTER COLUMN Visitor VARCHAR(60);
-- 刪除欄位
ALTER TABLE GuestBook DROP COLUMN Browser;
-- 刪除整張表
DROP TABLE GuestBook;