mysql索引与视图

课程名称

MySQL数据库技术

实验

成绩

 

实验名称

实验六:索引及视图

学号

 辅导老师;陶荣

姓名

 

班级

 

日期

 

实验目的:

1.掌握索引的使用方法;

2.熟悉视图的概念和作用;

3.掌握视图的创建、查询和更新;

实验平台:

MySQL+SQLyog;

实验内容与步骤:

以下操作均在YGGL数据库中进行。

一、索引的使用:

1. 使用命令对YGGL数据库的Employees表中的DepartmentID列建立普通索引。

2. 在Employees表的Name列和Address列上建立复合索引。

3. 对Departments表上的DepartmentName列建立唯一索引。

4. 使用命令查看表中的索引。

5. 对Employees表上的Address列进行前缀索引,索引值降序排列。

6. 使用CREATE INDEX语句能建立主键吗?

7. 向Employees表中的出生日期添加一个唯一性索引,姓名列和性别列上添加一个复合索引。

8. 假设Departments表没建立主键,使用alter table语句将DepartmentID列设为主键。

9. 使用alter table语句删除Departments表上的主键和所有索引。

 

二、视图练习:

1. 创建YGGL数据库上的视图VIEW_DS,视图包含Departments表的全部列。

2. 使用create or replace语句创建视图VIEW_Employees,视图包含员工号码、姓名和实际收入。

3. 创建视图,包含员工号码、姓名、所在部门名称和实际收入这几列。

4. 从视图VIEW_DS中查询部门号为3的部门名称。

5. 从视图VIEW_Employees中查询出姓名为“王林”的员工的实际收入。

6. 若视图关联了某表中的所有字段,此时该表中添加了新的字段,视图中能否查询到该字段?

    不能,必须重新创建视图才可以查询到

7. 向视图VIEW_DS总插入一行数据:6,财务部,财务管理,查看Departments表中的数据有什么变化?尝试向视图VIEW_Employees中插入一行数据,看看会发生什么情况?

    错误,多个表构成的的视图不可以插入

8. 修改视图VIEW_DS,将部门号为5的部门名称修改为“生产车间”。

9. 修改视图VIEW_Employees中号码为000001的雇员的姓名为“王浩”。

10. 删除VIEW_DS中部门号为“1”的记录。

11. 视图VIEW_Employees中无法插入和删除数据,其中RealIncome字段也无法修改,为什么?

12. 删除视图VIEW_DS。

CREATE INDEX index_DepartmentID ON employees(部门号);

ALTER TABLE employees ADD KEY name_address(姓名,住址);

CREATE UNIQUE INDEX  departments_name ON departments(部门名称);

SHOW CREATE TABLE employees;

ALTER TABLE employees ADD KEY index_zhuzhi(住址 (18) DESC);

CREATE INDEX index_Departmentemployeesemployees ON employees(部门号);

CREATE UNIQUE INDEX date_chusheng ON employees(出生日期);

ALTER TABLE employees ADD KEY name_sex(姓名,性别);

ALTER TABLE departments ADD CONSTRAINT pk_xingming PRIMARY KEY(部门号);

ALTER TABLE departments  DROP PRIMARY KEY;

DROP INDEX index_zhuzhi ON  employees;

CREATE VIEW VIEW_DS AS SELECT* FROM departments;

CREATE or replace VIEW VIEW_Employees

as SELECT e.编号, e.姓名, e.部门号, s.收入 from employees e,salary s

where e.编号=s.编号;

CREATE VIEW ddd AS SELECT e.编号, e.姓名, d.部门名称, s.收入

FROM employees e,departments d,salary s

WHERE e.编号=s.编号 AND e.部门号=d.部门号;

select 部门名称 from VIEW_DS where 部门号=3;

SELECT 收入 FROM `view_employees` where 姓名='王加';

insert into VIEW_DS values(7,'法务部');

/*insert into `view_employees`values(108992,'林夕',7,900);*/

update VIEW_DS set 部门名称='生产车间' where 部门号=3;

update view_employees set 姓名='王浩'where 编号=000001;

delete  from VIEW_DS where 部门号=1;

drop view VIEW_DS;

                    

 

 

 

 

 

 

 

 

 

 

        

      

 

 

 

 

          

 

 

 

 

 

          

 

           

                

 

 

 

 

 

 

 

 

 

 

                    

实验总结(结论或问题分析):

 

   a. 

在创建视图时SELECT语句有那些限制? 

不能使用COMPUTE或者COMPUTE BY子句;除非和TOP子句一起使用,否则,不能使用ORDER BY子句;不能使用INTO关键字;不能使用OPTION子句;不能引用临时表和表变量。 

b. 再创建视图时有哪些注意点? 

1.在CREATE VIEW语句中,不能包括ORDER BY,COMPUTE或者COMPUTE BY 子句也不能出现INTO关键字2.创建视图所参考基表的列数最多为1024列3.创建视图不能参考临时表4.尽量避免使用外连接创建视图5.在一个批处理语句中,CREATE VIEW 语句不能和其他TRANSACT-SQL语句混合使用

 

 

你可能感兴趣的:(Mac)