-- 標準結束
SELECT * FROM users;
-- 垂直顯示結果(適合寬表)
SELECT * FROM users \G
-- 錯誤示範:忘記分號
mysql> SELECT * FROM users
-> -- 進入續行模式,等待分號
-> ;
DELIMITER // ... DELIMITER ;(存儲過程、觸發器定義時必需)
-- 以下完全等價
SELECT * FROM users;
select * from users;
SeLeCt * FrOm UsErS;
Select * From Users;
lower_case_table_names),Windows 不區分
-- 單行
SELECT id,name FROM users WHERE status=1;
-- 多行(推薦長語句)
SELECT
id,
name,
email
FROM users
WHERE status = 1
AND created_at > '2023-01-01'
ORDER BY id DESC;
-- 縮進對齊(可讀性最佳)
SELECT
u.id,
u.name,
o.order_no
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.status = 1;
SEL ECT ❌
-- 單行註釋:雙連字符 + 空格
SELECT * FROM users; -- 這是註釋
# 這也是單行註釋 (MySQL 特有)
-- 多行註釋:C 風格
/*
這是多行註釋
可以跨越多行
*/
SELECT * FROM users;
/* 內聯註釋 */
SELECT id, /* 這裡是註釋 */ name FROM users;
-- 要求雙連字符**後跟空格**(標準 SQL 規範)# 為 MySQL 擴展單行註釋/* /* 內層 */ 外層 */ 會在第一個 */ 結束\e
mysql> \e
-- 打開 $EDITOR (vi/nano/vim) 編寫複雜語句
-- 保存退出後自動在 mysql> 提示符執行
\P / \n
mysql> \P less -S -- 設置分頁器,-S 截斷長行
mysql> SELECT * FROM wide_table;
-- 進入 less 瀏覽,q 退出
mysql> \n -- 取消分頁器
-- 保存歷史到文件
mysql> \s history.sql
-- 從文件執行
mysql> \. history.sql
-- 或 source history.sql
\!
mysql> \! ls -la /var/lib/mysql/
mysql> \! df -h
| 特性 | 交互模式 (mysql>) | 腳本模式 (mysql < file.sql) |
|---|---|---|
| 提示符 | mysql> / -> | 無 |
| 錯誤處理 | 報錯繼續 | 默認報錯繼續,SET sql_mode=STRICT_ALL_TABLES 可改 |
| 註釋 | 全支持 | 全支持 |
| 分隔符 | ; 或 \G | ; (不可用 \G) |
| 變量 | 會話變量 @var | 同 |
| 結果輸出 | 表格/垂直 | 表格 (可用 -H HTML, -X XML, -t 表格, -b 批處理) |
-> 續行,補分號即可SELECT 'abc" → 進入字符串續行 > ',輸入匹配引號閉合SELEC * FROM → ERROR 1064,仔細核對SELECT * FROM Users 找不到 users 表-- test; SELECT 1 → 註釋結束,SELECT 1 被執行
-- 1. 關鍵字大寫,函數大寫
SELECT COUNT(*) AS total_users FROM users;
-- 2. 列名、表名小寫,反引號包裹
SELECT `id`, `user_name`, `email` FROM `users`;
-- 3. 每個主要子句換行
SELECT
`id`,
`user_name`
FROM `users`
WHERE `status` = 1
AND `created_at` >= '2023-01-01'
ORDER BY `id` DESC
LIMIT 20;
-- 4. JOIN 格式化
SELECT
u.`id`,
u.`user_name`,
o.`order_no`
FROM `users` u
INNER JOIN `orders` o
ON u.`id` = o.`user_id`
WHERE u.`status` = 1;
-- 5. 複雜條件括號分組
WHERE (`status` = 1 AND `type` IN ('A','B'))
OR (`status` = 2 AND `vip_level` > 3)
-- 6. 別名使用 AS,關鍵字不作別名
SELECT `id` AS user_id, `name` AS user_name FROM `users`;
MySQL 命令行規則簡單但細節決定效率:
養成規範的 SQL 編寫習慣,不僅減少語法錯誤,更利於代碼評審、版本對比、故障複盤,是專業 DBA 與開發的基本功。