NC_数据库5.0学习笔记(数据完整性)

思想:数据完整性指存储在数据库中的数据能正确反应实际情况

类型{

  • 实体完整性:标识符或则主键的完整性
  • 域完整性:限制类型  格式  可能值范围
  • 引用完整性:保持原表和引用表数据的一致性
  • 自定义的完整性:用户自定义的业务规则

}

实现方式{

实体完整性:主键约束,唯一值约束

域完整性:检查约束,默认值约束,外键约束

引用完整性:外键约束

}

约束{

用来限制属性或则表的

create table       alter table  ------->对象

行级约束,表级约束   约束效力 行级和表级是一样的

非空约束,唯一约束,主键约束一般写行级

check随便

外键约束:一般就是表级 联合主键 表级约束

}

{

非空约束:确保当前约束的属性不为空值,非空约束只能出现在表对象的列上

}


笔记:

create table student1(id int,name varchar(64),phone varchar(20),

class_no int)engine innodb default charset utf-8;

insert into student1(id) values(1);

insert into student values(2,null,null,null);

create table student2(id int not null,

name varchar(64) not null,

phone varchar(20) ,

class_no int)engine innodb default charset utf-8;

insert into student2(id) values(1);

#指定列添加非空

alter table student2 modify column phone varchar(20) not null;

#指定列删除非空

alter table student2 modify column phone varchar(20);

#唯一约束:指定某列或则某几列数据不能重复

create table student3(id int not null unique,

name varchar(64) not null,

phone varchar(20) unique,

class_no int not null

)engine innodb default charset utf-8;

insert into  student3 values(1,'pika',123451,1001);

insert into  student3 values(2,'pikb',123452,1002);

#指定列添加唯一约束

alter  table student3 values add constraint uc_name unique(name);

insert into student3 values(3,'pika','123453',1002);

#指定列删除唯一约束

alter table student3 drop index uc_name;


#创建复合唯一约束(表级约束)

create table student4(id int not null,

name varchar(64) not null,

phone varchar(20) ,

class_no int not null,

constraint uc_idphone unique(id,phone)

)engine innodb default charset utf-8;

desc student4;

insert into student4 values(1,"pika",123451,1001);

insert into student4 values(1,"pikb",123452,1001);

insert into student4 values(1,"pikc",123453,1001);

insert into student4 values(12345,"pikd",123451,1001);//ID不能和电话一样


主键约束

主键约束,非空+唯一

多列组合的主键约束,组合的值不能重复

每个表只能由一个主键约束

create table student5(

id int ,

name varchar(64) not null,

phone varchar(20) unique,

class_no int not null,

)engine innodb default charset utf-8;

create table student6(

id int ,

name varchar(64) not null,

phone varchar(20) unique,

class_no int not null,

constraint pk_s6 primary key(id,name)

)engine innodb default charset utf-8;

desc student6;

#添加主键约束

alter table student6 add primary key(stu_no,stu_name);

#删除主键约束

alter table student6 drop primary key;


#增加列

create table student7(

id int primary key auto_increment,

name varchar(64) not null,

phone varchar(20) unique,

class_no int not null,

)engine innodb default charset utf-8;

desc student;

insert into student7 values(null,'pika','1231',1001);

insert into student7 (name,phone,class_no)values('pikb','1232',1002);

alter table student7 modify column id int not null;

alter table student7 modify column id int primary key auto _increment;


create table student8(

id int primary key auto_increment,

name varchar(64) not null,

phone varchar(20) unique,

class_no int not null,

)engine innodb default charset utf-8 auto_increment=1000;

desc student8;

insert into student8(name,phone,class_no)values('pikc','1232',1004);

#检查约束

create table student9(

id int primary key auto_increment,

name varchar(64) not null,

phone varchar(20) unique,

age int check(age>0 and age<200),

gender varchar(4) check (gender='男'or gender='女'),

class_no int not null,

)engine innodb default charset utf-8 ;

insert into student9 values(null,'pikd','1234',-20,'男',1002);

 


扩展:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码字界陈冠希

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

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

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

打赏作者

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

抵扣说明:

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

余额充值