数据库基础笔记(MySQL)4 —— 基础约束

约束

我们可以给表中的字段加上一些约束,来保证表中的数据是有效的

按约束的功能分类

  1. 非空约束 : not null
  2. 唯一性约束 : unique
  3. 主键约束 : primary key
  4. 外键约束 : foreign key
  5. 默认值约束 :default
  6. 检查约束 : check ( MySQL 不支持,Oracle 支持 )

可以多个约束对一个字段使用
例:create table table_1 ( id int , name char ( 5 ) not null unique ) ;

非空约束 ( not null )

其约束的字段不能为 NULL ,当插入数据时,若该字段为 NULL ,则会报错
例:create table table_1 ( id int , name char ( 5 ) not null ) ;

唯一性约束 ( unique )

其约束的字段不能重复,但可以有多个 NULL
例:create table table_1 ( id int unique , name char ( 5 ) ) ;

主键约束 ( primary key )( 很重要 )

( 主键字段 即添加了主键约束的字段,主键值 即主键字段上的值 )

  1. 给某个字段添加主键约束之后,该字段既不能为0,也不能重复,相当于 not null + unique 的效果
  2. 主键值是当前行数据的唯一标识,即如果表中的两行数据是完全相同的,但只要主键值不同,即可认为是完全不同的数据
  3. 每张表都有且只有一个主键约束!!! 如果一张表没有主键约束,则该表是无效的,主键虽然只能有一个,但可以由多个字段联合组成
  4. 如果只有一个字段组成的主键,称为单一主键,如果由多个字段组成,则称为复合主键

例:
create table table_1 ( id int primary key , name char ( 5 ) ) ;
create table table_1 ( id int , name char ( 5 ) , primary key ( id, name ) ) ;

自增主键 ( auto_increment )

只适用于整数类型主键,自增从 1 开始
例:create table table_1 ( id int primary key auto_increment , name char ( 5 ) ) ;

外键约束 ( foreign key )

( 外键字段 即添加了外键约束的字段,外键值 即外键字段上的值 )

  1. 外键约束用来在两个表之间建立连接
  2. 外键可以有一个或者多个,外键不是自身表的主键,但是关联的是其他表主键( 其实不一定是主键,只要有unique约束即可,但一般都是主键 )
  3. 一个表的外键可以为空,但如果不为空值,则每一个外键值必须等于另一个表的主键值中的某个值
  4. 主表( 父表 )即关联中主键所在表,从表 ( 子表 )即关联中外键所在表
  5. 删除表与数据的顺序是先主再从,添加表或数据的顺序是先从再主

例:create table table_1 ( id int , name char ( 5 ) , foreign key ( name ) references table_2 ( name_1 ) );
( references 即是参考的意思 )

默认值约束 ( default )

如果不指定默认值,则默认值为 NULL
例:create table table_1 ( id int , name char ( 5 ) default ‘ candy ’ ) ;

按约束的位置分类

  1. 列级约束 ( 对于一个字段 )
  2. 表级约束 ( 对于一个或多个字段 )

在创建表的时候添加列级约束只支持:默认约束,非空约束,主键约束,唯一性约束
在添加表级约束只支持:主键约束,唯一性约束,外键约束

列级约束

直接添加在一个字段后面的约束,相当于只对这个字段生效
例:create table table_1 ( id int , name char ( 5 ) default ‘ candy ’ ) ;

表级约束

单独写,对其中包括的字段都生效
例:create table table_1 ( id int , name char ( 5 ) , unique ( id, name ) ) ;
( 相当于 id 与 name 联合起来唯一 )

对于约束的操作

添加约束

  1. alter table 表名 modify 字段名 数据类型 约束; ( 修改字段属性的时候加上约束 )
  2. alter table 表名 change 旧字段名 新字段名 数据类型 约束; ( 修改字段名字的时候加上约束 )
  3. alter table 表名 add 字段1 数据类型 约束, 字段2 数据类型 约束 … ;( 添加字段的时候加上约束 )
  4. create table 表名 ( 字段1 数据类型 约束 ,字段2 数据类型 约束 … ) ;
    create table 表名 ( 字段1 数据类型,字段2 数据类型 … 约束 (字段1 , 字段2 ) ) ;
    (建表时添加约束)

删除约束

  1. alter table 表名 modify 字段名 数据类型 ;( 修改字段属性时不加上约束 )
  2. alter table 表名 change 旧字段名 新字段名 数据类型 ; ( 修改字段名的时候不加上约束 )
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值