库表与 SQL 实践提要
连接与库管理
bash
mysql -u用户名 -p -h主机 -P端口sql
CREATE DATABASE IF NOT EXISTS db_name
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
DROP DATABASE IF EXISTS db_name;
SHOW DATABASES;
USE db_name;表结构(DDL 提要)
sql
CREATE TABLE users (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_users_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE users ADD COLUMN nickname VARCHAR(64) NULL AFTER email;
DROP TABLE IF EXISTS users;数据操作(DML)
sql
INSERT INTO users (email) VALUES ('a@example.com');
UPDATE users SET nickname = 'nick' WHERE id = 1;
DELETE FROM users WHERE id = 1;批量写入可用 多值 INSERT 或 LOAD DATA(注意权限与安全)。
查询(DQL 提要)
sql
SELECT id, email FROM users WHERE id BETWEEN 1 AND 100 ORDER BY id DESC LIMIT 20 OFFSET 0;WHERE尽量命中索引;ORDER BY与索引顺序一致更易避免 filesort。JOIN明确连接条件,避免笛卡尔积;大表关联注意索引与 驱动表 选择。
小结
复杂 SQL 用 EXPLAIN 看计划;EXPLAIN ANALYZE(8.0.18+)会真实执行语句并采样,适合测试环境,生产慎用。生产变更 DDL 走 变更评审与备份。
