MySQL之约束条件
创建表的完整语法
语法:
create table 表名( 字段名1 字段类型(数字) 约束条件, 字段名2 字段类型(数字) 约束条件, 字段名3 字段类型(数字) 约束条件 );
注意事项
1、字段名和字段类型是必须的
2、数字和约束条件是可选的 并且 约束条件可以有多个空格隔开即可
3、最后一个语句的结尾不要加逗号
约束条件
约束条件相当于是在字段类型的基础之上添加的额外约束
1、unsigned
让数字没有正负号
2、zerofill
多余的使用数字0填充
3、not null
非空
create table t2( id int, name varchar(32) not null );
新增表数据的方式
方式1:按照字段顺序一一传值
insert into t1 values(1,'jason');
方式2:自定义传值顺序 甚至不传
insert into t1(name,id) values('jason',1); insert into t1(id) values(1); 在MySQL中不传数据 会使用关键字NULL填充意思就是空 类似于python的None
4、default
默认值
所有的字段都可以设置默认值 ,用户不给该字段传值则使用默认的 否则使用传了的
create table t3( id int default 911, name varchar(16) default 'jason' );
5、unique
唯一值
单列唯一
create table t4( id int, name varchar(32) unique );
联合唯一
create table t5( id int, host varchar(32), port int, unique(host,port) );
6、primary key
主键
但从约束层面上来说 相当于是 not null + unique(非空且唯一),在此基础之上还可以加快数据的查询
InnoDB存储引擎规定了一张表必须有且只有一个主键,因为InnoDB是通过主键的方式来构造表的
如果没有设置主键
情况1:
没有主键和其他约束条件,InnoDB会采用隐藏的字段作为主键 不能加快数据的查询
情况2:
没有主键但是有非空且唯一的字段,自动将该字段升级为主键
create table t6( id int, age int not null unique, pwd int not null unique );
总结:以后我们在创建表的时候一定要设置主键,并且主键字段一般都是表的id字段(uid sid pid cid)
create table user( id int primary key, name varchar(32) );
7、auto_increment
自增
由于主键类似于数据的唯一标识 并且主键一般都是数字类型,我们在添加数据的时候不可能记住接下来的序号是多少 太麻烦
create table user1( id int primary key auto_increment, name varchar(32) );
自增的特性
1、自增不会因为删除操作而回退
delete from无法影响自增
2、如果想要重置需需要使用truncate关键字
truncate 表名 # 清空表数据并且重置主键值