数据库完整性

数据完整性
1、完整性分类:
实体完整性
域完整性
引用完整性

2、什么是实体完整性
表中的一行(一条记录)代表一个实体(entity)

3、实体完整性的作用
标识每一行数据不重复.行级约束

4、约束类型
主键约束(primary key)
唯一约束(unique)
自动增长(auto_increment)

1、 主键约束
1、特点:
每个表中要有一个主键
数据唯一,且不能为null

2、添加方式:
CREATE TABLE 表名(字段名1 数据类型 primary key,字段名2 数据类型);

3、举例:创建person表
CREATE TABLE person(ID BIGINT primary key,NAME VARCHAR(50))

CREATE TABLE 表名(字段1 数据类型,字段名2 数据类型,primary key(要设置主键的字段));

4、举例创建
CREATE TABLE person(
ID BIGINT,
name VARCHAR(50),
age INT,
primary key(ID)
);

2、联合主键:两个字段数据同时相同时,才违反联合主键约束
1、创建联合主键
CREATE TABLE 表名(字段1 数据类型,字段2 数据类型,primary key(主键1,主键2));

2、举例
CREATE TABLE student(
ID BIGINT,
snum BIGINT,
name VARCHAR(50),
primary key(ID,snum))

3、先创建表再添加主键
CREATE TABLE student(sid INT,name VARCHAR(50));

4、如果表中你之前已经添加了数据,数据不符合主键规则就会报错
ALTER TABLE student ADD CONSTRAINT primary key(sid);

3、唯一约束
1、特点
指定列的数据不能重复
可以为空值

2、格式:
CREATE TABLE students(
id INT primary key,
name VARCHAR(50) UNIQUE
)

4、自动增长列
1、特点
指定列的数据自动增长
即使数据删除,还是从删除的序号继续往下

2、格式
CREATE TABLE 表名(
字段名1 数据类型 primary key AUTO_INCREMENT,
字段2 数据类型 UNIQUE);

3、举例
CREATE TABLE 表名(
字段名1 数据类型 primary key AUTO_INCREMENT,
字段2 数据类型 UNIQUE);

5、域完整性
1、使用
限制此单元格的数据正确,不对照此列的其他单元格比较
域代表当前的单元格

2、数据类型
数值类型
日期类型
字符串类型

3、非空约束(NOT NULL)
CREATE TABLE stu(
id int primary key auto_increment,
name varchar(20) unique not null,
gender char(1) default '男'
)

4默认值约束(DEFAULT)
CREATE TABLE 表名(
字段名1 数据类型 primary key AUTO_INCREMENT,
字段2 数据类型 UNIQUE NOT NULL,
字段3 数据类型 DEFAULT '默认值');

5、举例:
CREATE TABLE students(
id INT primary key AUTO_INCREMENT,
name VARCHAR(20) UNIQUE NOT NULL,
gender CHAR(1) DEFAULT '男'
);

多表查询

  1. 一对一
    一夫一妻(开发中使用比较少)

2、一对多关系
一个人可以拥有多辆汽车,要求查询某个人拥有的所有车辆
创建Person表


CREATE TABLE person(
p_id INT PRIMARY KEY AUTO_INCREMENT,
p_name VARCHAR(50),
p_age INT,
p_sex CHAR(1)
);


CREATE TABLE car(
c_id INT PRIMARY KEY AUTO_INCREMENT,
c_name VARCHAR(50),
c_color VARCHAR(25),
p_id INT,
CONSTRAINT fk_Person FOREIGE KEY(c_id) REFERENCES person(p_id)
);

合并结果集UNION与UNION_ALL
1、UNION
合并时去除重复记录

2、 UNION ALL
合并时不去除重复记录

3、格式

SELECT * FROM 表1 UNION SELECT * FROM 表2;
SELECT * FROM 表1 UNION ALL SELECT * FROM 表2;

4、创建表
CREATE TABLE A(name VARCHAR(10),score INT);
CREATE TABLE B(name VARCHAR(10),score INT);

INSERT INTO A VALUES('a',10),('b',20),('c',30);
INSERT INTO A VALUES('a',10),('b',20),('c',40);

4、 UNION
SELECT * FROM A
UNION
SELECT * FROM B;

5、UNION ALL
SELECT * FROM A
UNION ALL
SELECT * FROM B;

6、 注意事项
被合并的两个结果集:列数,列类型必须相同

你可能感兴趣的:(数据库完整性)