先創建表
mysql> CREATE TABLE test(
-> id INT,
-> username VARCHAR(16),
-> city VARCHAR(16),
-> age INT
-> );
1.普通索引
是最基本的索引,它沒有任何的限制,有以下幾種創建方式
(1)直接創建索引:
CREATE INDEX index_name ON table(column(length))
實體:
CREATE INDEX test_username ON test (username(10)); -->單列索引
indexName為索引名,mytable表名,username和city為列名,10為前綴長度,即索引在該列從最左字符開始存盤的資訊長度,單位位元組
如果是CHAR,VARCHAR型別,前綴長度可以小于欄位實際長度;如果是BLOB和TEXT型別,必須指定 前綴長度,下同,
(2)修改表結構的方式添加索引
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
ALTER TABLE test ADD INDEX test_username(username(10));
此處 indexName 索引名可不寫,系統自動賦名 username ,username_2 ,username_3,...
(3)創建表的時候同時創建索引
-> id INT,
-> username VARCHAR(16),
-> city VARCHAR(16),
-> age INT,
-> INDEX test_username (username(10))
-> );
2.唯一索引
與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值,如果是組合索引,則列值的組合必須唯一,它有以下幾種創建方式:
(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)創建表的時候直接指定
-> id INT,
-> username VARCHAR(16),
-> city VARCHAR(16),
-> age INT,
-> UNIQUE test_username (username(10))
-> );```
3.主鍵索引
是一種特殊的唯一索引,一個表只能有一個主鍵,不允許有空值,一般是在建表的時候同時創建主鍵索引:
主鍵索引無需命名,一個表只能有一個主鍵,主鍵索引同時可是唯一索引或者全文索引,但唯一索引或全文索引不能共存在同一索引
(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)
-> );
4.組合索引
指多個欄位上創建的索引,只有在查詢條件中使用了創建索引時的第一個欄位,索引才會被使用,使用組合索引時遵循最左前綴集合
ALTER TABLE test ADD INDEX test_username_city (username,city);
5.全文索引
主要用來查找文本中的關鍵字,而不是直接與索引中的值相比較,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))
-> );
6.查看索引
第一種:show create table test;
第二種:SHOW INDEX FROM test \G;
7.洗掉索引
DROP INDEX index_name ON table;
ALTER TABLE test DROP PRIMARY KEY; -->洗掉主鍵
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/68416.html
標籤:MySQL
上一篇:02、對資料庫的操作
下一篇:03、MySql的資料型別
