数据库中的约束

目录

1、什么是约束?

2、约束包括哪些?

3、非空约束 not null

4、唯一性约束 unique

5、主键约束(primary key,简称pK)

6、外键约束

1、什么是约束?

        约束对应的英语单词:constraint

        在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的完整性、有效性!!!

        约束的作用就是为了保证:表中的数据有效!!

2、约束包括哪些?

        非空约束:not null

        唯一性约束:unique

        主键约束:primary key(简称pK)

        外键约束:foreign key(简称FK)

        检查约束:check(mysql不支持,oracle支持)

3、非空约束 not null

非空约束 not null 约束的字段不能为NULL。

drop table if exists t vip;

create table t_vip(

        id int,

        name varchar (255) not null

);

insert into t vip(id,name) values(1, 'zhangsan') ;

insert into t vip(id,name) values(2,'lisi');

insert into t vip(id) values (3) ;

        xxxx.sql这种文件被称为sql脚本文件。sql脚本文件中编写了大量的sql语句。我们执行sql脚本文件的时候,该文件中所有的sql语句会全部执行!批量的执行SQL语句,可以使用sql脚本文件。在mysql当中怎么执行sql脚本呢? source D: \course\03-MysQL\document\vip.sql 

4、唯一性约束 unique

唯一性约束unique约束的字段不能重复,但是可以为NULL。

drop table if exists t_vip

create table t vip(

        id int,

        name varchar (255) unique,

        email varchar(255)

);

新需求:name和email两个字段联合起来具有唯一性!!!!

create table t_vip(

        id int,

        name varchar (255) ,

        email varchar(255),

        unique (name,email)  //约束没有添加在列的后面,这种约束被称为表级约束。

);

        需要给多个字段联合起来添加某一个约束的时候,就要使用表级约束。

unique 和not null怎么联合

create table t_vip(

        id int,

        name varchar (255) not null unique

);

        在mysql当中,如果一个字段同时被not null和unique约束的话,该字段自动变成主键字段。(注意:oracle中不一样!)

5、主键约束(primary key,简称pK)

主键约束的相关术语

        主键约束:就是一种约束。

        主键字段:该字段上添加了主键约束,这样的字段叫做:主键字段

        主键值:主键字段中的每一个值都叫做:主键值。

什么是主键?有啥用?

        主键值是每一行记录的唯一标识。

        主键值是每一行记录的身份证号!!!

注:任何一张表都应该有主键,没有主键,表无效!!主键不能为空也不能重复

create table t_vip(

        id int primary key,

        name varchar (255)

);

表级约束主要是给多个字段联合起来添加约束?

//id和name联合起来做主键:复合主键!!!

create table t_vip(

        id int,

        name varchar (255) ,

        email varchar (255),

        primary key(id,name)

);

        一张表,主键约束只能添加1个。

        主键值建议使用:int   big   int    char等类型。不建议使用:varchar来做主键。主键值一般都是数字,一般都是定长的!

        主键除了:单一主键和复合主键之外,还可以这样进行分类?

        自然主键:主键值是一个自然数,和业务没关

        业务主键:主键值和业务紧密关联,例如拿银行卡账号做主键值。这就是业务主键!

        在实际开发中使用业务主键多,还是使用自然主键多一些?

                自然主键使用比较多,因为主键只要做到不重复就行,不需要有意义。业务主键不好,

        因为主键一旦和业务挂钩,那么当业务发生变动的时候,可能会影响到主键值,所以业务主            键不建议使用。尽量使用自然主键。

        在mysql当中,有一种机制,可以帮助我们自动维护一个主键值?

        create table t_vip(

                id int primary key auto_increment,  //auto_increment表示自增,从1开始,以1递增

                name varchar(255)

        );

6、外键约束

        外键约束涉及到的相关术语:

        外键约束:一种约束(foreign key)

        外键字段:该字段上添加了外键约束

        外键值:外键字段当中的每一个值。

        业务背景:请设计数据库表,来描述"班级和学生"的信息?

        思考:子表中的外键引用的父表中的某个字段,被引用的这个字段必须是主键吗?不一定是主键, 但至少具有unique约束。|

        当cno字段没有任何约束的时候,可能会导致数据无效。可能出现一个102,但是102班级不存在,所以为了保证cno字段中的值都是100和101,需要给cno字段添加外键约束。那么:cno字段就是外键字段。cno字段中的每一个值都是外键值。

create table t_class(

        classno int primary key,

        classname varchar (255)

);

create table t_student(

        no int primary key auto_increment,

        name varchar (255) ,

        cno int,

        foreign key(cno) references t_class(classno)

);

        思考:子表中的外键引用的父表中的某个字段,被引用的这个字段必须是主键吗?

        外键值可以为NULL。

        不一定是主键,但至少具有unique约束。

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

机器人spider

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

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

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

打赏作者

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

抵扣说明:

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

余额充值