先建立表mysql
mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT -> );
是最基本的索引,它沒有任何的限制。有如下幾種建立方式sql
(1)直接建立索引:搜索引擎
CREATE INDEX index_name ON table(column(length))
實例:spa
CREATE INDEX test_username ON test (username(10)); -->單列索引code
indexName爲索引名,mytable表名,username和city爲列名,10爲前綴長度,即索引在該列從最左字符開始存儲的信息長度,單位字節blog
若是是CHAR,VARCHAR類型,前綴長度能夠小於字段實際長度;若是是BLOB和TEXT類型,必須指定 前綴長度,下同。索引
(2)修改表結構的方式添加索引ci
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
ALTER TABLE test ADD INDEX test_username(username(10));it
此處 indexName 索引名可不寫,系統自動賦名 username ,username_2 ,username_3,...table
(3)建立表的時候同時建立索引
mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT, -> INDEX test_username (username(10)) -> );
與前面的普通索引相似,不一樣的就是:索引列的值必須惟一,但容許有空值。若是是組合索引,則列值的組合必須惟一。它有如下幾種建立方式:
(1)建立惟一索引
CREATE UNIQUE INDEX indexName ON table(column(length))
實例:
CREATE UNIQUE INDEX test_city ON test(city(10));
(2)修改表結構
ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))
(3)建立表的時候直接指定
mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT, -> UNIQUE test_username (username(10)) -> );
是一種特殊的惟一索引,一個表只能有一個主鍵,不容許有空值。通常是在建表的時候同時建立主鍵索引:
主鍵索引無需命名,一個表只能有一個主鍵。主鍵索引同時但是惟一索引或者全文索引,但惟一索引或全文索引不能共存在同一索引
(1)修改表結構建立
ALTER TABLE test ADD PRIMARY KEY (id);
(2)建立表的時候直接指定
mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT, -> PRIMARY KEY(id) -> );
指多個字段上建立的索引,只有在查詢條件中使用了建立索引時的第一個字段,索引纔會被使用。使用組合索引時遵循最左前綴集合
ALTER TABLE test ADD INDEX test_username_city (username,city);
主要用來查找文本中的關鍵字,而不是直接與索引中的值相比較。fulltext索引跟其它索引大不相同,它更像是一個搜索引擎,而不是簡單的where語句的參數匹配。fulltext索引配合match against操做使用,而不是通常的where語句加like。它能夠在create table,alter table ,create index使用,不過目前只有char、varchar,text 列上能夠建立全文索引。值得一提的是,在數據量較大時候,現將數據放入一個沒有全局索引的表中,而後再用CREATE index建立fulltext索引,要比先爲一張表創建fulltext而後再將數據寫入的速度快不少。
(1)直接建立
CREATE FULLTEXT INDEX full_username ON test (username);
(2)修改表結構添加全文索引
ALTER TABLE test ADD FULLTEXT INDEX full_city (city);
(3)建立表的時候直接指定
mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT, -> FULLTEXT indexName (username(10)) -> );
第一種:show create table test;
第二種:SHOW INDEX FROM test \G;
DROP INDEX index_name ON table;
ALTER TABLE test DROP PRIMARY KEY; -->刪除主鍵
實例:
DROP INDEX test_city ON test;
DROP INDEX full_username ON test;