一、练习要求
① 登录MySQL数据库
② 创建数据库index_test
③ 创建表test_table1
④ 创建表test_table2,存储引擎为MyISAM
⑤ 使用ALTER TABLE语句在表test_table2的birth字段上建立名为ComDataIdx的普通索引
⑥ 使用ALTER TABLE语句在表test_table2的id字段上添加名为UniqIdx2的唯一索引,并以降序排列。
⑦ 使用CREATE INDEX语句在firstname、middlename和lastname三个字段上建立名为MultiColIdx2的组合索引。
⑧ 使用CREATE INDEX语句在title字段上建立名为FTIdx的全文索引。
⑨ 使用ALTER TABLE语句删除表test_table1中名为UniqIdx的唯一索引
⑩ 使用DROP INDEX语句删除表test_table2中名为MultiColIdx2的组合索引
test_table1
字段名 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
---|---|---|---|---|---|---|
id | int(11) | 否 | 否 | 是 | 是 | 是 |
name | CHAR(100) | 否 | 否 | 是 | 否 | 否 |
address | CHAR(100) | 否 | 否 | 否 | 否 | 否 |
description | CHAR(100) | 否 | 否 | 否 | 否 | 否 |
test_table2
字段名 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
---|---|---|---|---|---|---|
id | int(11) | 是 | 否 | 是 | 是 | 否 |
firstname | CHAR(50) | 否 | 否 | 是 | 否 | 否 |
middlename | CHAR(50) | 否 | 否 | 是 | 否 | 否 |
lastname | CHAR(50) | 否 | 否 | 是 | 否 | 否 |
birth | DATE | 否 | 否 | 是 | 否 | 否 |
title | CHAR(100) | 否 | 否 | 否 | 否 | 否 |
二、操作记录
创建数据库index_test
mysql> CREATE database index_test;
Query OK, 1 row affected (0.00 sec)
mysql> USE index_test;
Database changed
mysql>
创建表test_table1
mysql> CREATE TABLE test_table1
-> (
-> id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
-> name CHAR(100) NOT NULL,
-> address CHAR(100) NOT NULL,
-> description CHAR(100) NOT NULL,
-> UNIQUE INDEX UniqIdx(id),
-> INDEX MultiColIdx(name(20), address(30)),
-> INDEX ComIdx( description(30) )
-> );
Query OK, 0 rows affected (0.33 sec)
mysql>
mysql> SHOW CREATE table test_table1 \G
*************************** 1. row ***************************
Table: test_table1
Create Table: CREATE TABLE `test_table1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(100) NOT NULL,
`address` char(100) NOT NULL,
`description` char(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UniqIdx` (`id`),
KEY `MultiColIdx` (`name`(20),`address`(30)),
KEY `ComIdx` (`description`(30))
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql>
创建表test_table2,存储引擎为MyISAM
mysql> CREATE TABLE test_table2
-> (
-> id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
-> firstname CHAR(100) NOT NULL,
-> middlename CHAR(100) NOT NULL,
-> lastname CHAR(100) NOT NULL,
-> birth DATE NOT NULL,
-> title CHAR(100) NULL
-> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.04 sec)
mysql> SHOW CREATE table test_table1 \G
*************************** 1. row ***************************
Table: test_table1
Create Table: CREATE TABLE `test_table1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(100) NOT NULL,
`address` char(100) NOT NULL,
`description` char(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `MultiColIdx` (`name`(20),`address`(30)),
KEY `ComIdx` (`description`(30))
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql>
使用ALTER TABLE语句在表test_table2的birth字段上建立名为ComDataIdx的普通索引
mysql> ALTER TABLE test_table2 ADD INDEX ComDateIdx(birth);
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
使用ALTER TABLE语句在表test_table2的id字段上添加名为UniqIdx2的唯一索引,并以降序排列。
mysql> ALTER TABLE test_table2 ADD UNIQUE INDEX UniqIdx2 (id DESC) ;
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
mysql>
使用CREATE INDEX语句在firstname、middlename和lastname三个字段上建立名为MultiColIdx2的组合索引。
mysql> CREATE INDEX MultiColIdx2 ON test_table2(firstname, middlename, lastname);
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
mysql>
使用CREATE INDEX语句在title字段上建立名为FTIdx的全文索引。
mysql> CREATE FULLTEXT INDEX FTIdx ON test_table2(title);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
使用ALTER TABLE语句删除表test_table1中名为UniqIdx的唯一索引
mysql> ALTER TABLE test_table1 DROP INDEX UniqIdx;
Query OK, 0 rows affected (0.18 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
使用DROP INDEX语句删除表test_table2中名为MultiColIdx2的组合索引
mysql> DROP INDEX MultiColIdx2 ON test_table2;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
网友评论