实验内容与步骤:
以下操作均在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;