mysql数据完整性和约束

mysql数据完整性和约束

数据的完整性是指数据的可靠性和准确性.它分四类:

1.实体完整性:实体的完整性强制表的标识符列或主键的完整性(通过索引,唯一约束,主键约束或标识列属性).

2.域完整性:限制类型(数据类型),格式(通过检查约束和规则),可能值范围(通过外键约束,检查约束,默认值定义,非空约束和规则).

3.引用完整性:在删除和输入记录时,引用完整性保持表之间已定义的关系.引用完整性确保键值在所有表中一致.这样的一致辞性要求不能引用不存在的值.如果一个键值更改了,那么在整个数据库中,对该键值的引用要进行一致的更改.

4.自定义完整性:用户自己定义的业务规则.

约束和数据完整性

主键(Primary key

外键(Foreign key

唯一(unique

检查(check:MySQL不支持。

默认(default

1、约束

create table s(sno char(2) not null  primary key,

               sname char(10)  null,   

               sex char(2)  null default ''

               check(sex='' or sex='')  ,                

               birthday datetime  null,

               id char(18) null unique);

 

create table c (cno char(2) not null  primary key,

                cname char(10)  null);

 

 

create table sc(sno char(2)  not null references s(sno),(mysql不支持这样写)     

                cno char(2)  not null references c(cno),   

                score decimal(5,1) null check(score>=0 and score<=100),

                primary key(sno,cno) );

2、另一种约束

create table s(sno char(2) not null ,

               sname char(10)  null,   

               sex char(2)  null default '',

               birthday datetime  null,

               id char(18) null , primary key(sno)unique(id),

              check(sex='' or sex='')

            );

create table c (cno char(2) not null  ,

                cname char(10)  null, primary key(cno));

create table sc(sno char(2)  not null ,     

                cno char(2)  not null ,   

                score decimal(5,1) null ,      primary key(sno,cno),

foreign key(sno) references s(sno) on delete cascade on update cascade,

foreign key(cno) references c(cno),

check(score>=0 and score<=100)

               );

3、第三种约束

 

create table s(sno char(2) not null ,

               sname char(10)  null,   

               sex char(2)  null default '' ,

               birthday datetime  null,

               id char(18) null

            );

 

create table c (cno char(2) not null  ,

                cname char(10)  null

                            );

 

create table sc(sno char(2)  not null ,     

                cno char(2)  not null ,   

                score decimal(5,1) null             

               );

alter table s

add constraint pk_sno primary key(sno),

add constraint uq_id unique(id),

add constraint ck_sex check(sex=‘男’ or sex=‘女’);

 

alter table c

add constraint pk_cno primary key(cno);

 

alter table sc

add constraint pk_sc primary key(sno,cno),

add constraint ck_score check(score>=0 and score<=100),

add constraint fk_sno foreign key(sno) references s(sno),

add constraint fk_cno foreign key(cno) references c(cno);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值