# 本地登錄
mysql -u root -p
# 遠程登錄
mysql -h 110.110.110.110 -u root -p
# 退出
exit; \q; Ctrl+D
mysqladmin -V # 大寫 V
# mysqladmin Ver 8.42 Distrib 6.0.4-alpha...
SELECT USER(); -- 當前連接用戶
SELECT DATABASE(); -- 當前默認數據庫
SHOW DATABASES; -- 列出所有庫
CREATE DATABASE db_name CHARACTER SET utf8mb4; -- 創建庫 (指定字符集)
USE db_name; -- 切換庫
DROP DATABASE db_name; -- 刪除庫 (慎用!)
SHOW TABLES; -- 列出當前庫所有表
DESC table_name; -- 查看表結構 (字段、類型、鍵、默認值)
DESC table_name column_name; -- 查看單個字段詳情
SHOW CREATE TABLE table_name; -- 完整建表語句 (含索引、引擎、字符集)
-- 創建表
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
age INT,
gender CHAR(4),
address VARCHAR(50),
phone VARCHAR(11)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 修改表結構
ALTER TABLE student ADD COLUMN education VARCHAR(6); -- 添加列
ALTER TABLE student MODIFY gender CHAR(10); -- 修改列類型
ALTER TABLE student DROP COLUMN address; -- 刪除列 (用 DROP COLUMN)
ALTER TABLE student RENAME TO students; -- 重命名表
-- 刪除表
TRUNCATE TABLE student; -- 清空表 (保留結構、重置自增、不可回滾、極快)
DROP TABLE student; -- 刪除表結構及數據
INSERT INTO student (name, age, gender, phone, education)
VALUES ('A', 22, '男', '123456', '小學'),
('B', 21, '男', '119', '中學'),
('C', 23, '男', '110', '高中'),
('D', 18, '女', '114', '大學');
-- 中文亂碼時用 N 前綴 (隱式 Unicode) 或確保連接/表字符集為 utf8mb4
INSERT INTO student (name) VALUES (N'中文');
-- 將以 11 開頭電話的學歷改為大專
UPDATE student SET education='大專' WHERE phone LIKE '11%';
-- 刪除姓 C 的男生
DELETE FROM student WHERE name LIKE 'C%' AND gender='男';
-- 基礎查詢
SELECT name, id FROM student WHERE age < 22 AND education='大專';
-- 排序
SELECT name, gender, age FROM student ORDER BY age DESC;
-- 分組聚合
SELECT gender, AVG(age) AS avg_age FROM student GROUP BY gender;
-- 分頁 (MySQL/PostgreSQL/SQLite)
SELECT * FROM student LIMIT 10 OFFSET 20; -- 第 3 頁,每頁 10 條
-- SQL Server: SELECT TOP 10 * FROM ... (不通用)
-- 跨庫查詢 (當前在 db1,查 db2.table)
SELECT * FROM db2.table_name;
| 函數 | 含義 |
|---|---|
| AVG(col) | 平均值 |
| SUM(col) | 求和 |
| MAX(col) | 最大值 |
| MIN(col) | 最小值 |
| COUNT(col) | 非 NULL 行數 |
| COUNT(*) | 總行數 (含 NULL) |
-- 查看所有用戶
SELECT User, Host, Password FROM mysql.user;
-- 創建用戶 (5.7+)
CREATE USER 'test'@'localhost' IDENTIFIED BY 'abc';
-- 授權
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'test'@'localhost' IDENTIFIED BY 'abc';
FLUSH PRIVILEGES;
-- 刪除用戶
DROP USER 'test'@'localhost'; -- 5.7+
-- DELETE FROM mysql.user WHERE User='test' AND Host='localhost'; FLUSH PRIVILEGES; -- 5.6
-- 修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass'; -- 5.7+
-- mysqladmin -u root -p password "newpass"
-- 1. 修改配置文件 /etc/mysql/my.cnf (Linux) 或 my.ini (Windows)
# bind-address = 127.0.0.1 <-- 註釋掉或改為 0.0.0.0
-- 2. 重啟服務
-- 3. 授權遠程用戶
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;
-- 4. 防火牆放行 3306
mysqladmin -u root -p password "新密碼"
# 提示輸入舊密碼
MySQL 基礎命令涵蓋:**連接登錄 → 庫表結構 DDL → 數據增刪改查 DML → 聚合函數 → 用戶權限 DCL → 遠程配置**。熟練掌握這些命令,配合 `DESC`、`EXPLAIN`、`SHOW CREATE TABLE` 觀察結構與計劃,是 DBA/開發必備基本功。**注意:生產環境所有 DDL/DCL 操作需審批、備份、驗證。**