1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| """ 约束条件相当于是在字段类型的基础之上添加的额外约束 eg: id int unsigned """ unsigned 让数字没有正负号 zerofill 多余的使用数字0填充 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 """ create table t2( id int, name varchar(32) not null ); default 默认值 """ 所有的字段都可以设置默认值 用户不给该字段传值则使用默认的 否则使用传了的 create table t3( id int default 911, name varchar(16) default 'jason' ); """ unique 唯一值 """ 单列唯一 create table t4( id int, name varchar(32) unique ); 联合唯一 create table t5( id int, host varchar(32), port int, unique(host,port) ); """ 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) ); """ auto_increment 自增 """ 由于主键类似于数据的唯一标识 并且主键一般都是数字类型 我们在添加数据的时候不可能记住接下来的序号是多少 太麻烦 create table user1( id int primary key auto_increment, name varchar(32) ); """ 自增不会因为删除操作而回退 delete from无法影响自增 如果想要重置需需要使用truncate关键字 truncate 表名
|