实验3 索引和约束
实验目的:
1.掌握索引的使用方法
2.掌握约束的实现方法。
实验要求:
了解索引和约束的相关知识。
实验内容:
1. 创建和删除索引
2. 创建和删除约束
实验步骤:
说明:按实验步骤对数据库YGGL中的三个表进行操作,三个表结构如下(具体参看实验2):
Departments (DepartmentID,DepartmentName,Note)
Employees (EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,DepartmentID)
Salary(SalaryID,InCome,OutCome,Time, EmployeeID)
要求:完成实验步骤中的SQL。
1. 使用CREATE INDEX语句创建索引和约束
(1)对YGGL数据库上的Employees表中的Birthday列建立索引in_birth。
Create index in_birth on Employees(Birthday);
(2)在Employees表的Name列和Address列上建立复合索引in_name。
Create index in_name on Employees(Name,Address);
(3)在Departments表的DepartmentName列建立唯一性索引in_depname。
Create unique index in_depname on Departments(DepartmentName);
(4)使用SHOW INDEX语句查看Employees表的索引。
Show index from Employees;
创建唯一约束sql语句注:5.6免安装版show indexs from Employees;出错
(5)使用SHOW INDEX语句查看Departments表的索引。
Show index from Departments;
2.使用ALTER TABLE语句向表中添加索引和约束
(1)向Employees表中的出生日期列添加一个唯一性索引,姓名列和性别列添加一个复合索引。
Alter table Employees add constraint unique index index_Birthday(Birthday);
Alter table Employees add index index_name_sex(Name,Sex);
(2)删除表Departments的主键。
Alter table Departments drop primary key;
(3)将表Departments的DepartmentID列设为主键。
Alter table Departments add primary key DepartmentID;
(4)删除表salary的现有的外键。
Alter table Salary drop foreign key EmployeesID;
(5)为表salary添加适合的外键。
Alter table salary add foreign key(EmployeesID) references employees(EmployeesID);
3.在创建表时创建索引和约束
创建与表Departments表相同结构的表Departments1,将DepartmentName列设为主键, DepartmentID列上建立一个索引
Create table Departments1 select * from Departments;
Alter table Departments1 drop primary key;
Alter table Departments1 add primary key DepartmentName;
4. 用适合的方法完成下面的操作
(1)创建一个表Employees3,只含EmployeeID,Name,Sex和Education列。将Name设为主键,EmployeeID为唯一索引
Create table Employees3 select EmployeeID,Name,Sex,Education from Employees;
Alter table Employees3 drop primary key;
Alter table Employees3 add primary key Name;
Alter table Employees3 add unique index unindex_employeeID(EmployeeID);
(2) 创建一个表Salary1,要求所有Salary1表上出现的EmployeeID都要出现在Salary表中,利用完整性约束实现,要求当删除或修改Salary表上的EmployeeID列时,Salary1表中的EmployeeID值也会随之变化。
Create table salary1 select * from salary foreign key reference Salary(EmloyeeID) cascade;
(3) 将表Salary中的数据插入到表Salary1中。
Insert into salary1 * select * from salary;
(4) 删除或更新表Salary中的数据时,观察表Salary1中的数据有何变化?
Update salary set salaryID=’1123’;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论