一、实验目的
1、理解索引的概念与类型;
2、掌握创建、更改、删除索引的方法;
3、掌握维护索引的方法;
4、理解视图的概念;
5、掌握创建、更改、删除视图的方法;
6、掌握使用视图来访问数据的方法;
二、实验环境
装有软件MySQL5.7或更高版本的PC电脑一台;
三、实验步骤及实验要求
按照下面的实验内容要求完成作业,将作业结果的每一步截图粘贴到word文档中即可。每一个实验都必须编写实验报告,要求如下:
1、实验报告用word编写;
2、word文件命名的格式统一要求:为以“杨健”同学19号为例,他所做的第4次实验的实验报告应该命令为:“DB实验4— 19号—杨健”(即格式是:实验序号—课内序号—姓名);课内序号现在是一个人一门课一个号,同一个人在不同课序号会不同,回头我会将课程名单发到群里,自己查阅你自己在本门课中的序号。
3、实验报告用统一的封面,封面模板到时发给大家;
4、报告中截取每题主要步骤结果的截图、实验结果截图;
5、实验报告最后要加上实验总结,总结部分必须写出自己的切身体会;
6、实验报告如有雷同、抄袭现象,后果自负;
7、实验报告上交截止时间:上机后一周之内;
8、实验上交方式:由学委收集齐全后,统一交付老师:
四、实验内容
1、JobDB数据库中有登录用户信息【userlogin】表和个人信息【information】表,具体如表结构所示。
USERLOGIN 表的结构
字段名 | 字段描述 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
---|---|---|---|---|---|---|---|
id | 编号 | INT(4) | 是 | 否 | 是 | 是 | 是 |
name | 用户名 | VARCHAR(20) | 否 | 否 | 是 | 否 | 否 |
Password | 密码 | VARCHAR(20) | 否 | 否 | 是 | 否 | 否 |
info | 附加信息 | TEXT | 否 | 否 | 否 | 否 | 否 |
information表的结构
字段名 | 字段描述 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
---|---|---|---|---|---|---|---|
id | 编号 | INT(4) | 是 | 否 | 是 | 是 | 是 |
Name | 姓名 | VARCHAR(20) | 否 | 否 | 是 | 否 | 否 |
Sex | 性别 | VARCHAR(4) | 否 | 否 | 是 | 否 | 否 |
Birthday | 出生日期 | DATE | 否 | 否 | 否 | 否 | 否 |
Address | 家庭地址 | VARCHAR(50) | 否 | 否 | 否 | 否 | 否 |
Tel | 电话号码 | VARCHAR(20) | 否 | 否 | 否 | 否 | 否 |
pic | 照片 | BLOB | 否 | 否 | 否 | 否 | 否 |
请在上述2表上完成如下操作:
create table userlogin
(
id INT(4),
`name` VARCHAR(20),
`Password` VARCHAR(20),
info TEXT,
primary key (id)
);
create table information
(
id INT(4),
`name` VARCHAR(20),
sex VARCHAR(4),
birthday DATE,
address VARCHAR(50),
tel VARCHAR(20),
pic BLOB,
primary key (id)
);
1)在name字段创建名为index_name的索引;
CREATE INDEX index_name
ON userlogin(name);
CREATE INDEX index_name
ON information(name);
2)在birthday和address两个字段上创建名为index_bir的多列索引;
CREATE INDEX index_bir
ON information(birthday,address);
3)用 ALTER TABLE 语句创建名为index_id的惟一性索引;
ALTER TABLE userlogin
ADD UNIQUE index_id(id);
ALTER TABLE information
ADD UNIQUE index_id(id);
4)删除 userlogin 表上的index_ userlogin 索引;
SHOW INDEX FROM userlogin;
CREATE INDEX index_userlogin
ON userlogin(name);
DROP INDEX index_userlogin ON userlogin;
5)查看 userlogin 表的结构;
DESCRIBE userlogin;
DESC userlogin;
6)删除information 表上的index_name索引;
SHOW INDEX FROM information;
DROP INDEX index_name ON information;
7)查看information表的结构;
DESCRIBE information;
DESC information;
2、在JobDB数据库中,有聘任人员信息表【Work_lnfo】表,其表结构如下表所示:
字段名 | 字段描述 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
---|---|---|---|---|---|---|---|
Id | 编号 | INT(4) | 是 | 否 | 是 | 是 | 否 |
Name | 名称 | VARCHAR(20) | 否 | 否 | 是 | 否 | 否 |
Sex | 性别 | VARCHAR(4) | 否 | 否 | 是 | 否 | 否 |
Age | 年龄 | INT(4) | 否 | 否 | 否 | 否 | 否 |
Address | 家庭地址 | VARCHAR(50) | 否 | 否 | 否 | 否 | 否 |
Tel | 电话号码 | VARCHAR(20) | 否 | 否 | 否 | 否 | 否 |
create table Work_lnfo
(
id INT(4) unique key,
`name` VARCHAR(20) not null,
sex VARCHAR(4) not null,
age INT(4),
address VARCHAR(50),
tel VARCHAR(20),
primary key (id)
);
-- 1.'张明','男',19,'北京市朝阳区','1234567'
-- 2.'李广','男',21,'北京市昌平区','2345678'
-- 3.'王丹','女',18,'湖南省永州市','3456789'
-- 4.'赵一枚','女',24,'浙江宁波市','4567890'
INSERT INTO Work_lnfo VALUE(1,'张明','男',19,'北京市朝阳区','1234567');
INSERT INTO Work_lnfo VALUE(2,'李广','男',21,'北京市昌平区','2345678');
INSERT INTO Work_lnfo VALUE(3,'王丹','女',18,'湖南省永州市','3456789');
INSERT INTO Work_lnfo VALUE(4,'赵一枚','女',24,'浙江宁波市','4567890');
SELECT * FROM Work_lnfo;
其中表中练习数据如下:
1.’张明’,’男’,19,’北京市朝阳区’,’1234567’
2.’李广’,’男’,21,’北京市昌平区’,’2345678’
3.’王丹’,’女’,18,’湖南省永州市’,’3456789’
4.’赵一枚’,’女’,24,’浙江宁波市’,’4567890’
按照下列要求进行操作:
1)创建视图info_view,显示年龄大于20岁的聘任人员id,name,sex,address信息。
CREATE VIEW info_view
AS
SELECT id,`name`,sex,address
FROM Work_lnfo
WHERE age > 20;
SELECT * FROM info_view;
2)查看视图info_view的基本结构和详细结构:(1)查看基本结构;(2)查看详细结构;
DESCRIBE info_view;
DESC info_view;
SHOW CREATE VIEW info_view;
# 查看视图信息(显示数据表的存储引擎、版本、数据行数和数据大小等)
SHOW TABLE STATUS LIKE 'info_view'
3)查看视图info_view的所有记录;
SELECT * FROM info_view;
4)修改视图info_view,满足年龄小于20岁的聘任人员id,name,sex,address信息;
SELECT * FROM info_view;
CREATE OR REPLACE VIEW info_view
AS
SELECT id,`name`,sex,address
FROM Work_lnfo
WHERE age < 20;
5)更新视图,将id号为3的聘任员的性别,由“男“改为“女”;
UPDATE info_view SET sex = '男' WHERE id = 3;
SELECT * FROM info_view;
6)删除info_view视图;
DROP VIEW info_view;