SQL教程——常见的约束类型

本教程中所使用的数据库的建表语句都在“SQL教程——索引”这篇文章中,点击链接直达:索引&建表语句

摘要:本文主要介绍SQL的DDL语法

目录

常见的约束类型

一、创建表时添加约束

1.添加列级约束

2.添加表级约束

二、删除表时删除约束

1.删除非空约束

2.删除默认约束

3.删除主键

4.删除唯一

5.删除外键

三、表示列


常见的约束类型

 

含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确性和可靠性

 

分类:六大约束

  1. not null:非空,用于保证该字段的值不能为空

    比如姓名,学号等

  2. default:默认,用于保证该字段的默认值

    比如性别,成绩

  3. unique:唯一,用于保存该字段的值具有唯一性,可以为空

    比如座位号

  4. check:检查约束【MySQL中不支持】

  5. primary key:主键,用于保证该字段的值具有唯一性,并且非空

    比如学号,员工编号等

  6. foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值

    在从表中添加限制,用于引用主表中某列的值

     

添加约束的时机:

  1. 创建表时

  2. 修改表时

 

约束的添加分类:

  1. 列级约束:六大约束语法上都支持,但外键约束没有效果。

  2. 表级约束:除了非空、默认,其它都支持。

 

主键和唯一的大对比:

                        保证唯一性          是否允许为空               一个表中可以有多个               是否允许组合

    主键             √                           x                                  只有一个                                 √,但不推荐

    唯一             √                           √                                  可以有多个                             √,但不推荐

 

外键:

  1. 要求在从表设置外键关系

  2. 从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求。

  3. 主表的关联列必须是一个key(一般是主键或是唯一)

  4. 插入数据时,先插入主表,再插入从表

    删除数据时,先删除从表,再删除主表

    

    insert into major values(1, 'java');

    insert into major values(2, 'h5');
create table 表名(

    字段名 字段类型 列级约束,

    字段名 字段类型,

    表级约束

);

 

一、创建表时添加约束

 

1.添加列级约束

create table stunifo(

    id int primary key, #主键

    stuName varchar(20) not null, #非空

    gender char(1) check(gender = '男' or gender = '女'), #检查

    seat int unique, #唯一

    age int default 18, #默认约束

    majorId int foreign key references major(id) #外键

);
create table major(

    id int primary key,

    majorName varhcar(20)

);
#查看stuinfo表中所有的索引,包括主键,外键和唯一

show index from stuinfo;

 

2.添加表级约束

dop table if exists stuinfo;

create table stunifo(

    id int, 

    stuName varchar(20), 

    gender char(1), 

    seat int, 

    age int , 

    majorId int ,

    

    constraint pk primary key(id),

    constraint uq unique(seat),

    constraint ck check(gender = '男' or gender = '女'), 

    constraint fk_stuinfo_major foreign key(majorid) references major(id)

);

 

通用写法:

 

二、删除表时删除约束

1.删除非空约束

alter table stuinfo modify column stuname varhcar(20) null;

 

2.删除默认约束

alter table stuinfo modify column age int;

 

3.删除主键

alter table stuinfo drop primary key;

 

4.删除唯一

alter table stuinfo drop index seat;

 

5.删除外键

alter table stuinfo drop foreign key



show index from stuinfo

三、表示列

 

含义:可以不用手动插入值,系统提供的默认的序列值

特点:

  1. 标识列所在的列必须是一个key(primary key 或者 unique)

  2. 一张表至多有一个标识列

  3. 标识列的类型必须是数值型

  4. 标识列可以通过set auto_increment_increment = 3; 来设置步长

    可以通过手动插入值来设置起始值

id int primary key auto_increment;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请保持优秀。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值