DDL创建数据库

-- 直接创建数据库
 CREATE DATABASE 数据库名;
 -- 判断是否存在并创建数据库
 CREATE DATABASE IF NOT EXISTS 数据库名;
 -- 创建数据库并指定字符集
 CREATE DATABASE 数据库名 character set 字符集;

DDL查看数据库

-- 查看所有数据库
 SHOW DATABASES;
 -- 查看某个数据库的定义信息
 SHOW CREATE DATABASE 数据库名;

DDL修改和删除数据库

-- 修改数据库字符集
 ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
 -- 删除数据库
 DROP DATABASE 数据库名;

DDL使用数据库

-- 查看正在使用的数据库
 SELECT DATABASE();
 -- 使用/切换数据库
 USE 数据库名;

DDL创建表

CREATE TABLE 表名 (
     字段名1 字段类型1, 
     字段名2 字段类型2
 );

注意:

  1. 最后一个字段不加逗号
  2. 创建表的前提是先使用某个数据库

DDL查看表

 -- 查看某个数据库中的所有表
 SHOW TABLES;
 -- 查看表结构
 DESC 表名;
 -- 查看创建表的SQL语句
 SHOW CREATE TABLE 表名;

DDL删除表

 -- 创建一个表结构相同的表
 CREATE TABLE 表名 LIKE 其他表;
 -- 直接删除表
 DROP TABLE 表名;
 -- 判断表是否存在并删除表
 DROP TABLE IF EXISTS 表名;
 -- 删除并重建表
 TRUNCATE TABLE 表名;

DDL修改表结构

 -- 添加表列
 ALTER TABLE 表名 ADD 字段名/列名 类型;
 -- 修改列类型
 ALTER TABLE 表名 MODIFY 字段名 新的类型;
 -- 修改列名
 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型;
 -- 删除列
 ALTER TABLE 表名 DROP 字段名;
 -- 修改表名
 RENAME TABLE 旧表名 TO 新表名;
 -- 修改字符集
 ALTER TABLE 表名 CHARACTER SET 字符集;

DDL定义约束

主键约束

主键作用

用来唯一标识一条记录

创建主键
 -- 创建表时添加主键
 字段名 字段类型 PRIMARY KEY
 -- 在已有表中添加主键
 ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

注意:

  1. 主键必须包含唯一的值
  2. 主键列不能包含NULL值
主键自增
 字段名 字段类型 PRIMARY KEY AUTO_INCREMENT

注意:

  1. AUTO_INCREMENT 表示自动增长(字段类型必须是整数类型)
  2. DELETE 删除表中的数据,但不重置AUTO_INCREMENT的值
  3. TRUNCATE 摧毁表,重建表,AUTO_INCREMENT重置为1

唯一约束

唯一约束的作用

在这张表中这个字段的值不能重复

创建唯一约束
 -- 创建表时添加唯一约束
 字段名 字段类型 UNIQUE
 -- 在已有表中添加唯一约束
 ALTER TABLE 表名 ADD UNIQUE(字段名);

注意:

UNIQUE 多个null不算重复

非空约束

非空约束的作用

这个字段必须设置值,不能是NULL

创建非空约束
 -- 创建表时添加非空约束
 字段名 字段类型 NOT NULL
 -- 在已有表中添加非空约束
 ALTER TABLE 表名 MODIFY 列名 字段类型 NOT NULL;

注意:

主键约束和唯一约束并且非空的区别:

  1. 主键约束可以实现主键自增
  2. 唯一约束并且非空不能实现主键自增

默认值

默认值的作用

往表中添加数据时,如果不指定这个字段的数据,就使用默认值

创建默认值
 -- 创建表时添加默认值
 字段名 字段类型 DEFAULT 默认值
 -- 在已有表中添加默认值
 ALTER TABLE 表名 MODIFY 列名 字段类型 DEFAULT 默认值;
插入默认值
 INSERT INTO 表名(test) VALUES(DEFAULT);
 INSERT INTO 表名(name) VALUES('张三');

注意:

  1. 插入数据时,不选择向有默认值的列插入数据,会自动填入默认值,非空约束不报错
  2. 插入数据时,向有默认值的列插入数据,使用DEFAULT表示默认值,填NULL不会自动填入默认值,非空约束报错

外键约束

外键约束的作用

维护表之间的关系

创建外键约束
 -- 创建表时添加外键约束
 字段名 字段类型,
 CONSTRAINT 外键约束名称 FOREIGN KEY(当前表中的列名) REFERENCES 被引用表名(被引用表的列名);
 -- 在已有表中添加外键约束
 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(当前表中的列名) REFERENCES 被引用表名(被引用表的列名);

注意:

  1. CONSTRAINT 外键约束名称 可以不写
  2. mysql会自动生成外键约束名称
外键的级联
级联概念

在修改和删除主表的主键时,同时更新或删除从表的外键值,称为级联操作

ON UPDATE CASCADE -- 级联更新,主键发生更新时,外键也会更新

ON DELETE CASCADE -- 级联删除,主键发生删除时,外键也会删除

创建级联
 -- 创建表时添加外键级联
 CONSTRAINT 外键约束名称 FOREIGN KEY(当前表中的列名) REFERENCES 被引用表名(被引用表的列名) ON UPDATE CASCADE ON DELETE CASCADE;
 -- 在已有表中添加外键级联
 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(当前表中的列名) REFERENCES 被引用表名(被引用表的列名);

注意:

在已有表中添加外键级联,如果已有外键需要先将外键删除

DDL删除约束

删除主键约束

 ALTER TABLE 表名 DROP PRIMARY KEY;

删除唯一约束

 ALTER TABLE 表名 DROP INDEX 索引名

删除非空约束

 ALTER TABLE 表名 MODIFY 列名 字段类型;

注意:

删除非空约束只需修改列属性即可

删除默认值

 ALTER TABLE 表名 MODIFY 列名 字段类型;

注意:

删除默认值只需修改列属性即可

删除外键

 ALTER TABLE 表名 DROP FOREIGN KEY 外键名;