一、NULL
定义方式:NULL(默认) NOT NULL
二、comment
用来描述字段,会根据创建语句保存,可用show create table 表名; 查看
create table my_tab(
str varchar(10) not null comment '字符串',
num int unsigned not null comment '数字'
);
三、default
用来设置默认值。
create table my_tab(
str varchar(10) not null,
num int unsigned default 10; -- 默认值为10
);
使用方法:
insert into my_tab (str) values ('abc'); -- num会自动设为10
insert into my_tab values ('abc', default); -- 用默认值插入num字段
四、primary key -- 主键
1. 主键特点
① 唯一性,一张表只能有一个字段设为主键
② 主键不允许为NULL
2. 增加主键方式
① 在创建表时,在字段后面跟关键字primary key设置
create table my_tab(
id int primary key,
name varchar(10)
)charset utf8;
② 在创建表时,在所有字段后使用primary key(字段列表)设置复合主键
create table my_tab2(
id int,
number int,
name varchar(10),
primary key(id, number, ...)
)charset utf8;
③ 在已创建好的表中追加主键
alter table my_tab3 modify id int primary key;
alter table my_tab3 add primary key(id, ...);
3. 主键更新与删除
主键无法更新,若想更新主键,只能删除后重新添加。
alter table my_tab3 drop primary key;
五、auto_increment -- 自动增长
1. 自动增长通常与主键搭配使用, 字段设置自动增长后,不给值,或给默认值或NULL的时候,会自动触发,
如果给了值,则当前自增失效,从下一次开始以当前最大值开始自增。
设置为自增长的字段必须是一个索引,且必须是一个整型类型,一张表只能有一个字段被设为auto_increment.
2. 使用方式,在字段后面跟auto_increment关键字
create table my_tab4(
id int auto_increment,
name varchar(10)
)charset utf8;
3. 修改自增长
alter table my_tab4 auto_increment = 值; -- 如果改的值比当前最大值小,则修改无效
4. 查看系统自增长变量
show variables like 'auto_increment%';
可以修改系统变量的值, 但是没什么意义
set auto_increment_increment = 值; -- 修改自增步长
5. 删除自增长
alter table my_tab1 modify id int; -- 修改字段,使其没有auto_increment即可。
六、unique key -- 唯一键
1. 唯一键允许自动为NULL,且可以有多个。如果当前表中没有主键,并有唯一键设为NOT NULL时,会显示第一个NOT NULL的唯一键为PRI,但他本质是唯一键。
2. 增加唯一键
① 在创建时在字段后面跟关键字unique/unique key
create table my_unique1(
id int unique,
num int unique key,
name varchar(10)
)charset utf8;
② 在创建时在所有字段后面增加 unique key(字段列表) -- 复合唯一键MUL
create table my_unique2(
id int,
num int,
name varchar(10)
unique key(id, num)
)charset utf8;
③ 在表创建之后增加唯一键
alter table my_unique3 add unique key(字段列表);-- unique key 或 unique 都可以
alter table my_unique3 modify 字段名 数据类型 unique;
3. 更新与删除唯一键
和主键一样,先删除后添加,因为唯一键可以有多个,所以不删除直接添加也可以。
alter table my_unique drop index 索引名; -- 索引名的默认值为字段名
七、索引
索引的作用: 提高查询效率、约束数据的有效性
1. 主键索引 primary key
2. 唯一键索引 unique key
3. 全文索引 textfill index
4. 普通索引 index