首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 命令行 SQL 執行規則全解析:分號結束、大小寫不敏感、註釋、換行的標準化用法

     編輯:MySQL 資料庫相關知識

核心執行規則

規則 1:語句終結符 —— 分號或 \G


-- 標準結束
SELECT * FROM users;

-- 垂直顯示結果(適合寬表)
SELECT * FROM users \G

-- 錯誤示範:忘記分號
mysql> SELECT * FROM users
    ->  -- 進入續行模式,等待分號
    -> ;
  • 分號 (;):默認語句分隔符,必須輸入
  • \G:垂直格式輸出結果,每行一列,適合列多、值長的表
  • 修改分隔符:DELIMITER // ... DELIMITER ;(存儲過程、觸發器定義時必需)

規則 2:關鍵字大小寫不敏感


-- 以下完全等價
SELECT * FROM users;
select * from users;
SeLeCt * FrOm UsErS;
Select * From Users;
  • SQL 保留字(SELECT、FROM、WHERE、JOIN 等)不區分大小寫
  • 最佳實踐:關鍵字**大寫**,表名/列名**小寫**,字符串字面量**原樣**
  • 例外:表名/列名在 Linux 下**區分大小寫**(取決於 lower_case_table_names),Windows 不區分

規則 3:自由空白與換行


-- 單行
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;
  • 空格、Tab、換行符在語句中任意位置合法(字符串字面量內除外)
  • 關鍵字**不能**被空白打斷:SEL ECT ❌
  • 推薦風格:每個子句換行、縮進 4 空格、條件對齊

規則 4:註釋語法


-- 單行註釋:雙連字符 + 空格
SELECT * FROM users; -- 這是註釋
# 這也是單行註釋 (MySQL 特有)

-- 多行註釋:C 風格
/* 
  這是多行註釋
  可以跨越多行
*/
SELECT * FROM users;

/* 內聯註釋 */
SELECT id, /* 這裡是註釋 */ name FROM users;
  • -- 要求雙連字符**後跟空格**(標準 SQL 規範)
  • # 為 MySQL 擴展單行註釋
  • 多行註釋**不支持嵌套**:/* /* 內層 */ 外層 */ 會在第一個 */ 結束

進階交互技巧

1. 編輯器模式 \e


mysql> \e
-- 打開 $EDITOR (vi/nano/vim) 編寫複雜語句
-- 保存退出後自動在 mysql> 提示符執行

2. 瀏覽器模式 \P / \n


mysql> \P less -S  -- 設置分頁器,-S 截斷長行
mysql> SELECT * FROM wide_table;
-- 進入 less 瀏覽,q 退出

mysql> \n  -- 取消分頁器

3. 保存/加載歷史


-- 保存歷史到文件
mysql> \s history.sql

-- 從文件執行
mysql> \. history.sql
-- 或 source history.sql

4. 系統命令 \!


mysql> \! ls -la /var/lib/mysql/
mysql> \! df -h

腳本模式 vs 交互模式差異

特性交互模式 (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,仔細核對
  • 表名大小寫不匹配:Linux 下 SELECT * FROM Users 找不到 users 表
  • 在註釋中包含分號:-- test; SELECT 1 → 註釋結束,SELECT 1 被執行

專業級 SQL 格式化規範(團隊統一推薦)


-- 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 命令行規則簡單但細節決定效率:

  1. 分號結束,\G 垂直顯示,DELIMITER 定義複雜對象
  2. 關鍵字大寫,標識符小寫,Linux 區分表名大小寫
  3. 隨意換行縮進,打造可讀 SQL,關鍵字不拆分
  4. 註釋用 -- 或 /* */,注意 -- 後需空格
  5. 善用 \e、\P、\.、\! 提升交互體驗

養成規範的 SQL 編寫習慣,不僅減少語法錯誤,更利於代碼評審、版本對比、故障複盤,是專業 DBA 與開發的基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved