操作小技巧
- 命令未輸入分號直接換行?補上分號再 Enter 即可,支援多行命令。
- 上下鍵調取歷史命令(需支援 readline 的客戶端)。
常用顯示命令
| 操作 | 命令 |
| 列出所有資料庫 | SHOW DATABASES;
| 切換資料庫 | USE db_name;
| 列出當前資料庫所有表 | SHOW TABLES;
| 檢視表結構 | DESCRIBE table_name; 或 SHOW COLUMNS FROM table_name;
| 顯示建表 SQL | SHOW CREATE TABLE table_name;
| 查看表索引 | SHOW INDEX FROM table_name;
| 查看表狀態 | SHOW TABLE STATUS LIKE 'table_name';\G
建庫、建表、刪除
-- 建立資料庫(指定字元集排序)
CREATE DATABASE school DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 刪除資料庫
DROP DATABASE IF EXISTS school;
-- 切換資料庫
USE school;
-- 建立表(範例:教師表)
CREATE TABLE teacher (
id INT(3) UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(10) NOT NULL,
address VARCHAR(50) DEFAULT '深圳',
hire_date DATE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 刪除表
DROP TABLE IF EXISTS teacher;
-- 清空表資料(保留結構、重置自增值)
TRUNCATE TABLE teacher;
資料操作(DML)
-- 插入單筆
INSERT INTO teacher (name, address, hire_date) VALUES ('glchengang', '深圳一中', '1976-10-10');
-- 插入多筆(效能較好)
INSERT INTO teacher (name, address, hire_date) VALUES
('jack', '深圳一中', '1975-12-23'),
('mary', '北京二中', '1980-05-15');
-- 查詢所有
SELECT * FROM teacher;
-- 條件查詢
SELECT name, address FROM teacher WHERE hire_date > '1978-01-01';
-- 更新
UPDATE teacher SET address = '廣州三中' WHERE name = 'jack';
-- 刪除
DELETE FROM teacher WHERE name = 'mary';
進階查詢技巧
- 分頁:
SELECT * FROM teacher LIMIT 10 OFFSET 20;(第 3 頁,每頁 10 筆)。
- 排序:
ORDER BY hire_date DESC。
- 聚合:
SELECT COUNT(*), AVG(YEAR(hire_date)) FROM teacher;。
- 分組:
SELECT address, COUNT(*) FROM teacher GROUP BY address;。
- 連接:
SELECT t.name, c.course_name FROM teacher t JOIN course c ON t.id = c.teacher_id;。
備份與還原
# 備份單一資料庫
mysqldump -u root -p school > school_backup.sql
# 備份所有資料庫
mysqldump -u root -p --all-databases > all_backup.sql
# 還原
mysql -u root -p school < school_backup.sql
權限管理基礎
-- 建立帳號並授權
CREATE USER 'app_user'@'%' IDENTIFIED BY 'strongpass';
GRANT SELECT, INSERT, UPDATE, DELETE ON school.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
-- 撤銷權限
REVOKE DELETE ON school.* FROM 'app_user'@'%';