数据库与表结构查看
| 操作 | SQL 语句 |
| 显示所有数据库 | SHOW DATABASES; |
| 切换数据库 | USE database_name; |
| 显示当前库所有表 | SHOW TABLES; |
| 显示表结构 | DESC table_name; 或 SHOW COLUMNS FROM table_name; |
| 显示建表语句 | SHOW CREATE TABLE table_name; |
表结构修改 (ALTER TABLE)
| 操作 | SQL 语句 |
| 重命名表 | ALTER TABLE old_name RENAME new_name; |
| 添加列 | ALTER TABLE table_name ADD COLUMN col_name col_definition [FIRST|AFTER col]; |
| 删除列 | ALTER TABLE table_name DROP COLUMN col_name; |
| 修改列定义 | ALTER TABLE table_name CHANGE old_col new_col new_definition; |
| 修改列类型/属性 | ALTER TABLE table_name MODIFY col_name new_definition; |
| 添加普通索引 | ALTER TABLE table_name ADD INDEX idx_name (col1, col2); |
| 添加唯一索引 | ALTER TABLE table_name ADD UNIQUE INDEX uk_name (col); |
| 添加主键 | ALTER TABLE table_name ADD PRIMARY KEY (col); |
| 删除索引 | ALTER TABLE table_name DROP INDEX idx_name; |
数据增删改查 (DML)
| 操作 | SQL 语句 |
| 插入单行 | INSERT INTO table_name (col1, col2) VALUES ('val1', 123); |
| 插入多行 | INSERT INTO table_name (col1, col2) VALUES ('a',1), ('b',2), ('c',3); |
| 更新数据 | UPDATE table_name SET col1='new' WHERE col2=100; |
| 删除数据 | DELETE FROM table_name WHERE condition; |
| 清空表 | TRUNCATE TABLE table_name; (重置自增 ID,速度快) |
数据库/表删除 (DDL)
| 操作 | SQL 语句 |
| 删除表 | DROP TABLE table_name; |
| 删除数据库 | DROP DATABASE database_name; |
创建表最佳实践模板
CREATE TABLE `users` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`username` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用户名',
`email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '邮箱',
`password_hash` CHAR(60) NOT NULL DEFAULT '' COMMENT 'bcrypt哈希',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
UNIQUE KEY `uk_email` (`email`),
KEY `idx_created` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
关键点
- ENGINE=InnoDB:支持事务、行锁、外键,生产首选。
- CHARSET=utf8mb4:完整支持 Emoji 等 4 字节字符。
- COLLATE=utf8mb4_unicode_ci:Unicode 排序规则,准确性高。
- 显式 DEFAULT:避免 NULL 导致的索引失效与逻辑陷阱。
- 注释:每列、每表加 COMMENT,利于维护。
PHP 执行建议
- 使用 PDO 或 mysqli 预处理语句(Prepared Statements),防 SQL 注入。
- 批量插入用事务包裹,或单条大 SQL (
INSERT ... VALUES (),(),())。
SELECT 避免 *,显式列出所需列。
- 大表
ALTER TABLE 会锁表,生产环境用 pt-online-schema-change 或 gh-ost 在线变更。