文章目录世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
- MySQL的约束和索引
- 主键约束
- 唯一约束
- 外键约束
- 非空约束
- 默认值约束
- 索引
- 自增列
-
特点
- 唯一
- 非空
- 索引
-
语法
-
create table
(
id int primary key
);create table
(
id int,
mobile char(11),
primary key (id, mobile)
);alter table
add primary key (col1, col2, …);
唯一约束使用
- 建表t_3,同时指定id为主键
create table `t_3` ( `id` int primary key );- 建表t_4,同时指定id和mobile为主键
create table `t_4` ( `id` int, `mobile` char(11), primary key (`id`, `mobile`) );- 建表t_5,后续添加主键id和name
create table `t_5` ( `id` int, `name` varchar(255) ); alter table `t_5` add primary key (`id`, `name`);-
特点
- 唯一
- 可为空
- 索引
-
语法
-
create table
(
name varchar(255) unique
);create table
(
name varchar(255),
unique index (name)
);alter table
add unique (col1, col2, …);
外键约束使用
- 创建表t_6,字段id使用主键约束,字段name使用唯一约束
create table `t_6` ( `id` int primary key, `name` varchar(255) unique );- 创建表t_7,指定唯一约束name
create table `t_7` ( `id` int primary key, `name` varchar(255), unique index (name) );- 创建表t_8,然后添加唯一约束name
create table `t_8` ( `id` int primary key, `name` varchar(255) ); alter table `t_8` add unique (name);-
特点
- 约束两表之间的关系
-
语法
-
create table
(
id int primary key,
sub_id int,
name varchar(255),
foreign key (sub_id) references t_sub (id);
);alter table
add foreign key (sub_id) references t_sub (id);
alter table
drop foreign key
; 非空约束使用
- 创建t_9和t_10表,并将t_9的主键作为t_10的外键
create table `t_9` ( id int primary key ); create table `t_10` ( `id` int primary key, `t_9_id` int, foreign key (`t_9_id`) references `t_9` (`id`) ); show create table `t_10`;- 创建t_11表,然后添加t_9主键为外键
create table `t_11` ( `id` int primary key, `t_9_id` int ); alter table `t_11` add foreign key (`t_9_id`) references `t_9` (`id`); show create table `t_11`;- 删除外键约束
alter table `t_11` drop foreign key `t_11_ibfk_1`; show create table `t_11`;
-
特点
- 限制字段非空
-
语法
- create table
(
id int primary key,
name varchar(255) not null
); 默认值约束使用
- 创建t_12,name设置为非空
create table `t_12` ( id int primary key, name varchar(255) not null ); describe `t_12`;-
特点
- 为字段设置默认值
-
语法
- create table
(
id int primary key,
name varchar(255) default ‘hello’;
); 索引使用
- 创建t_13,name默认值为hello
create table `t_13` ( id int primary key, name varchar(255) default 'hello' ); describe `t_13`;-
特点
- 为字段添加索引以提高查询速度
-
语法
-
create table
(
id int primary key,
name varchar(255),
index (name)
);create index
on
-
- create table
- create table
-
-
-



