一、实验目的
    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表上完成如下操作:

    1. create table userlogin
    2. (
    3. id INT(4),
    4. `name` VARCHAR(20),
    5. `Password` VARCHAR(20),
    6. info TEXT,
    7. primary key (id)
    8. );
    9. create table information
    10. (
    11. id INT(4),
    12. `name` VARCHAR(20),
    13. sex VARCHAR(4),
    14. birthday DATE,
    15. address VARCHAR(50),
    16. tel VARCHAR(20),
    17. pic BLOB,
    18. primary key (id)
    19. );

    1)在name字段创建名为index_name的索引;

    1. CREATE INDEX index_name
    2. ON userlogin(name);
    3. CREATE INDEX index_name
    4. ON information(name);

    image.png
    2)在birthday和address两个字段上创建名为index_bir的多列索引;

    1. CREATE INDEX index_bir
    2. ON information(birthday,address);

    image.png
    3)用 ALTER TABLE 语句创建名为index_id的惟一性索引;

    1. ALTER TABLE userlogin
    2. ADD UNIQUE index_id(id);
    3. ALTER TABLE information
    4. ADD UNIQUE index_id(id);

    image.png
    image.png
    4)删除 userlogin 表上的index_ userlogin 索引;

    1. SHOW INDEX FROM userlogin;
    2. CREATE INDEX index_userlogin
    3. ON userlogin(name);
    4. DROP INDEX index_userlogin ON userlogin;

    image.png
    5)查看 userlogin 表的结构;

    1. DESCRIBE userlogin;
    2. DESC userlogin;

    image.png
    6)删除information 表上的index_name索引;

    1. SHOW INDEX FROM information;
    2. DROP INDEX index_name ON information;

    image.png
    7)查看information表的结构;

    1. DESCRIBE information;
    2. DESC information;

    image.png
    2、在JobDB数据库中,有聘任人员信息表【Work_lnfo】表,其表结构如下表所示:

    字段名 字段描述 数据类型 主键 外键 非空 唯一 自增
    Id 编号 INT(4) 是 否 是 是 否
    Name 名称 VARCHAR(20) 否 否 是 否 否
    Sex 性别 VARCHAR(4) 否 否 是 否 否
    Age 年龄 INT(4) 否 否 否 否 否
    Address 家庭地址 VARCHAR(50) 否 否 否 否 否
    Tel 电话号码 VARCHAR(20) 否 否 否 否 否
    1. create table Work_lnfo
    2. (
    3. id INT(4) unique key,
    4. `name` VARCHAR(20) not null,
    5. sex VARCHAR(4) not null,
    6. age INT(4),
    7. address VARCHAR(50),
    8. tel VARCHAR(20),
    9. primary key (id)
    10. );
    11. -- 1.'张明','男',19,'北京市朝阳区','1234567'
    12. -- 2.'李广','男',21,'北京市昌平区','2345678'
    13. -- 3.'王丹','女',18,'湖南省永州市','3456789'
    14. -- 4.'赵一枚','女',24,'浙江宁波市','4567890'
    15. INSERT INTO Work_lnfo VALUE(1,'张明','男',19,'北京市朝阳区','1234567');
    16. INSERT INTO Work_lnfo VALUE(2,'李广','男',21,'北京市昌平区','2345678');
    17. INSERT INTO Work_lnfo VALUE(3,'王丹','女',18,'湖南省永州市','3456789');
    18. INSERT INTO Work_lnfo VALUE(4,'赵一枚','女',24,'浙江宁波市','4567890');
    19. SELECT * FROM Work_lnfo;

    其中表中练习数据如下:
    1.’张明’,’男’,19,’北京市朝阳区’,’1234567’
    2.’李广’,’男’,21,’北京市昌平区’,’2345678’
    3.’王丹’,’女’,18,’湖南省永州市’,’3456789’
    4.’赵一枚’,’女’,24,’浙江宁波市’,’4567890’
    按照下列要求进行操作:
    1)创建视图info_view,显示年龄大于20岁的聘任人员id,name,sex,address信息。

    1. CREATE VIEW info_view
    2. AS
    3. SELECT id,`name`,sex,address
    4. FROM Work_lnfo
    5. WHERE age > 20;
    6. SELECT * FROM info_view;

    image.png
    2)查看视图info_view的基本结构和详细结构:(1)查看基本结构;(2)查看详细结构;

    1. DESCRIBE info_view;
    2. DESC info_view;
    3. SHOW CREATE VIEW info_view;
    4. # 查看视图信息(显示数据表的存储引擎、版本、数据行数和数据大小等)
    5. SHOW TABLE STATUS LIKE 'info_view'

    image.png
    3)查看视图info_view的所有记录;

    1. SELECT * FROM info_view;

    image.png
    4)修改视图info_view,满足年龄小于20岁的聘任人员id,name,sex,address信息;

    1. SELECT * FROM info_view;
    2. CREATE OR REPLACE VIEW info_view
    3. AS
    4. SELECT id,`name`,sex,address
    5. FROM Work_lnfo
    6. WHERE age < 20;

    image.png
    5)更新视图,将id号为3的聘任员的性别,由“男“改为“女”;

    1. UPDATE info_view SET sex = '男' WHERE id = 3;
    2. SELECT * FROM info_view;

    image.png
    6)删除info_view视图;

    1. DROP VIEW info_view;

    image.png