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

MySQL 基礎操作全攻略:從數據類型到增刪改查與用戶授權

     編輯:MySQL 資料庫相關知識

MySQL 核心基礎操作速查手冊,涵蓋數據類型選擇、庫表管理、數據操縱、用戶授權、備份恢復,適合初學者快速入門與資深開發者查漏補缺。

一、核心數據類型選擇指南

類型存儲範圍/特點適用場景
INT[(M)]4 字節,-21億~21億主鍵 ID、計數器、狀態碼
BIGINT8 字節,極大範圍高併發自增主鍵、時間戳毫秒
DECIMAL(M,D)精確定點數,按字符串存儲金額、價格、比率(禁用 FLOAT/DOUBLE)
VARCHAR(M)變長,1-2 字節長度前綴 + 內容名稱、標題、短文本(M≤255 無額外長度字節)
TEXT / MEDIUMTEXT / LONGTEXT64KB / 16MB / 4GB文章內容、日誌、JSON 文檔
DATE / DATETIME / TIMESTAMP日期 / 日期時間 / 時區感知時間戳TIMESTAMP 自動更新、跨時區應用首選
ENUM / SET枚舉單選 / 集合多選狀態機、標籤系統(值固定少時)
JSON5.7+ 原生類型,二進制存儲半結構化數據、動態屬性、標籤屬性

二、庫表管理核心命令


-- 庫操作
SHOW DATABASES;
CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE db_name;
DROP DATABASE db_name;

-- 表操作
SHOW TABLES;
DESC table_name;          -- 結構
SHOW CREATE TABLE t;      -- 完整建表語句
CREATE TABLE t (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50)) ENGINE=InnoDB;
ALTER TABLE t ADD COLUMN age TINYINT;
DROP TABLE t;

三、數據增刪改查 (CRUD)


-- 插入
INSERT INTO t (name, age) VALUES ('張三', 25);
INSERT INTO t (name, age) VALUES ('李四', 30), ('王五', 28);  -- 批量

-- 查詢
SELECT id, name FROM t WHERE age > 20 ORDER BY id DESC LIMIT 10;
SELECT COUNT(*) FROM t;
SELECT age, COUNT(*) FROM t GROUP BY age;

-- 更新
UPDATE t SET age = 26 WHERE name = '張三';

-- 刪除
DELETE FROM t WHERE name = '張三';
TRUNCATE TABLE t;  -- 快速清空表(重置自增ID、不觸發觸發器)

四、用戶授權體系 (MySQL 5.7+ / 8.0)


-- 8.0 推薦:創建用戶 + 授權分離
CREATE USER 'app_user'@'10.0.%' IDENTIFIED BY 'StrongPass#2024';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'10.0.%';
FLUSH PRIVILEGES;

-- 5.7 兼容:GRANT 隱式創建
GRANT SELECT, INSERT ON mydb.* TO 'app_user'@'10.0.%' IDENTIFIED BY 'StrongPass#2024';

-- 查看權限
SHOW GRANTS FOR 'app_user'@'10.0.%';

-- 撤銷權限
REVOKE DELETE ON mydb.* FROM 'app_user'@'10.0.%';

-- 修改密碼 (8.0)
ALTER USER 'app_user'@'10.0.%' IDENTIFIED BY 'NewStrongPass#2024';

最小權限原則:僅授予必要庫、必要表、必要操作、必要 IP 段。禁用 'user'@'%' (任意主機) 與 GRANT ALL。

五、備份與恢復


# 邏輯備份 (mysqldump)
mysqldump -u root -p --single-transaction --routines --triggers --events mydb > backup.sql
mysqldump -u root -p --all-databases > all.sql

# 恢復
mysql -u root -p mydb < backup.sql
mysql -u root -p < all.sql

# 物理備份 (Percona XtraBackup - 熱備不阻塞)
xtrabackup --backup --target-dir=/backup/full --user=root --password=xxx
xtrabackup --prepare --target-dir=/backup/full
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved