本文為 MySQL 5.0 官方參考手冊第三章「快速入門」的中文翻譯版,旨在幫助開發者快速掌握 MySQL 客戶端工具的核心操作,從連接服務器到數據庫對象的創建與管理,提供完整的入門教程。
mysql(又稱「終端監視器」或「監視器」)是一個交互式程序,允許連接 MySQL Server、運行查詢並查看結果。它也支持批處理模式:預先將查詢寫入文件,再由 mysql 執行文件內容。本章將詳細講解這兩種使用方式。
通常需要提供 MySQL 用戶名、密碼;若服務器在遠程主機,還需指定主機名。標準連接命令:
shell> mysql -h host -u user -p Enter password: ********
host 為服務器主機名,user 為賬戶名,******** 為密碼(輸入時不顯示)。
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 25338 to server version: 5.0.19-standard Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
出現 mysql> 提示符表示已就緒可輸入命令。
若在運行 MySQL 服務器的機器上登錄,可省略主機名:
shell> mysql -u user -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 表示 MySQL 服務器守護進程(Unix)或服務(Windows)未運行,需聯系管理員或查閱安裝章節解決。
部分安裝允許本機匿名登錄:shell> mysql。斷開連接可用 QUIT 或 \q,Unix 系統也可用 Control-D。
QUIT 可省略分號)。mysql> SELECT SIN(PI()/4), (4+1)*5; +------------------+---------+ | SIN(PI()/4) | (4+1)*5 | +------------------+---------+ | 0.70710678118655 | 25 | +------------------+---------+
SELECT VERSION(); SELECT NOW();mysql> 變為 -> 表示繼續輸入。\c,提示符恢復為 mysql>。| 提示符 | 含義 |
|---|---|
mysql> | 準備接受新命令 |
-> | 等待多行命令的下一行 |
'> | 等待單引號字符串的下一行 |
"> | 等待雙引號字符串的下一行 |
`> | 等待反引號標識符的下一行 |
/*> | 等待註釋的下一行(MySQL 5.0.6+) |
'> 或 "> 提示符。解決:先輸入閉合引號,再輸入 \c 取消。`> 提示符,同理處理。掌握提示符含義至關重要,否則可能誤以為系統無響應。
查看現有數據庫:SHOW DATABASES;。通常包含 mysql(權限數據)和 test(測試工作區)庫。
切換到 test 庫:USE test(無需分號)。
創建專屬數據庫(需管理員授權):
mysql> GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';
創建數據庫:
mysql> CREATE DATABASE menagerie;
注意: Unix 系統數據庫名區分大小寫,建議統一使用創建時的大小寫。創建後需顯式選擇:USE menagerie;。也可啟動時指定:shell> mysql -h host -u user -p menagerie(密碼勿放命令行避免洩露)。
使用 CREATE TABLE 定義結構。以寵物數據為例:
mysql> CREATE TABLE pet (
name VARCHAR(20), owner VARCHAR(20),
species VARCHAR(20), sex CHAR(1),
birth DATE, death DATE
);
VARCHAR 適合變長字符串(名字、主人、種類)。CHAR(1) 存儲性別('m'/'f')。DATE 存儲出生/死亡日期。為何存生日而非年齡? 年齡隨時間變化需頻繁更新;生日固定,可動態計算年齡,還能實現生日提醒、按相對日期計算年齡等業務價值。驗證表結構:DESCRIBE pet; 顯示字段、類型、是否可空、鍵、默認值等信息。
使用 LOAD DATA 和 INSERT 語句。
批量載入 (LOAD DATA): 將數據保存為文本文件(如 pet.txt),每行一條記錄,字段按建表順序用制表符分隔,缺失值用 \N 表示。
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
Windows 文件換行符為 \r\n 時:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
-> LINES TERMINATED BY '\r\n';
macOS 可能需 LINES TERMINATED BY '\r'。
單條插入 (INSERT):
mysql> INSERT INTO pet
-> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
字符串和日期需加引號,NULL 直接表示缺失值(區別於 LOAD DATA 的 \N)。
對比: 批量載入用 LOAD DATA 效率高;少量數據用 INSERT 靈活。
基礎查詢:SELECT * FROM pet;。條件查詢:SELECT * FROM pet WHERE species='dog';。選擇特定列:SELECT name, birth FROM pet;。排序:SELECT * FROM pet ORDER BY birth;。多表關聯查詢將在後續章節講解。
SHOW DATABASES; - 列出所有數據庫SHOW TABLES; - 列出當前庫所有表DESCRIBE 表名; 或 SHOW COLUMNS FROM 表名; - 顯示表結構SHOW CREATE TABLE 表名; - 顯示建表語句SHOW INDEX FROM 表名; - 顯示索引信息SHOW TABLE STATUS; - 顯示表狀態統計將 SQL 語句保存文件(如 commands.sql),執行:
shell> mysql < commands.sql
或指定數據庫:
shell> mysql -h host -u user -p menagerie < commands.sql
輸出重定向到文件:mysql < commands.sql > output.txt。批處理模式下輸出格式為制表符分隔,非交互式表格。
本節提供豐富實戰案例:
每個示例均包含建表、插數據、查詢語句及結果分析,極具參考價值。
展示複雜業務場景下的 SQL 組織技巧。
簡要介紹 Web 應用中通過 Apache 連接 MySQL 的基本架構,為後續開發章節鋪墊。
mysql --help 查看選項;help 或 \h 獲取命令幫助。本章作為教程,省略了許多細節。如需深入理解,請查閱手冊相關專章。掌握本章內容,您將具備獨立操作 MySQL 完成基礎數據庫開發任務的能力。