接續上篇,本文涵蓋資料庫/資料表的增刪改查、實戰建表範例、文本資料批量導入、備份還原等核心技能。所有操作均在 mysql> 提示符下執行,每條命令以分號結尾。
; 回車即可結束命令| 操作 | 命令 | 說明 |
|---|---|---|
| 顯示所有資料庫 | SHOW DATABASES; | 初始僅有 mysql(系統)、test(測試) |
| 切換資料庫 | USE 資料庫名; | 類似 FoxBASE 的 USE |
| 顯示資料表 | SHOW TABLES; | 當前資料庫下的所有表 |
| 檢視表結構 | DESCRIBE 表名; 或 SHOW COLUMNS FROM 表名; | 欄位、類型、Null、Key、Default、Extra |
| 建立資料庫 | CREATE DATABASE 資料庫名; | |
| 建立資料表 | CREATE TABLE 表名 (欄位定義列表); | 需先 USE 目標資料庫 |
| 刪除資料庫 | DROP DATABASE 資料庫名; | 不可逆,謹慎執行 |
| 刪除資料表 | DROP TABLE 表名; | |
| 清空表資料 | DELETE FROM 表名; 或 TRUNCATE TABLE 表名; | TRUNCATE 速度快、重置自增ID、不可回滾 |
| 查詢所有資料 | SELECT * FROM 表名; |
-- 1. 清理並建立資料庫
DROP DATABASE IF EXISTS school;
CREATE DATABASE school;
USE school;
-- 2. 建立教師表
CREATE TABLE teacher (
id INT(3) AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(10) NOT NULL,
address VARCHAR(50) DEFAULT '深圳',
year DATE
);
-- 3. 插入測試資料
INSERT INTO teacher VALUES ('', 'glchengang', '深圳一中', '1976-10-10');
INSERT INTO teacher VALUES ('', 'jack', '深圳一中', '1975-12-23');
-- id 留空/NULL 觸發 AUTO_INCREMENT 自動生成
| 欄位 | 類型 | 約束 | 設計考量 |
|---|---|---|---|
| id | INT(3) | UNSIGNED AUTO_INCREMENT PRIMARY KEY | 主鍵、自增、非負、唯一 |
| name | CHAR(10) | NOT NULL | 固定長度,姓名長度較穩定 |
| address | VARCHAR(50) | DEFAULT '深圳' | 變長、大多在深圳、預設值減少輸入 |
| year | DATE | 標準日期格式 YYYY-MM-DD |
CHAR vs VARCHAR: CHAR 固定長度、存取快、適合長度穩定欄位;VARCHAR 變長、節省空間、適合長度差異大欄位。
school.sql(移除註解)C:\cmd> cd C:\mysql\bin
cmd> mysql -u root -p密碼 < C:\school.sql
成功無輸出,失敗顯示錯誤行號與訊息。
CREATE TABLE 定義順序一致teacher.txt3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
USE school;
LOAD DATA LOCAL INFILE 'teacher.txt' INTO TABLE teacher;
建議: 將文件放在 MySQL bin 目錄下,避免路徑問題。
mysqldump --opt school > school.bak
--opt:啟用快速導出優化組合(含 --add-drop-table, --extended-insert 等)mysql -u root -p school < school.bak