MySQL:11---数据表的创建、删除以及表约束(数据完整性)

一、表的创建(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=起始值;

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/87971552