2、zerofill(零填充)3、unsigned(无符号)4、default 默认值
## 补充知识点 插入数据的时候可以指定顺序
create table t1(
id int,
name varchar(16)
);
insert into t1(id,name) values(1,'egon');
create table t2(
id int,
name varchar(16),
gender enum('male','female','others') default 'male'
);
insert into t2(id,name) values(1,'egon');=>gender默认字段位male
insert into t2(id,name) values(1,'egon','female'); 5、unique唯一
# 单列唯一
create table t3(
id int unique,
name varchar(16)
);
insert into t3 values(1,'jason'),(1,'egon');
insert into t3 values(1,'jason'),(2,'egon');
# 联合唯一
"""
ip和port
"""
id ip port
1 1 2
2 1 2
3 1 2
create table t4(
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',8081;
insert into t4 values(3,'127.0.0.2',8080); =>错误6、primary key 主键
"""
1、单单从约束效果来看primary key 等价于not null +unique
非空且唯一!!!
"""
create table t5(id int primary key);
insert into t4 values(null); =》报错
insert into t4 values(1),(1); =》报错
insert into t4 values(1),(2);
"""
2、他除了有约束效果之外 他还是Innodb存储引擎组织数据的依据
Innodb存储引擎在创建表的时候必须有primary key
因为他类似与书的目录 能够帮助提示查询效率并且也是建表的依据
"""
# 1、一张表有且只有一个主键 如果你没有设置主键 那么会从上往下搜索,直到遇到一个非空且唯一的字段将他自动升级位主键
create table t6(
id int,
name char(16),
age not null unique,
addr not null unique
);
# 2、如果表中没有主键也有其他任何非空且唯一字段 那么Innodb会采用自己内部提供的一个隐藏字段作为主键,隐藏以为这你无法使用他,也无法提升查询速度
# 3、一张表中通常都应该有一个主键字段 通常以id字段作为主键
create table t5(
id int primary key
name char(16)
);
#### 4、联合主键(多个字段联合起来作为表的主键 本质还是一个主键)
create table t4(
ip char(16),
port int,
primary key(ip,port) # 放到最后写辨识度高一点
);
"""
也就以为这 以后我们在创建表的时候一定要添加primary key
"""7、auto_increment自增
# 当编号特别多的时候 人为的去维护太麻烦,完整语法如下
create table t8(
id int primary key auto_increment,
name char(16),
);
insert into t8(name) values('jason'),('egon'),('kevin');
## 注意auto_increment 通常都是加载主键(序号、编号),不能给普通字段会报错
## 补充
delete from 在删除主键自增不会停止
如果主键的值被清除,下次在添加的时候还是会接着上一次的自增,因为内部维护了一个计数器
truncate 表
这个命令可以清除数据,并且充值主键8、结论
"""
以后在创建表的id(数据的唯一标识id、uid、sid)字段的时候
id int primary key auto_increment
"""