数据完整性
实体完整性
实体: 表中一行(一行记录)代替一个实体
实体完整性的作用: 标识每一行数据不重复。
约束类型: 主键约束, 唯一约束,自动增长列。
主键约束: 标识该列唯一,非空。
注: 每个表中必须要有一个主键
添加主键的三中方式:
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 表名(列名);
表与表之间的关系;
一对一;
一对多;
多对多;
原文:http://www.cnblogs.com/fjkgrbk/p/mysql_table.html