所有工具
免費

一份可搜尋、可列印的 MySQL 參考——查詢、聯結、索引、函式、資料類型和管理指令。免費。

查詢

10
SELECT * FROM users;
選取所有欄與列
SELECT id, name FROM users;
選取特定欄
SELECT DISTINCT city FROM users;
僅唯一值
WHERE age > 18 AND active = 1
依條件篩選列
WHERE name LIKE 'A%'
樣式比對(% = 任意字元)
WHERE id IN (1, 2, 3)
比對集合中的任一值
WHERE age BETWEEN 18 AND 30
含端點的範圍篩選
ORDER BY created_at DESC
降冪排序
LIMIT 10 OFFSET 20
結果分頁
WHERE email IS NULL
比對 null 值

JOIN 連接

8
INNER JOIN orders ON orders.user_id = users.id
兩表皆符合的列
LEFT JOIN orders ON ...
所有左表列加符合項
RIGHT JOIN orders ON ...
所有右表列加符合項
CROSS JOIN colors
笛卡兒積
SELF JOIN: FROM emp e JOIN emp m ON e.mgr = m.id
資料表自我連接
USING (user_id)
依同名欄連接
UNION / UNION ALL
合併結果集
SELECT u.*, o.total FROM users u JOIN orders o
為資料表設別名以利閱讀

彙總

9
COUNT(*)
計算列數
SUM(amount)
數值欄的總和
AVG(price)
平均值
MIN(price), MAX(price)
最小與最大
GROUP BY country
將列分組以彙總
HAVING COUNT(*) > 5
對彙總群組篩選
GROUP_CONCAT(name)
串接分組值
COUNT(DISTINCT city)
計算唯一值
ROW_NUMBER() OVER (ORDER BY id)
視窗函式排名

修改資料

8
INSERT INTO users (name) VALUES ('Sam');
插入單一列
INSERT INTO users (name) VALUES ('A'),('B');
插入多列
UPDATE users SET active = 1 WHERE id = 5;
更新符合的列
DELETE FROM users WHERE id = 5;
刪除符合的列
TRUNCATE TABLE logs;
快速移除所有列
INSERT ... ON DUPLICATE KEY UPDATE
依唯一鍵 upsert
REPLACE INTO users ...
衝突時刪除再插入
INSERT IGNORE INTO ...
略過會出錯的列

結構描述/DDL

9
CREATE TABLE users (id INT PRIMARY KEY);
建立新資料表
AUTO_INCREMENT
自動編號欄
ALTER TABLE users ADD COLUMN age INT;
新增欄
ALTER TABLE users DROP COLUMN age;
移除欄
ALTER TABLE users MODIFY name VARCHAR(100);
變更欄型別
DROP TABLE IF EXISTS users;
刪除資料表
FOREIGN KEY (user_id) REFERENCES users(id)
參照另一資料表
ON DELETE CASCADE
串聯刪除子項
CREATE TABLE t2 LIKE t1;
複製資料表結構

索引與鍵

8
PRIMARY KEY (id)
唯一列識別碼
UNIQUE (email)
強制唯一值
CREATE INDEX idx_name ON users (name);
加速欄上的查找
CREATE INDEX idx_ab ON t (a, b);
複合(多欄)索引
DROP INDEX idx_name ON users;
移除索引
FULLTEXT (body)
全文搜尋索引
EXPLAIN SELECT ...;
顯示查詢計畫
SHOW INDEX FROM users;
列出資料表上的索引

資料型別

9
INT, BIGINT, TINYINT
依大小的整數型別
DECIMAL(10, 2)
精確的定點數
VARCHAR(255)
可變長度字串
TEXT, LONGTEXT
大型文字區塊
DATE, DATETIME, TIMESTAMP
日期與時間型別
BOOLEAN (TINYINT(1))
true/false 以 0/1 儲存
JSON
原生 JSON 文件欄
ENUM('a', 'b')
固定值集合中的其一
UNSIGNED
非負數值修飾子

Type sizes & limits

20
TINYINT
1 byte: -128..127 (0..255 UNSIGNED)
SMALLINT
2 bytes: -32,768..32,767 (0..65,535)
MEDIUMINT
3 bytes: -8.39M..8.39M (0..16.78M)
INT
4 bytes: -2.15B..2.15B (0..4.29B)
BIGINT
8 bytes: ±9.22×10^18 (0..1.84×10^19)
DECIMAL(M, D)
Exact: M up to 65 digits, D up to 30
FLOAT / DOUBLE
4 / 8 bytes approximate floating point
CHAR(M)
Fixed length, 0..255 characters
VARCHAR(M)
0..65,535 bytes (shared 64KB row limit)
TINYTEXT
Up to 255 bytes (~255 chars)
TEXT
Up to 65,535 bytes (64 KB)
MEDIUMTEXT
Up to 16,777,215 bytes (16 MB)
LONGTEXT
Up to 4,294,967,295 bytes (4 GB)
BLOB types
TINY/—/MEDIUM/LONG: 255B..4GB (binary)
JSON
Stored as LONGBLOB, up to ~4 GB
ENUM / SET
ENUM: 65,535 members; SET: 64 members
DATE
1000-01-01 to 9999-12-31 (3 bytes)
DATETIME
1000 to 9999, microseconds (5–8 bytes)
TIMESTAMP
1970-01-01 to 2038-01-19 UTC (4 bytes)
TIME / YEAR
±838:59:59 / 1901..2155

函式

9
NOW(), CURDATE()
目前日期時間/日期
DATE_FORMAT(d, '%Y-%m-%d')
格式化日期
DATEDIFF(a, b)
兩日期間的天數
CONCAT(a, ' ', b)
串接字串
COALESCE(a, b, 'n/a')
第一個非 null 值
IFNULL(x, 0)
以預設值取代 null
CASE WHEN x > 0 THEN '+' ELSE '-' END
條件運算式
CAST(x AS CHAR)
轉換值的型別
ROUND(x, 2)
四捨五入至小數位

交易與管理

9
START TRANSACTION;
開始交易
COMMIT;
提交交易
ROLLBACK;
復原交易
SAVEPOINT sp1;
設定回復點
SHOW TABLES;
列出資料庫中的資料表
DESCRIBE users;
顯示資料表結構
SHOW PROCESSLIST;
列出執行中的連線
GRANT ALL ON db.* TO 'u'@'%';
授予使用者權限
mysqldump -u root db > db.sql
備份資料庫(CLI)

沒有條目符合「:q」。


需要協助?
使用此工具時遇到問題?請告訴我們的團隊。
回報問題

將此免費工具新增到你自己的網站 — 複製並貼上下面的程式碼。