SQL--DDL(创建和修改数据库表结构的语言)
SQL–DDL
-
数据(结构)定义语言DDL(Data Definition Language),是用于创建和修改数据库表结构的语言。 常用的语句:create ,alter,drop,rename
1.数据库表
-
数据库基本存储单位(table)
表的最简单形式是由行和列组成,分别都包含着数据 每个表都有一个表头和表体 表头定义表名和列名 表中的行被看作是文件中的记录 表中的列被看作是这些记录的字段
-
记录—— 一行信息
一行数据是指一条完整的记录
-
字段—— 存储哪个信息
表里的一列,用于保存每条记录的特定信息 数据表的一列包含了特定字段的全部信息
2.设计数据库表
设计表,一个表中存储一列信息、
在创建前,需要不确定表的下列特征:
-
学生信息表(学生基本信息) 表中字段 数据类型,长度 约束(添加数据限制)
3.设计表–数据类型
-
char(n) 长度为n个字符 定长 4 即使存储了1个字符也占4个长度 varchar(n) 最大长度为n 可变 10 实际存储了4个字符,长度就是4 date 年月日 日期 datetime 年月日 时分秒 时间
int float(5,2) 3位整数,2位小数 总长是5位 double(5,2) blob 大文本 存储图片,新闻 (目前了解)
4.表中的约束
-
主键约束 PRIMARY KEY 不能为空,不能重复, 一个表中只能有一个主键约束 不能为空约束 NOT NULL 一个表中可以有多个 唯一约束 UNION 一个表中可以有多个 检查约束 设置条件 例如age>=18 外键约束 多表关联时使用 主键自动增长 AUTO_INCREMENT 默认值 DEFAULT default_value 字段注释 comment ‘注释’
5.创建表语法
-- 先创建一个基本的表 不涉及约束 -- 学生基本信息表 学号,姓名,性别,生日,身高,电话,登记时间 -- 用户表,角色,... sys_user sys_role hr_ cw CREATE TABLE t_student( num INT, NAME VARCHAR(4), sex CHAR(1), birthday DATE, height FLOAT(4,1), phone CHAR(11), register_time DATETIME )
6.修改表结构
-- 复制表 例如对某张表进行操作时,备份数据 CREATE TABLE t_teachers LIKE t_student ; -- 修改表名 旧表名 新表名 RENAME TABLE t_teachers TO t_School ; -- 删除表 DROP TABLE t_School ; -- 添加主键约束 ALTER TABLE t_student ADD PRIMARY KEY(num); -- 删除主键约束 ALTER TABLE t_student DROP PRIMARY KEY; -- 设置主键自动增长 ALTER TABLE t_student MODIFY num INT AUTO_INCREMENT; -- 删除主键自动增长 ALTER TABLE t_student MODIFY num INT ; -- 设置列不能为空 ALTER TABLE t_student MODIFY NAME VARCHAR(4) NOT NULL; -- 设置列可以为空 ALTER TABLE t_student MODIFY birthday DATE NULL; -- 添加唯一约束 ALTER TABLE t_student ADD CONSTRAINT abc UNIQUE(NAME); ALTER TABLE t_student DROP INDEX abc; -- 删除唯一约束 -- 添加检查约束 ALTER TABLE t_student ADD CONSTRAINT check_height CHECK (height>100); ALTER TABLE t_student DROP CHECK check_height; -- 删除检查约束 -- 添加列 ALTER TABLE t_student ADD phone CHAR; -- 添加到第一列 ALTER TABLE t_student ADD abc CHAR FIRST; -- 添加到某一列之后 ALTER TABLE t_student ADD mobile CHAR(13) AFTER sex; -- 删除列 ALTER TABLE t_student DROP mobile; -- 修改列名 ALTER TABLE t_student CHANGE phone mobile CHAR(13); -- 修改列的数据类型 ALTER TABLE t_student MODIFY phone CHAR(13);