表的约束
* primary key 主键约束
* 单字段主键 :字段名 数据类型 primary key;
* eg: id int primary key;
* 多字段主键 : primary key(字段名1,字段名2);
* eg: primary key(id,name);
* foreign key 外键约束
* 字段名 数据类型 foreign key;
* ed: name varchar(20) foreign key;
* not null 非空约束
* 字段名 数据类型 not null;
* eg:sex varchar(20) not null;
* unique 唯一性约束
* 字段名 数据类型 unique
* eg:QQ varchar(20) unique;
* default 默认值约束
* 字段名 数据类型 default 默认值;
* eg score float default 0;
* 设置表的字段值自动增加
* 字段名 数据类型 auto_increment;
* eg:id int auto_increment;
索引
* 索引:它是对数据库表中一列或多列的值进行排序后的一中结构,作用就是提高表中数据的查询速度
* 创建索引的三种方式
* 创建表的时候创建索引
create table 表名(
字段名 数据类型 [完整性约束条件],
[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY
[别名](字段名1[(长度)]) [ASC|DESC])
);
eg: create table book2(
id int,
name varchar(20),
index (id));
* 使用create index语句在已经存在的表上创建索引
create table book2(
id int,
name varchar(20),
UNIQUE index unique_id(id ASC)
);
* 使用alter table语句在已经存在的表上创建索引
*
alter table 表名 add [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名(字段名[(长度)][(ASC|DESC)])
* 删除索引
*
* alter table 表名 drop index 索引名
* drop index 索引名 on 表名
* 普通索引: 由key和index定义的索引
* 在t1表中的id字段建立索引
create table t1(
id int ,
name varchar(20),
index(id)
);
* 使用create index语句在已经存在的表上建立索引
create index index_name on t1(name);
* 使用alter table语句在已经存在的表上建立索引
alter table t1 add index index_id(id);
* 唯一性索引 :由unique定义的索引
* 为表t2中的id字段添加唯一性索引
create table t2(
id int not null,
name varchar(20) not null,
score float,
unique index unique_id (id ASC)
);
* 使用create index语句在已经存在的表上建立索引
create unique index unique_name on t2(name);
* 使用alter table语句在已经存在的表上建立索引
alter table t2 add unique index unique_id(id);
- 全文索引 : 由fulltext定义的索引
* 为表t3中的name字段创建定义全文索引 create table t3( id int, name varchar(20) not null, score float, fulltext index fulltext_name(name) ) engine=myisam; * 使用create index语句在已经存在的表上建立索引 create fulltext index fulltext_name on t3(name); * 使用alter table语句在已经存在的表上建立索引 alter table t3 add fulltext index fulltext_name(name);
- 单列索引 :指在表中的单个字段上创建索引,可以是普通索引、唯一性索引或者全文索引
* 为表t4中的name字段定义单列索引,并且索引的长度为20 create table t4( id int not null, name varchar(20), score float, index signle_name(name(20)) ); * 使用create index语句在已经存在的表上建立索引 create index single_name on t4(name); * 使用alter table语句在已经存在的表上建立索引 alter table t4 add index index_id(name(20));
- 多列索引 :指在表中多个字段上创建索引,只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用。例如 在grade表中的id、name和score字段上创建一个多列索引,只有查询条件中使用了id字段时,该索引才会被使用
* 为表t5中的name和score定义多列索引 create table t5( id int not null, name varchar(20) not null, score float, index multi(name(20),score) ); * 使用create index语句在已经存在的表上建立索引 create index muitl on t5(name,score); * 使用alter table语句在已经存在的表上建立索引 alter table t5 add index muitl(name(20),score);
- 空间索引 : 由spatial定义的索引。创建空间索引的时候,必须将字段声明为not null
* 为表t6中的space字段定义空间索引 create table t6( id int, space geometry not null, spatial index sp(space) ) engine=myisam; * 使用create index语句在已经存在的表上建立索引 create spatial index space_name on t6(space); * 使用alter table语句在已经存在的表上建立索引 alter table t6 add spatial index sp(space);