10.1什么是資料完整性
作用:保證 用戶的輸入的資料 保存到資料庫 是正確的
比如:
年齡:應該是數字,
學號:應該是不重復的
成績:不能為空
, , ,
怎么去保證資料的完整性:添加約束,
完整性約束分類:
物體(記錄)完整性
域完整性、
參考完整性
10.2物體完整性(行)
物體(entity):就是表中一行的(記錄)資料
物體完整性:標識 每一條資料不重復
約束型別(通過什么方式解決這個問題)
主鍵約束(primary key)
不能為空,不重復
唯一約束(unique)
不重復,可以為空
自增長列(auto_increment)
序號自己會改變
10.2.1主鍵約束(primary key)
特點:不能為空,不重復
##沒有約束
create table stu0(
id int,
name varchar(50)
);
insert into stu0(name) values("張三豐");
##方式一:創建表,并且添加主鍵約束
create table stu1(
id int primary key,
name varchar(50)
)
##方式二:
create table stu2(
id int,
name varchar(50),
primary key(id,name)
)
成功:insert into stu1(id,name) value(2,"張三豐");#成功
測驗一:insert into stu1(id,name) value(null,"張三豐"); #失敗,提示不能為空
ERROR 1048 (23000): Column 'id' cannot be null
測驗二:
插入重復資料:報錯
Duplicate entry '2' for key 'PRIMARY'
select * from stu1;
10.2.2唯一的約束(unique)
不重復,可以為空
##唯一約束(unique)
##不重復,可以為空
##給名字 添加 唯一的 約束
create table stu3(
id int primary key,
name varchar(50) unique
)
insert into stu3(id,name) value(1,"張三豐");
insert into stu3(id,name) value(2,"張三豐");
ERROR 1062(23000): Duplicate entry '張三豐' for key 'name'
insert into stu3(id,name) value(2,"張三");
10.2.3自增長列(auto_increment)
##實作,用戶的學號,自動增長
create table stu4(
id int primary key auto_increment,
name varchar(50)
)
##插入資料
insert into stu4(name) value("zsf");
insert into stu4(name) value("ls");
10.3域完整性(單元格,欄位)
域完整性:用來限制單元格的資料的正確性
性別:只能填寫 男/女
名字:必須填寫,非空
域完整性包含:
資料型別
非空約束(not null)
默認值約束(default)
10.3.1資料型別
10.3.2非空約束(not null)
##創建表,名字name欄位非空
create table stu5(
id int primary key,
name varchar(50)not null,
sex varchar(10)
)
##成功
insert into stu5(id,name,sex) values(1,"zsf","男");
insert into stu5(id,name,sex) values(2,null,"男");
ERROR 1048(23000): Column 'name' cannot be null
insert into stu5(id,name,sex) values(2,"zz",null);
10.3.3默認值約束(default)
值沒給,就使用默認值
create table stu6(
id int primary key,
name varchar(50) not null,
sex varchar(10) default"男"
);
查看表結構
desc stu6;
insert into stu6(id,name,sex) values(1,"zsf","女");
insert into stu6(id,name) values(2,"zsf");
查詢結構:
select * from stu6;
10.4參考完整性
主外鍵的關系,2個表之間建立關系之后,他們的洗掉更新操作都是受影響的,
###參考完整性
學生表
id
名字
性別
學生表
id
學生ID
成績
create table stu7(
id int primary key,
name varchar(50)
)
create table score(
id int primary key,
sid int,
score double,
constraint aa foreign key (sid) references stu7(id)
)
insert into stu7(id,name) values(1,"zsf");
insert into score(id,sid,score) values(1,2,90);
ERROR 1452 (23000): Cannot add or update a child
row: a foreign key constraint fails (`db_0402`.`score`,
CONSTRAINT `aa` FOREIGN KEY (`sid`) REFERENCES `stu7` (`id`))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/276131.html
標籤:其他
