列属性
- not null 不允许用null来填充空位
s_age tinyint unsigned not null,当为某个字段设置了not null后,可以设置默认值。 - default 某个字段的默认值
s_age tinyint unsigned not null default 18,或者在插入数据时insert into 表名 values('php003','wangwu',default,default),字符型默认值一般用'',数字型一般用0 - unique 用于约束当前的字段在整列中都是唯一的,不能与
default联合使用 - primary key 主键,唯一,对MySQL来说很重要,主要提现对记录的查找
id int unsigned primary key auto_increment,自增长主键
insert into 表名 values(default,'php002','man') auto_increment必须应用到整形字段并且是primary key或者unique,唯一- 复合主键,
primary key(f1,f2) - 字段备注,
comment '主键',查看备注show create table 表名\G
修改表结构
总的语法: alter table 表名
- add【column】字段名 列类型 列属性 【first | after xx】 添加字段
- drop【column】字段名 删除字段
- add primary key(字段名) 添加主键
- drop primary key 删除主键,如果有auto_increment,要先删除
- add unique(字段名)
- drop key unique 字段名
- modify 字段名 列类型 列属性 【first|after】 修改字段类型
- change 原字段名 新字段名 列类型 列属性 修改字段名
字段的列类型和列属性也要重写,不然会变成删除 - rename 重命名表
复制表结构
- create table 表B like 表A;
使用表A的结构创建一个表B - create table 表名 select * from 表名 where ...;
用查询结果创建一个表 - update 表名 set 字段=值【where子句】【limit子句】
用于将where子句匹配到记录,仅更改limit子句限制的条数 - delete from 表名【where子句】【limit子句】
删除where子句和limit子句限制的数据 - insert into 表A【(字段列表)】 select 字段列表 from 表B;
批量插入,将表B查询的语句放入表A中 -
蠕虫复制是批量插入的一个特殊情况,在使用批量插入语句时,如果插入的表与数据查询的表是同一个表 - insert into 表名 【(字段列表)】 values(值列表) on duplicate key update 字段=值,字段=值...
冲突更新, - replace into 表名【(字段列表)】 values(值列表)
冲突替换, - delete from 表名
清空表,只会清空数据,不会重建索引。 - truncate 表名,彻底清空数据,重建索引。