天天看點

資料庫表的限制和索引

表的限制

*   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);