页次: 1
索引的创建,可以在三个地方,创建。
第一: 创建表的时候,指定。
第二: 修改表
第三: 表创建好后,增加索引。
实例
创建表的时候创建索引
创建一个唯一索引
mysql> create table tb1 ( age int, name char(20) , index(name)); Query OK, 0 rows affected (0.46 sec)
查看一下表的结构
mysql> desc tb1; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | age | int(11) | YES | | NULL | | | name | char(20) | YES | MUL | NULL | | +-------+----------+------+-----+---------+-------+ 2 rows in set (0.03 sec)
可以看到,key 是 MUL. 创建成功。
查看一下创建的语句
mysql> show create table tb1; +-------+-------------------------------- | Table | Create Table +-------+-------------------------------- | tb1 | CREATE TABLE `tb1` ( `age` int(11) DEFAULT NULL, `name` char(20) DEFAULT NULL, KEY `name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+-------------------------------- 1 row in set (0.00 sec)
这里可以看到 有个 key `name` (`name`)
第一个name是索引的名字, 第二个是表中字段。
可以看下面的例子
mysql> create table tb1_1 (age int , name char(20) , key `tname` (`name`)); Query OK, 0 rows affected (0.47 sec) mysql> desc tb1_1; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | age | int(11) | YES | | NULL | | | name | char(20) | YES | MUL | NULL | | +-------+----------+------+-----+---------+-------+ 2 rows in set (0.02 sec)
可以看看创建表的语句是什么
mysql> show create table tb1_1; +-------+-------------------------------- | Table | Create Table +-------+-------------------------------- | tb1_1 | CREATE TABLE `tb1_1` ( `age` int(11) DEFAULT NULL, `name` char(20) DEFAULT NULL, KEY `tname` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+-------------------------------- 1 row in set (0.00 sec)
当然这样可以创建普通的索引
mysql> create table tb1_2( age int , name char(20), key (`name`) );
给索引起个名字
create table tb1_3( age int , name char(20), key `namex` (`name`) );
创建唯一索引: 可以使用 unique ,或者 unique index
mysql> create table tb_2 ( age int , name char(20), unique index (name)); Query OK, 0 rows affected (0.33 sec) mysql> create table tb_21 ( age int , name char(20), unique (name)); Query OK, 0 rows affected (0.42 sec) mysql> create table tb_22 ( age int , name char(20), unique `xxx_name` (name)); Query OK, 0 rows affected (0.40 sec)
创建主键索引:
mysql> create table tb_3 (age int primary key ); Query OK, 0 rows affected (0.31 sec) mysql> desc tb_3; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | age | int(11) | NO | PRI | NULL | | +-------+---------+------+-----+---------+-------+ 1 row in set (0.00 sec)
创建全文索引
mysql> create table tb_4 ( name varchar(20) , fulltext index (name)); Query OK, 0 rows affected (0.77 sec)
ipbbs.net
离线
页次: 1