实验6 索引和数据完整性
实验类型: 验证型 实验课时: 2 指导教师: 时 间:20 年 月 日 课 次:第 节 教学周次:第 周 实验分室: 实验台号: 实 验 员:
实验目的:
1.掌握索引的使用方法 2.掌握数据完整性的实现方法。
实验要求:
了解索引和数据完整性的相关知识。
实验内容:
1. 创建索引 2. 删除索引 3. 数据完整性
实验步骤:
说明:按实验步骤对数据库YGGL中的三个表进行操作,三个表结构如下(具体参看实验2): Departments (DepartmentID,DepartmentName,Note) Employees
(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,DepartmentID)
Salary(SalaryID,InCome,OutCome,Time, EmployeeID) 要求:将实验步骤中有底纹部分填上正确的SQL。
1. 创建索引
a) 使用CREATE INDEX语句创建索引
(1)对YGGL数据库上的Employees表中的Birthday列建立索引in_birth。
(2)在Employees表的Name列和Address列上建立复合索引in_name。
20
(3)在Departments表的DepartmentName列建立唯一性索引in_depname。
(4)使用SHOW INDEX语句查看Employees表的索引。
(5)使用SHOW INDEX语句查看Departments表的索引。
b) 使用ALTER TABLE语句向表中添加索引
(1)向Employees表中的出生日期列添加一个唯一性索引,姓名列和性别列添加一个复合索引。
(2)删除表Departments的主键。
(3)将表Departments的DepartmentID列设为主键。
c) 在创建表时创建索引
创建与表Departments表相同结构的表Departments1,将DepartmentName列设为主键, DepartmentID列上建立一个索引
21
d) 界面方式创建索引 2. 删除索引
(1)使用DROP INDEX语句删除表Employees上的索引in_birth。
(2)使用ALTER TABLE删除表Departments的主键和索引in_depname。
3. 数据完整性
(1)创建一个表Employees3,只含EmployeeID,Name,Sex和Education列。将Name设为主键,EmployeeID为替代键
(2) 创建一个表Salary1,要求所有Salary1表上出现的EmployeeID都要出现在Salary表中,利用完整性约束实现,要求当删除或修改Salary表上的EmployeeID列时,Salary1表中的EmployeeID值也会随之变化。
(3) 将表Salary中的数据插入到表Salary1中。
(4) 删除或更新表Salary中的数据时,观察表Salary1中的数据有何变化?
(5)创建一个表Employees4,只考虑号码和性别列,性别只能包含男或女。
22
实验7 MySQL语言结构
实验类型: 验证型 实验课时: 2 指导教师: 时 间:20 年 月 日 课 次:第 节 教学周次:第 周 实验分室: 实验台号: 实 验 员:
实验目的:
1.掌握常量的分类及使用 2.掌握变量的分类及使用 3.掌握各种运算符和表达式 4.掌握系统函数的使用
实验要求:
了解MySQL支持的各种数据类型 了解MySQL各种运算符的功能及使用方法 了解MySQL系统内置函数的作用
实验内容:
1. 常量的使用 2. 变量的使用 3. 运算符的使用 4. 系统函数的使用
实验步骤:
说明:按实验步骤对数据库YGGL中的三个表进行操作,三个表结构如下(具体参看实验2): Departments (DepartmentID,DepartmentName,Note) Employees
(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,DepartmentID)
Salary(SalaryID,InCome,OutCome,Time, EmployeeID) 要求:将实验步骤中紫色底纹部分填上正确答案。
2. 常量的使用 (1) 计算194和142的乘积
SELECT 194*142;
23
(2) 获取以下这串字母的值:'I\\nlove\\nMySQL'
SELECT 'I\\nlove\\nMySQL';
3. 系统变量的使用 (1) 获取现在的MySQL版本号
SELECT @@VERSION;
(2) 获取当前的系统时间
SELECT CURRENT_TIME;
(3) 获取当前的系统日期
4. 用户变量的使用
(1) 参照YGGL数据库,创建一个名为female的用户变量,并在SELECT语句中使用该局部变量查找表中所有女职工的编号,姓名。
USE YGGL; SET @female=0;
SELECT EmployeeID,Name FROM Employees WHERE sex=@female;
(2) 定义一个变量,用于获取号码为102201的员工的电话号码。
SET @phone=(SELECT PhoneNumber
FROM Employees WHERE EmployeeID='102201');
查询变量phone的值。
(3) 定义一个变量,用于描述YGGL数据库中的Salary表中员工000001的实际收入,然后查询该变量。
5. 运算符的使用
(1) 使用算术运算符“-”查询员工的实际收入。
SELECT InCome-OutCome FROM Salary;
(2) 使用比较运算符“>”Employees表中工作时间大于5年的员工信息。
SELECT * FROM Employees WHERE year(now())-year(WorkYear)>5;
24