| 操作 | 語句範例 |
|---|---|
| 建立資料庫 | CREATE DATABASE db_name; |
| 刪除資料庫 | DROP DATABASE db_name; |
| 建立資料表 | CREATE TABLE t(col1 TYPE1 [NOT NULL] [PRIMARY KEY], col2 TYPE2...); |
| 依現有表建表 | CREATE TABLE t_new LIKE t_old; 或 CREATE TABLE t_new AS SELECT col1,col2 FROM t_old; |
| 刪除資料表 | DROP TABLE t_name; |
| 新增欄位 | ALTER TABLE t ADD COLUMN col TYPE;(不可刪除欄位,型別通常不可變) |
| 主鍵增刪 | ALTER TABLE t ADD PRIMARY KEY(col); / DROP PRIMARY KEY; |
| 索引建立/刪除 | CREATE [UNIQUE] INDEX idx ON t(col...); / DROP INDEX idx ON t; |
| 視圖建立/刪除 | CREATE VIEW v AS SELECT ...; / DROP VIEW v; |
SELECT * FROM t WHERE 條件;
INSERT INTO t(col1,col2) VALUES(val1,val2);
DELETE FROM t WHERE 條件;
UPDATE t SET col1=val1 WHERE 條件;
SELECT * FROM t WHERE col1 LIKE '%val%';
SELECT * FROM t ORDER BY col1, col2 [DESC];
SELECT COUNT(*) AS total FROM t;
SELECT SUM(col1) AS sumv FROM t;
SELECT AVG(col1) AS avgv FROM t;
SELECT MAX(col1) AS maxv FROM t;
SELECT MIN(col1) AS minv FROM t;
UNION:合併結果並去重;UNION ALL 保留重複EXCEPT(MySQL 不支援,用 NOT IN 或 LEFT JOIN ... IS NULL 替代)INTERSECT(MySQL 不支援,用 INNER JOIN 替代)-- LEFT JOIN
SELECT a.*, b.* FROM a LEFT JOIN b ON a.id = b.a_id;
-- RIGHT JOIN
SELECT a.*, b.* FROM a RIGHT JOIN b ON a.id = b.a_id;
-- FULL JOIN(MySQL 不支援,用 UNION 模擬)
SELECT col, COUNT(*) FROM t GROUP BY col HAVING COUNT(*) > 1;
SELECT * FROM t LIMIT offset, row_count;SELECT * FROM t ORDER BY RAND() LIMIT 10;DELETE FROM t WHERE id NOT IN (SELECT MAX(id) FROM t GROUP BY col1,col2...);WHERE 1=1 便於程式拼接條件DBCC SHRINKDATABASE、DBCC SHRINKFILE(SQL Server 語法,MySQL 需用 OPTIMIZE TABLE)SHOW DATABASES;
SHOW TABLES;
SHOW COLUMNS FROM t;
SHOW INDEX FROM t;
SHOW CREATE TABLE t;
SHOW PROCESSLIST;
SHOW VARIABLES LIKE '...';
SET NAMES utf8;
更多進階用法(觸發器、存儲過程、分區、鎖機制等)請參考官方文件。