3、约束条件()-其他
3、约束条件()
3.1default默认值
# 插入数据的时候可以指定字段create table t1( id int, name char(16));insert into t1(name,id) values('haha',1);
default使用方法
create table t2( id int, name char(8), gender enum('male','female') default 'male' );# 未传就使用默认的insert into t2 (id,name) values(1,'haha')# 传了性别就采用自己传的insert into t2 (id,name) values(2,'wawa','female')
3.2unique唯一
唯一标识,不能重复。
单列唯一
# 单列唯一,给某个字段加唯一标识create table t1( id int unique, name char(16));
联合唯一
# 联合唯一 比如:ip+port# 每个都可以重复,但是加起来不能重复create table t2( id int, ip char(16), port int, unique(ip,port));insert into t4 values(1,'127.0.0.1',8080);insert into t4 values(2,'127.0.0.1',8081);insert into t4 values(3,'127.0.0.2',8080);insert into t4 values(4,'127.0.0.1',8080); 报错
3.3primary key主键
1、primary key = not null + unique
2、除了有约束效果之外 它还是Innodb存储引擎组织数据的依据 Innodb存储引擎在创建表的时候必须要有primary key 因为它类似于书的目录 能够帮助提示查询效率并且也是建表的依据
3、一张表中有且只有一个主键 如果没有设置主键 那么会从上往下搜索直到遇到一个非空且唯一的字段将它自动升级为主键
4、如果表中没有主键也没有其他任何的非空且唯一字段 那么Innodb会采用自己内部提供的一个隐藏字段作为主键,隐藏意味着你无法使用到它 就无法提示查询速度
5、一张表中通常都应该有一个主键字段 并且通常将id/uid/sid字段作为主键
# 单个字段主键create table t5( id int primary key name char(16));# 联合主键(多个字段联合起来作为表的主键 本质还是一个主键)create table t7( ip char(16), port int, primary key(ip,port));
以后在创建表的时候,id字段一定要添加primary key
3.4auto_increment自增
auto_increment一般是为主键服务的,当数据量特别大的时候,可以使用自增。
create table t8( id int primary key auto_increment, name char(16));insert into t8(name) values('haha'),('wawa'),('xixi');
注意:auto_increment通常都是加在主键上的 不能给普通字段加
补充:
delete from t1 删除表中数据后 主键的自增不会停止
truncate t1 清空表数据并且重置主键
结论
以后在创建表的id(数据的唯一标识id、uid、sid)字段的时候可以使用
id int primary key auto_increment
3.1default默认值
# 插入数据的时候可以指定字段create table t1( id int, name char(16));insert into t1(name,id) values('haha',1);
default使用方法
create table t2( id int, name char(8), gender enum('male','female') default 'male' );# 未传就使用默认的insert into t2 (id,name) values(1,'haha')# 传了性别就采用自己传的insert into t2 (id,name) values(2,'wawa','female')
3.2unique唯一
唯一标识,不能重复。
单列唯一
# 单列唯一,给某个字段加唯一标识create table t1( id int unique, name char(16));
联合唯一
# 联合唯一 比如:ip+port# 每个都可以重复,但是加起来不能重复create table t2( id int, ip char(16), port int, unique(ip,port));insert into t4 values(1,'127.0.0.1',8080);insert into t4 values(2,'127.0.0.1',8081);insert into t4 values(3,'127.0.0.2',8080);insert into t4 values(4,'127.0.0.1',8080); 报错
3.3primary key主键
1、primary key = not null + unique
2、除了有约束效果之外 它还是Innodb存储引擎组织数据的依据 Innodb存储引擎在创建表的时候必须要有primary key 因为它类似于书的目录 能够帮助提示查询效率并且也是建表的依据
3、一张表中有且只有一个主键 如果没有设置主键 那么会从上往下搜索直到遇到一个非空且唯一的字段将它自动升级为主键
4、如果表中没有主键也没有其他任何的非空且唯一字段 那么Innodb会采用自己内部提供的一个隐藏字段作为主键,隐藏意味着你无法使用到它 就无法提示查询速度
5、一张表中通常都应该有一个主键字段 并且通常将id/uid/sid字段作为主键
# 单个字段主键create table t5( id int primary key name char(16));# 联合主键(多个字段联合起来作为表的主键 本质还是一个主键)create table t7( ip char(16), port int, primary key(ip,port));
以后在创建表的时候,id字段一定要添加primary key
3.4auto_increment自增
auto_increment一般是为主键服务的,当数据量特别大的时候,可以使用自增。
create table t8( id int primary key auto_increment, name char(16));insert into t8(name) values('haha'),('wawa'),('xixi');
注意:auto_increment通常都是加在主键上的 不能给普通字段加
补充:
delete from t1 删除表中数据后 主键的自增不会停止
truncate t1 清空表数据并且重置主键
结论
以后在创建表的id(数据的唯一标识id、uid、sid)字段的时候可以使用
id int primary key auto_increment