约束

一 、 约束的作用:

对字段进行约束,保证数据的完整性与一致性

PRIMARY KEY (PK)    #标识该字段为该表的主键,可以唯一的标识记录
FOREIGN KEY (FK)    #标识该字段为该表的外键
NOT NULL    #标识该字段不能为空
UNIQUE  (UK)    #标识该字段的值是唯一的
AUTO_INCREMENT    #标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT    #为该字段设置默认值

UNSIGNED #无符号  sql默认字段是有符号的,如果设置无符号就用这个
ZEROFILL #使用0填充

二. 注意:not null 与default 的时候默认值可以为空

三、 一共有三种创建unique的方式:

1、单独创建

create table b1(id  int not null unique auto_increment,sex enum('man','woman') default 'man');

2、unique(字段)

create table b1(id int,unique(id) ,sex enum('man','woman') default 'man');

3、联合创建,联合唯一,只要其中一个满足不为一就可以添加

create table b1(id int ,sex enum('man','woman') default 'man',age int,unique(id,age));

四、清空表:delete 与truncate的区别

delete from t1; 清空表,如果表里有设置自动值的就会保留计数,再进行插入,在原有的表的最后一位id进行自动加值
truncate table t1; 数据量大,但是删除速度比delete快,直接从0开始;

五、 primary key 主键:

如果添加字段的时候为空,那么这个字段就为0;

在MySQL的一个表中只有唯一的一个主键,不能有多列主键,但可以有复合主键,
一个表中可以:
1、单列做主键
2、多列做主键(复合主键)
primary key等价于 not null 加上unique ,字段值不能为空且唯一,但是与primary key 不一样的一点是,not null+unique可以多列单独设置,设置之后必须满足不能为空且唯一的条件

注意:在innodb引擎中,一张表必须有一个主键,查询优化需要

单列主键:字段值不能为空且唯一

create table t1(id int primary key,age int );

复合主键:只要有一个满足就可以创建

create table t1(id int,age int,primary key(id,age));
posted @ 2019-10-22 10:30  tiwe  阅读(230)  评论(0编辑  收藏  举报