net start mysql # Windows 啟動
net stop mysql # Windows 停止
systemctl start mysqld # Linux systemd
systemctl stop mysqld
mysql -u root -p # 本機
mysql -h host -u root -p dbname # 遠端指定庫
SHOW DATABASES;
USE db_name;
SHOW TABLES;
SHOW COLUMNS FROM table_name; -- 或 DESC table_name
SHOW CREATE TABLE table_name;
SHOW CREATE DATABASE db_name;
-- 建表
CREATE TABLE IF NOT EXISTS students (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 增加欄位
ALTER TABLE students ADD COLUMN email VARCHAR(50);
ALTER TABLE students ADD COLUMN phone VARCHAR(20), ADD COLUMN addr VARCHAR(100);
-- 修改欄位型別/名稱
ALTER TABLE students MODIFY id BIGINT UNSIGNED;
ALTER TABLE students CHANGE id stu_id BIGINT UNSIGNED;
-- 重命名表
ALTER TABLE students RENAME AS users;
-- 建立
ALTER TABLE t ADD INDEX idx_name (name);
CREATE INDEX idx_name ON t (name);
CREATE UNIQUE INDEX uk_email ON t (email);
-- 刪除
DROP INDEX idx_name ON t;
ALTER TABLE t DROP INDEX idx_name;
-- 插入
INSERT INTO t (name, age) VALUES ('Tom', 18);
INSERT INTO t (name, age) VALUES ('A',1),('B',2),('C',3);
-- 查詢
SELECT * FROM t WHERE name LIKE 'Tom%';
SELECT * FROM t ORDER BY id DESC LIMIT 10, 20; -- 分頁
-- 更新
UPDATE t SET age = 20 WHERE name = 'Tom';
-- 刪除
DELETE FROM t WHERE age > 60;
TRUNCATE TABLE t; -- 清空並重置自增
# 備份
mysqldump -u root -p db_name > backup.sql
mysqldump -u root -p db_name table1 table2 > tables.sql
# 還原
mysql -u root -p db_name < backup.sql
# 或進入 mysql> SOURCE backup.sql;
CREATE USER 'app'@'%' IDENTIFIED BY 'pass';
GRANT SELECT, INSERT, UPDATE, DELETE ON db_name.* TO 'app'@'%';
FLUSH PRIVILEGES;
SELECT NOW(); -- 當前時間
SELECT USER(); -- 當前用戶
SELECT VERSION(); -- 版本
SELECT DATABASE(); -- 當前庫
EXPLAIN SELECT * FROM t WHERE name = 'Tom';
SHOW PROCESSLIST;
SHOW ENGINE INNODB STATUS\G
<, <=, >=, >, =, BETWEEN, IN, LIKE 'prefix%'
速查表適合離線備份,建議列印貼在工位。生產環境操作前請三思、備份、驗證。