数据完整性
实体完整性
实体: 表中一行(一行记录)代替一个实体
实体完整性的作用: 标识每一行数据不重复。
约束类型: 主键约束, 唯一约束,自动增长列。
主键约束: 标识该列唯一,非空。
注: 每个表中必须要有一个主键
添加主键的三中方式:
1.在创建表的过程中直接创建。
CREATE TABLE student(
id int primary key,
name varchar(50)
);
2. 在创建表中的特殊创建方式: 优点在于 可以联合创建主键
CREATE TABLE student(
id int,
name varchar(50),
primary key(id)
);
CREATE TABLE student(
classid int,
stuid int,
name varchar(50),
primary key(classid,stuid)
);
3.在表创建完成之后再给列创建主键
alter table 表名 add primary key (列名);
唯一约束; 标识该列的值不能重复 。
CREATE TABLE student(
Id int primary key,
Name varchar(50) unique
);
自增长: 标识 该列的数据会自动增长。 不需要人为的给值。
sqlserver数据库 (identity) oracle数据库( sequence)
给主键添加自动增长的数值,列只能是整数类型
CREATE TABLE student(
Id int primary key auto_increment,
Name varchar(50)
);
INSERT INTO student(name) values(‘tom’);
域完整性
作用: 限制单元格的数据正确,不对照此列的其他单元格比较
域代表当前单元格;
域完整性的约束: 数据类型 默认值约束(default) 非空约束(not null) check约束(mysql不支持)
默认值约束:
CREATE TABLE student(
Id int pirmary key,
Name varchar(50) not null,
Sex varchar(10) default ‘男’
);
insert into student1 values(1,'tom','女');
insert into student1 values(2,'jerry',default);
非空约束:not null
CREATE TABLE student(
Id int pirmary key,
Name varchar(50) not null,//该列表示为非空
Sex varchar(10)
);
INSERT INTO student values(1,’tom’,null);
引用完整性(参照完整性)
外键:foreign key
创建外键的方法
ALTER TABLE 表名 ADD CONSTRAINT 主键名 FOREIGN KEY (列名) REFERENCES 表名(列名);
表与表之间的关系;
一对一;
一对多;
多对多;