其他分享
首页 > 其他分享> > 数据的完整性(正确性和准确性)

数据的完整性(正确性和准确性)

作者:互联网

文章目录

1 数据的完整性作用

2 完整性的分类

实体完整性 域完整性 引用完整性

2.1 实体完整性

通过实体完整性约束来实现

2.1.1 主键约束 primary key

CREATE TABLE stu(
	id INT PRIMARY KEY,
	NAME VARCHAR(10)
);
INSERT INTO stu VALUES(2,'aaa');
SELECT * FROM stu;
CREATE TABLE stu2(
	id INT,
	NAME VARCHAR(10),
	PRIMARY KEY(id)
);
INSERT INTO stu2 VALUES(1,'aaa');
SELECT * FROM stu2;

CREATE TABLE stu3(
	id INT,
	NAME VARCHAR(10),
	classid INT,
	PRIMARY KEY(id,classid)
);
INSERT INTO stu3 VALUES(2,'aaa',1);
SELECT * FROM stu3;
CREATE TABLE stu4(
	id INT,
	NAME VARCHAR(10)
);
ALTER TABLE stu4 ADD CONSTRAINT PRIMARY KEY(id);
ALTER TABLE stu4 ADD PRIMARY KEY(id);
ALTER TABLE stu4 ADD CONSTRAINT pk_stu4_id PRIMARY KEY(id);

2.1.2 唯一约束 unique

CREATE TABLE stu5(
	id INT PRIMARY KEY,
	NAME VARCHAR(10) UNIQUE
);
INSERT INTO stu5 VALUES(4,NULL);
SELECT * FROM stu5;

2.1.3 自动增长列 auto_increment

CREATE TABLE stu6(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(10)
);

INSERT INTO stu6(NAME) VALUES ('aaa');
SELECT * FROM stu6;
INSERT INTO stu6 VALUE(NULL,'bbb');
INSERT INTO stu6 VALUE(20,'ccc');

DELETE FROM stu6 WHERE id=22;

2.2 域完整性

2.2.1 非空约束 not null

CREATE TABLE stu7(
	id INT PRIMARY KEY,
	NAME VARCHAR(10) NOT NULL
);
INSERT INTO stu7 VALUES(2,'aaa');
SELECT * FROM stu7;

2.2.2 默认值约束 default

CREATE TABLE stu8(
	id INT PRIMARY KEY,
	NAME VARCHAR(10) NOT NULL,
	gender VARCHAR(10) DEFAULT '男'
);
INSERT INTO stu8(id,NAME) VALUES(2,'aaa');
SELECT * FROM stu8;
INSERT INTO stu8 VALUES(3,'aaa','女');
INSERT INTO stu8 VALUES(4,'aaa',NULL);
INSERT INTO stu8 VALUES(5,'aaa',DEFAULT);

2.2.3 检查约束 CHECK 8.0.15之前版本不支持

CREATE TABLE stu9(
	id INT PRIMARY KEY,
	NAME VARCHAR(10) NOT NULL,
	gender VARCHAR(10) CHECK(gender='男' OR gender='女')
);

INSERT INTO stu9 VALUES(1,'aaa','人妖');
SELECT * FROM stu9;
DELETE FROM stu9 WHERE id=1;

2.3 引用完整性(参照完整性)

CREATE TABLE emp1(
		id INT PRIMARY KEY,
		NAME VARCHAR(10) NOT NULL,
		deptid INT,
		CONSTRAINT fk_dept_emp1_depid FOREIGN KEY(deptid) REFERENCES dept(deptid)
	);
ALTER TABLE emp ADD CONSTRAINT fk_deptid FOREIGN KEY(deptid) REFERENCES dept(deptid);
-- alter table 表名 drop foreign key 外键约束名;
ALTER TABLE emp DROP FOREIGN KEY fk_deptid;

3 小结

4 引用完整性描述的是表和表之间的关系,

4.1 关系分类:

4.2 方案

如何设计?2种方案:

4.2.1 在card种添加外键,并给外键添加唯一约束

CREATE TABLE person(
		id INT PRIMARY KEY,
		NAME VARCHAR(10)
);

CREATE TABLE card(
		cid INT PRIMARY KEY,
		id INT UNIQUE,
		CONSTRAINT fk_id FOREIGN KEY(id) REFERENCES person(id)
);

4.2.2 给card中的主键添加外键约束

CREATE TABLE card2(
	cid INT PRIMARY KEY,
	CONSTRAINT fk_cid FOREIGN KEY(cid) REFERENCES person(id)
);
一对多:dept和emp   一个爸爸有多个孩子   我有多个手机,玩具,电脑。。。
	至少要用2张表来描述。
	都是在多方创建外键
	
多对多:老师和学生
	至少需要3张表,需要创建中间表。在中间表中给出2个列
	一个引用老师表,一个引用学生表。添加2个外键约束,保证引用关系正确。
CREATE TABLE student(
			sid INT PRIMARY KEY,
			sname VARCHAR(10) NOT NULL
		);

		CREATE TABLE teacher(
			tid INT PRIMARY KEY,
			tNAME VARCHAR(10) NOT NULL
		);

		CREATE TABLE stu_tea(
			sid INT,
			tid INT
		);

		ALTER TABLE stu_tea ADD CONSTRAINT fk_tea_tid FOREIGN KEY(tid) REFERENCES teacher(tid);
		ALTER TABLE stu_tea ADD CONSTRAINT fk_stu_sid FOREIGN KEY(sid) REFERENCES student(sid);

标签:INT,PRIMARY,准确性,正确性,完整性,KEY,TABLE,id
来源: https://blog.csdn.net/qq_39497997/article/details/114819849