建立索引和创建视图(结合YGGL.sql)
Posted beliss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了建立索引和创建视图(结合YGGL.sql)相关的知识,希望对你有一定的参考价值。
一.请按要求对YGGL库建立相关索引
(1)使用create index 语句创建索引
1.对employees表中的员工部门号创建普通索引depart_ind.
mysql> create index depart_ind
-> on employees(员工编号);
Query OK, 12 rows affected (0.04 sec)
Records: 12 Duplicates: 0 Warnings: 0
2.对 employees表中的姓名和地址创建复合索引 ad_ind.
mysql> create index ad_ind on employees(姓名,地址);
Query OK, 12 rows affected (0.00 sec)
Records: 12 Duplicates: 0 Warnings: 0
3.对 departments表中的部门名称创建唯一索引.
mysql> create unique index department_index
-> on departments(部门名称);
Query OK, 5 rows affected (0.04 sec)
Records: 5 Duplicates: 0 Warnings: 0
(2) 使用alter table 语句添加索引
1.对employees表中的出生日期添加一个唯一索引date_ind,姓名和性别添加一个复合索引na_ind.
mysql> alter table employees add unique index date_ind(出生日期),
-> add index na_ind(姓名,性别);
Query OK, 12 rows affected (0.03 sec)
Records: 12 Duplicates: 0 Warnings: 0
2.对 departments 表中的部门编号创建主键索引.
mysql> alter table departments
-> add primary key 部门编号_index(部门编号);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
(3) 创建表的同时创建索引
创建表cpk(产品编号,产品名称,单价,库存量),并对产品编号创建主键,在库存量和单价上创建复合索引cpk_fh.
mysql> create table cpk(
-> 产品编号 char(20)not null ,产品名称 varchar(30),单价 decimal(10,2),库存量 int(10),
-> primary key (产品编号),
-> index cpk_fh(库存量,单价));
Query OK, 0 rows affected (0.03 sec)
二.显示employees表的索引情况
三.删除索引
(1)使用drop 方式删除索引
1.删除employees表中的员工部门号的索引
mysql> drop index depart_index on employees;
Query OK, 12 rows affected (0.00 sec)
Records: 12 Duplicates: 0 Warnings: 0
(2)使用alter 方式删除索引
2.删除employees表中姓名和性别的复合索引na_ind
mysql> drop index na_ind on employees;
Query OK, 12 rows affected (0.00 sec)
Records: 12 Duplicates: 0 Warnings: 0
四、简述索引的优缺点
优:(1)通过创建唯一性索引,可以保证数据记录的唯一性。
(2)可以大大加快数据的检索速度。
(3) 可以加快表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。
(4)在使用ORDEY BY 和GROUP BY子句进行数据检索时,可以显著减少查询中分组和排序的时间。
(5)使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。
缺:检索引带来的查找速度的提高也是有代价的,因为索引要占用存储空间,而且为了维护索引的有效性,向表中插入数据或者更新数据时,数据库还要执行额外的操作来维护索引
五、创建视图
1.创建视图emp_view,包含所有男员工的员工编号,姓名,工作年限和学历.
mysql> create or replace view emp_view
-> as
-> select 员工编号,姓名,工作年限,学历
-> from employees
-> where 性别=1;
Query OK, 0 rows affected (0.00 sec)
2.从emp_view视图中查询工作年限在两年以上的员工信息。
mysql> select * from emp_view
-> where 工作年限>2;
+--------------+-----------+--------------+--------+
| 员工编号 | 姓名 | 工作年限 | 学历 |
+--------------+-----------+--------------+--------+
| 000001 | 王林 | 8 | 大专 |
| 010008 | 伍容华 | 3 | 本科 |
| 102201 | 刘明 | 3 | 本科 |
| 302566 | 李玉珉 | 3 | 本科 |
+--------------+-----------+--------------+--------+
4 rows in set (0.00 sec)
以上是关于建立索引和创建视图(结合YGGL.sql)的主要内容,如果未能解决你的问题,请参考以下文章