一、表的创建(create)
create table <表名>(
字段名1 数据类型 [列级别约束条件] [默认值],
字段名2 数据类型 [列级别约束条件] [默认值],
........
[表级别约束条件]
);
二、表的删除(drop)
1.删除表的一些约束条件
- 如果表与表之间存在外键关联。则不能直接删除父表,否则会破坏表的参照完整性。想要删除父表,需要先删除与它关联的子表或者保留子表取消外键约束
- drop可以同时删除多个表
1.语法书写
drop table [if exists] 表名1,表名2....;
- 不加if exists,如果表不存在会报错
- 加if exists,如果表不存在不会报错,但是会警告
数据完整性
1.概念:指数据能正确反映实际情况
2.分类
- 实体完整性:标识符或主键完整性(主键、唯一值约束)
- 域完整性:限制数据类型、格式、取值范围(检查、默认值、外键约束)
- 引用完整性:输入或删除时,不能存在引用不存在的值(外键约束)
- 自定义完整性:自定义规则
3.约束:限制表数据的一个条件
约束写法
- 行级约束:定义在每个字段后(字段基础上)
- 表级约束:定义在表后(表基础上)
二、主键约束(primary key)
1.概念:
- 主键,又称主码。是表中一列或者多列的组合
2.特点
- 主键约束要求主键列的数据唯一,并且不能为空
- 可以结合外键来定义不同数据表之间的关系,也可以加快数据库查询速度
- 一个表中最多允许有一个主键
- 主键分为:单字段主键和多字段主键
3.书写格式
- ①创建表时在字段名后指定单字段主键
create table <表名>(
字段名 数据类型 primary key [默认值]
);
- ②创建表时在字段名后指定单/多字段主键(表级约束)
create table <表名>(
字段名 数据类型 [默认值],
[constraint 约束名] primary key(字段名,字段名2...)
);
约束名自己定义,[constraint 约束名] 可省去
- ③在表外增加单/多字段主键约束
alter table 表名 add primary key(字段1,字段2...);
- ④删除主键约束
一个表中最多只有一个主键,所以直接删除,不需要指定字段
alter table 表名 drop primary key;
三、外键约束
1.概念:
- 一个表的外键取值参考另一个表的主键
2.特点
- 外键用来在两个表之间建立连接,可以是一列或多列
- 一个表可以有多个外键。外键和关联主键的数据类型要相同
- 父表与子表的存储引擎必须相同
- 外键可以为空值。如果为非空值,则该外键值必须等于另一个表中的主键值
- 一致性、完整性:一个外键关联另一个表后,另一个表不可以删除具有关联关系的行。当外键在插入一行新数据时,外键的值必须是主键中存在的,否则不能添加
3.父表与子表
例如:有一个学生表(student)和一个班级表(class),学生表中的班号为外键,参考班级表中的主键
- 主表(父表):class
- 从表(子表):student
4.书写格式
- ①创表时指定外键
create table student(
字段名 数据类型 [默认值],
[constraint 外键名] foreign key(子表字段) references 父表名(父表主键)
);
外键名自己定义,[constraint 外键名] 可省去
- ②增加外键约束
alter table 表名 add [constraint 外键名] foreign key(子表字段) references 父表名(父表主键);
- ③删除外键约束
通过外键名称删除
alter table 表名 drop foreign key 外键名;
四、非空约束(not null)
1.概念
- 非空约束指定字段的值不能为空,如果用户添加数据时没有指定值,系统就会报错
2.书写格式
- 创建表时指定非空约束
create table 表名(
字段 数据类型 not null,
);
- 表外修改指定列为非空约束
alter table 表名 modify column 字段 数据类型 not null;
- 删除非空约束
alter table 表名 modify column 字段 数据类型;
五、唯一约束(unique)
1.概念与特点
- 唯一约束要求该列唯一,允许为空,但是只能出现一个空值
- 可以设定一列或复合为唯一约束
2.语法书写
- ①创建表时指定唯一约束
create table 表名(
字段 数据类型 unique,
);
- ②创建表时指定复合唯一约束(表级约束)
create table 表名 (
字段1 数据类型,
字段2 数据类型,
constraint 唯一约束名 unique(字段1,字段2)
);
- ③表外指定一/多列为唯一约束
alter table 表名 add [constraint 唯一约束名] unique(字段,字段2....);
- ④删除列的唯一约束
删除方式:通过约束名删除
alter table 表名 drop 唯一约束名;
六、默认值约束(default)
1.概念与特点
- 为字段指定默认值。
- 当插入一条记录时没有为此字段赋值,则使用默认值。若指定值,默认值被替换
2.语法书写
- ①创建表时添加默认值
create table 表名(
字段 数据类型 default 默认值
);
- ②表外设置默认值约束
alter table 表名 modify column 字段 数据类型 default 默认值;
- ③删除默认值
方法:赋值为null即可
alter table 表名 modify column 字段 数据类型 default null;
七、表的属性值自动增加(auto_increment)
1.特点与特点
- 设置自动增加后,字段会有默认值
- 且自动增加列必须为主键
- 向表中插入数据时,如果没有指定值,auto_increment指定默认从1开始
- 如果插入数据时指定了值,则字段的默认值改变,为上一次改变值+1
2.语法书写
- ①建表时创建自增列
create table 表名(
字段 数据类型 primary key auto_increment
);
- ②在表外指定自增列
如果表已经设置了唯一约束:alter table 表名 modify column 字段 数据类型 auto_increment;
如果表没有设置了唯一约束:alter table 表名 modify column 字段 数据类型 primary key auto_increment;
- ③删除自增列
删除自增列此处是使用not null方法。使用此方法后、向表中主键插入数据时就必须带上值
alter table 表名 modify column 字段 数据类型 not null;
- ④设置自增起始值
此种方法目前有错...待更新
auto_increment=起始值;