MySQL-创建表时建立索引和在已存在表中添加索引

MySQL提供了多种在单列或多列上创建索引的方法:一种是在创建表时指定索引列;另一种是使用ALTER TABLE 语句在已存在的表上创建索引,或者使用CREATE INDEX 在已存在的表上创建索引。

1. 在 创建表时创建【普通】索引

语法格式为:

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. 在已存在表中添加索引

**
基本语法分两种,第一种语法为

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 在已存在表中创建索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值