数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出形成无效操做或错误信息而提出的。数据的完整性要从如下四个方面考虑:sql
根据约束的特色,分为几种:数据库
主键:Primary key,简称PK,数据库主键做用保证明体的完整性,能够是一个列或多列的组合。spa
当建立主键约束时,MySQL默认在对应的列上创建主键索引。删除主键时,也会直接删除主键索引。设计
//直接添加主键 CREATE TABLE t_stu( sid INT PRIMARY KEY, sname VARCHAR(100), gender CHAR ); //单独声明主键 CREATE TABLE t_course( cid INT , cname VARCHAR(100), decription VARCHAR(200), PRIMARY KEY(cid) ); //建表后添加主键 ALTER TABLE t_stu ADD PRIMARY KEY(sid); //删除主键 alter table表名称 drop primary key;
--在某一列后面直接添加惟一性约束 CREATE TABLE t_course( cid INT PRIMARY KEY, cname VARCHAR(100) UNIQUE, description VARCHAR(200) ); --单独指定表的惟一性约束 CREATE TABLE t_stu( sid INT PRIMARY KEY, sname VARCHAR(100), card_id CHAR(18), CONSTRAINT uk_card_id UNIQUE KEY(card_id) ); --在建表后修改表结构: alter table 【数据库名.】表名称 add unique key(字段名); alter table 【数据库名.】表名称 add unique key(字段列表); #复合惟一 --删除惟一键 alter table 【数据库名.】表名称 drop index 索引名; alter table emp drop index cardid;
若是不知道索引名,能够经过以下的语句查询:
show index from 表名称;code
惟一键和主键的区别:
(1)主键不能为空,惟一键能够为空
(2)主键约束,一个表只能有一个,而惟一键能够有不少个索引
外键约束不是必须的,并且如今不少大的公司,数据量比较大时,不建议在数据库层面设计外键,
由于他以为这样效率低,把这个数据的约束挪到代码层面去判断。ip
特色:
(1)约束的是两张表的关系
须要两张表,或者一张表虚拟成两张表
(2)两张表分为主表(父表)和从表(子表)
外键的创建/指定是在子表上创建。
(3)被参考的表称为主表,主表的被参考列必须是主键或惟一键
(4)一个表能够有多个外键ci
--先建主表,再建从表 create table emp( 字段1 数据类型 primary key, 字段2 数据类型 【unique key】【not null】【default 默认值】, foreign key(从表的外键列) references 主表名(主表被参考的列名) ); --建表后指定外键 alter table 从表名称 add foreign key(从表的字段) references 主表名(主表被参考的列名);
default:默认值,在插入数据时某列若是没指定其余的值,那么会将默认值添加到新记录。rem
--建表 create table 【数据库名.】表名称( 字段1 数据类型 primary key, 字段2 数据类型 【unique key】【not null】【default 默认值】, 字段2 数据类型 【unique key】【not null】【default 默认值】, ... ); --实例 create table emp( eid int primary key, #员工编号 ename varchar(20) not null, #姓名 cardid varchar(18) unique key not null , #身份证号 tel varchar(11) unique key not null, gender char not null default '男' ); --修改 alter table 表名 modify 列名 数据类型 【unique key】 【not null】 ; alter table emp modify cardid varchar(18) unique key not null; alter table emp modify tel varchar(11) not null; alter table emp modify gender char not null default '男'; --去掉非空和默认值约束 alter table emp modify gender char ;
关键字:auto_incrementit
特色:
create table emp( eid int primary key auto_increment, ename varchar(20) not null );