Skip to content

库表与 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;

批量写入可用 多值 INSERTLOAD 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 走 变更评审与备份