enum:单选,只能在给定的范围内选一个值
set:多选,可以在给��的范围内选择一个或多个值
示例:
枚举
CREATE TABLE shirts (name VARCHAR(40),size ENUM('xsmall', 'small', 'medium', 'large', 'x-large'));
INSERT INTO shirts VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');
集合
CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
INSERT INTO myset VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
4,表的完整性约束
4.1分类
PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录
FOREIGN KEY (FK) 标识该字段为该表的外键
NOT NULL 标识该字段不能为空,不设置默认可以为空的
UNIQUE KEY (UK) 标识该字段的值是唯一的
AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT 为该字段设置默认值,不设置默认为null
UNSIGNED 无符号,不设置默认为有符号的
ZEROFILL 使用0填充
4.2not null,default,unique,primary key,unsigned
create table t1(id int unsigned not null default 1) #表示id字段为无符号,不可以为空,默认值为1
create table t1(id int unique) #表示id字段的值不能重复
create table t1(id int ,name char(10),constraint ak_name unique(name)) #这也表示name不能重复
联合唯一:
create table t1(id int,name char(10),unique(id,name)) #表示必须不能出现id和name都相同
主键:相当于not null + unique
create table t1(id int primary key)
create table t1(id int,name char(10),constriaint pk_name primary key(id) #这是两种方式都可以设置主键,
联合主键:
create table t1(id int,name char(10),primary key(id,name))
4.3自动增长
create table t1(id int primary key auto_increment,name char(10)
insert into t1(name) values('nnn'),('sss'); #此时没有输入id,但id会从1开始自动增长
insert into t1 values(4,'rrr'); #当我们指定id了,就以指定的为准
insert into t1(name) values('tt') #现在的id也是自动增长,但是接着上一条的id开始增长
上面插入数据的id分别是:1,2,4,5
对于自动增长的字段,可以用delete删除数据,但再插入值时是按照删除前最后一条数据的id值开始增长
delete from t1
select * from t1; #现在为空的
insert into t1(name)values('rtsa') #由于删除前最后一条id为5,所以接上,那这一条id为6
用truncate清空表,在插入数据又是从1开始自增
truncate t1;
insert into t1(name) values('fsdf') #此时的id为1
在创建表的时候可以设定自动增长的起始值
create table t1(id int auto_increment,name char(10),auto_increment=3); #这样设定后,表的自动增长就从3开始
创建表以后,也可以修改自增起始值
alter table t1 auto_increment=4;
设置步长
set session auto_increment_increment=2; #这是设置会话级别的步长
set global auto_increment_increment=2; #这是设置全局级别的步长
例子:
set global auto_increment_increment=5;
set global auto_increment_offset=3;
最后得到的自动增长值为:1,6,11,16.。。。。。
4.4外键foreign key:其实就是表明表与表之间的关系,表与表之间有三种关系,一对一,一对多,多对多,在任何情况下都得先把‘一’的表(就相当于被指向的表)创建。
一对多关系