一、创建表时创建索引
创建表时可以创建索引,这种方式最简单、方便。
a、创建 students2 表,stu_num为主键索引,stu_name为唯一性索引(名为name_index),并在stu_address列上前五位字符创建索引(名为address_index)。
mysql> create table if not exists students2(-> stu_num char(20) not null comment'学生学号',-> stu_name char(6) not null comment'学生姓名',-> stu_sex enum('男','女') default'男' comment'学生性别',-> stu_birthday date not null comment'学生出生日期',-> dep_num char(18) not null comment'院系编号',-> stu_address varchar(20) not null comment'学生家庭住址',-> stu_phone varchar(18) not null comment'学生联系电话',-> stu_photo blob comment'学生照片',-> primary key(stu_num),-> unique index name_index(stu_name),-> index address_index(stu_address(5)));

二、用 create index 语句创建索引
如果表已经创建好了,可以用 create index 语句建立索引。
a、创建普通索引。
为便于按地址查询,为 students 表的 stu_address 列上的前6个字符建立一个名为 address_index的升序索引。
mysql> create index address_index on students(stu_address(6) ASC);

为经常作为查询条件的字段建立索引。比如在students表中的 dep_num 字段创建一个名为 dep_num_index 普通索引。
mysql> create index dep_num_index on students(dep_num);

b、创建唯一性索引。
像学生的姓名、专业名称、部门名称、商品名称等之类的字段,一般情况下可建立一个唯一性索引。
在 course (课程表)中的 course_name 列上建立一个名为course_name_index的唯一性索引。
mysql> create unique index course_name_index on course(course_name);

在 teachers (教师表)中的 tea_name 列上建立一个名为 tea_name_index 的唯一性索引。
mysql> create unique index tea_name_index on teachers(tea_name);

c、创建多列索引。
可以在一个索引的定义中包含多个列,中间用逗号隔开,但是它们要属于同一个表,这样的索引叫做多列索引(复合索引)。
在achievement(成绩表)中的 stu_num 和 course_num 列上建立一个名为 stu_course_index 的复合索引。
mysql> create index stu_course_index on achievement(stu_num,course_num);

讨论:
1、对于 char 和 varchar 列,只用该列的一部分就可以创建索引,创建索引时用 col_name(length) 语法,对前缀编制索引。前缀包括每列值的前 length 个字符。blob 和 text 列也可以编制索引,但是必须给出前缀长度。
2、create index 不能创建主键索引,创建主键索引用 alter table ... add primary key()。
3、索引名可以不写,若不写,默认与列名相同。
三、用 alter table 语句创建索引
在已经形成的表中可以用 alter table 语句创建索引。
a、在teachers(教师信息表)中建立tea_num主键索引,建立tea_name和dep_num的复合索引,名为 tea_dep_index,加速表得检索速度。
mysql> alter table teachers-> add primary key(tea_num),-> add index tea_dep_index (tea_num,dep_num);

b、在 departments(院系表)中的dep_num建立名为 dep_num_index唯一性索引。
mysql> alter table departments add unique index dep_num_index(dep_num);





