一直都是用MySQL可视化工具,几乎没碰过建库、表等语句了。在京东上线SQL必须在Archery平台通过,当前DB库字符集使用GB2312导致很多SQL无法通过Archery审计。但SQL知识实属遗忘了不少。趁机补一补SQL吧。

库语句

建库

-- 数据库配置文件default-character-set是utf8_mb3,则会导致创建的表是utf8mb3。我们无法人为控制,只能建库完毕后执行修改库字符集或者建库前修改MySQL配置
CREATE DATABASE  IF NOT EXISTS `school` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

修改库字符集

-- 指定库的字符集
ALTER DATABASE `school` CHARACTER SET utf8mb4

指定库排序规则

-- 指定库的排序规则
ALTER DATABASE `school` COLLATE 'utf8mb4_bin'

当前库状态的建表语句

-- 查看建表语句
SHOW CREATE DATABASE `school`

删除库

-- 删除数据库
DROP DATABASE `school表名错误就无法删除了`;

Navicat编辑数据库时执行的SQL

-- 查看库的字符集,这是Navicat点击"编辑数据库"执行的SQL。直接执行就行,没有参数
SELECT @@character_set_database, @@collation_database

表语句

建表

默认值、默认时间、字段字符集、字段排序方式、索引、联合索引、注释、

添加字段

修改表

修改字段

修改表字符集、排序规则

截断表

删除表

添加索引

插入数据

INSERT INTO aa_seller(`id`, `order_id`) VALUE (10000, 10000);

INSERT INTO aa_seller(`id`, `order_id`) VALUES (10001, 10001);

批量插入数据

INSERT INTO aa_seller(`id`, `order_id`) VALUES (10003, 10003),(10004, 10004);

插入数据如果存在就更新 ON DUPLICATE KEY UPDATE

INSERT INTO aa_seller(`id`, `order_id`) VALUE (10000, 10000) ON DUPLICATE KEY UPDATE `order_id` = `order_id` + 1;

INSERT INTO aa_seller(`id`, `order_id`) VALUE (10000, 10000),(10001,10001) ON DUPLICATE KEY UPDATE `order_id` = `order_id` + 1;