MySQL提供了多种在单列或多列上创建索引的方法:一种是在创建表时指定索引列;另一种是使用ALTER TABLE 语句在已存在的表上创建索引,或者使用CREATE INDEX 在已存在的表上创建索引。
语法格式为:
CREATE TABLE Y1 (
COLUMN_NAME DATA_TYPE SCHEME,
[UNIQUE | FULLTEXT | SPATIAL] [INDEX | KEY ] INDEX_NAME([LENGTH],.....) [ASC | DESC]
)
UNIQUE | FULLTEXT | SPATIAL 这三个是可选项,UNIQUE 为唯一索引,FULLTEXT 为全文索引,SPATIAL 为空间索引,其中FULLTEXT 和SPATIAL InnoDB 存储引擎不支持,MyISAM存储引擎支持;INDEX 和 KEY 为同义词,创建索引时使用它们中任何一个都可以,INDEX_NAME 为索引名称,可选参数,如果不指定,缺省(默认值)为COLUMN_NAME ,LENGTH 为可选参数,可以指定索引的长度,需注意的是,只有字符串类型的列才能指定索引长度,ASC 或 DESC 指定升序或者降序的索引值存储。
使用INDEX 创建 SQL:
```sql
CREATE TABLE Y1 (
ID INT (10) AUTO_INCREMENT NOT NULL,
NAME VARCHAR (20) NOT NULL,
SEX INT (1) NOT NULL DEFAULT 0,
INDEX IDX (ID)
)
--创建普通索引
CREATE TABLE T4 (
ID INT NOT NULL,
NAME CHAR(30) NOT NULL,
AGE INT NOT NULL,
INFO VARCHAR(255),
FULLTEXT INDEX FULLTEXTIDX(INFO)
) ENGINE=MyISAM
-- FullText 全文索引,需指定存储引擎为MyISAM,MySQL默认存储引擎为InnoDB
CREATE TABLE T5 (
G GEOMETRY NOT NULL,
SPATIAL INDEX SPATINDEX (G)
) ENGINE = MYISAM
-- SPATIAL 创建空间索引,需指定存储引擎为MyISAM,MySQL默认存储引擎为InnoDB
-- 创建唯一索引
CREATE TABLE Y3(
ID INT NOT NULL,
NAME CHAR(20),
UNIQUE INDEX UNIQUEIDX(ID)
)ENGINE = INNODB
-- 创建组合索引
CREATE TABLE Y4(
ID INT NOT NULL,
NAME CHAR(20),
AGE INT NOT NULL,
INDEX MULTIIDX(ID,NAME(19),AGE)
) ENGINE= INNODB
使用KEY创建索引 SQL
CREATE TABLE Y2 (
ID INT NOT NULL,
NAME VARCHAR (233) NOT NULL,
KEY IDX (ID)
) ENGINE = INNODB DEFAULT CHARSET = UTF8
--用KEY创建普通索引
**
**
基本语法分两种,第一种语法为
2.1:
ALTER TABLE TABLE_NAME ADD [UNIQUE | FULLTEXT | SPATIAL] [INDEX | KEY ] INDEX_NAME(COLUMN_NAME(LENGTH),.....) [ASC | DESC]
SQL:
ALTER TABLE t1 ADD UNIQUE INDEX ALTERIDX(NAME)
-- 使用ALTER TABLE 语句创建索引
2.2:
第二种语法为:
CREATE [UNIQUE | FULLTEXT | SPATIAL] [INDEX | KEY ] INDEX_NAME ON TABLE_NAME(COLUMN_NAME(LENGTH),.....) [ASC | DESC]
SQL :
CREATE UNIQUE INDEX CREIDX ON t4(NAME(20))
-- 使用CREATE INDEX 在已存在表中创建索引