表的限制
* 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);