MySQl基础入门 ⑮(mysql创建视图)

上一遍文章内容

什么叫视图

视图是一个或多个表中导出来的表,它是一种虚拟存在的表,并且表的结构数据都依赖基本表,通过视图不仅可以看到放在基本表中的数据,还可以像操作基本表一样,对视图中存放的数据进行查询、修改和删除。与直接操作基本表相比,视图具有以下有点。

优点:

  1. 简化复杂查询:视图可以将复杂的SQL查询语句封装起来,用户只需要查询视图即可获取所需数据,而无需了解底层表的复杂结构和关联关系。

  2. 数据抽象与安全:视图可以隐藏真实表的部分或全部数据,对外提供有限且定制化的数据视图。比如,只向用户暴露必要的列,或者通过对原始数据应用过滤条件来保护敏感数据。

  3. 逻辑数据独立性:当数据库表结构发生改变时,可以通过修改视图定义来保持应用程序的不变,提高数据的逻辑独立性。

  4. 简化数据维护:对于频繁使用的复杂查询或者联合查询,创建视图可以减少重复编写相同的SQL语句,提高开发效率。

用界面操作创建视图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

准备数据

CREATE TABLE Students (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(255),
    major VARCHAR(100),
    score int,
    phone_number VARCHAR(20),
    entry_year INT,
    salary DECIMAL(10, 2)
);

现在,我们已经创建了一个包含id(主键)、nameemailmajor字段的Students表。

接下来,我们可以向该表中插入一些记录:

INSERT INTO Students (id, name, email, major, score, phone_number, entry_year, salary)
VALUES
(1, '朱晓明', 'zxming@student.edu.cn', '计算机科学与技术', 88, '13900111222', 2019, 12000.00),
(2, '刘洋', 'liuyang@example.com', '电子信息工程', 92, '13822223333', 2020, 9800.00),
(3, '陈静', 'chenjing@example.edu', '工商管理', 85, '13733334444', 2018, 10500.00),
(4, '杨辉', 'yanghui@student.university.edu.cn', '软件工程', 90, '13644445555', 2017, 11000.00),
(5, '马丽', 'mali@example.com', '英语语言文学', 89, '13555556666', 2021, 8500.00),
(6, '何勇', 'heyong@example.net', '机械设计制造及其自动化', 87, '13466667777', 2016, 13000.00),
(7, '宋佳', 'songjia@example.org', '临床医学', 91, '13377778888', 2022, 10000.00),
(8, '罗敏', 'luomin@alumni.edu.cn', '通信工程', 86, '13288889999', 2015, 12500.00),
(9, '唐薇', 'tangwei@university.edu',  '会计学', 93, '13199990000', 2020, 9500.00),
(10, '曹雷', 'caolei@example.com', '土木工程', 84, '13000001111', 2019, 11500.00),
(11, '张波', 'zhangbo@example.com', '电子信息工程', 90, '13312345678', 2020, 9200.00),
(12, '李娜', 'lina@example.edu', '工商管理', 87, '13723456789', 2019, 10200.00),
(13, '王刚', 'wanggang@student.university.edu.cn', '软件工程', 88, '13834567890', 2018, 10800.00),
(14, '赵敏', 'zhaomin@example.com', '英语语言文学', 94, '13545678901', 2021, 8800.00),
(15, '孙悦', 'sunyue@example.net', '机械设计制造及其自动化', 83, '13656789012', 2017, 13200.00),
(16, '周杰', 'zhoujie@example.org', '临床医学', 95, '13767789101', 2022, 9800.00),
(17, '吴亮', 'wuliang@alumni.edu.cn', '通信工程', 82, '13887889101', 2015, 12300.00),
(18, '郑洁', 'zhengjie@university.edu', '会计学', 91, '13901234567', 2020, 9300.00),
(19, '冯浩', 'fenghao@example.com', '土木工程', 81, '13112345678', 2019, 11300.00),
(20, '陈晨', 'chenchen@example.edu', '电子信息工程', 89, '13223456789', 2020, 9600.00),
(21, '褚强', 'chuqiang@student.university.edu.cn', '工商管理', 97, '13345678901', 2018, 10300.00),
(22, '卫芳', 'weifang@example.com', '软件工程', 86, '13456789101', 2017, 11100.00),
(23, '蒋丽', 'jiangli@example.net', '英语语言文学', 92, '13567899101', 2021, 8700.00),
(24, '沈刚', 'shengang@example.org', '机械设计制造及其自动化', 80, '13678901123', 2016, 13100.00),
(25, '韩敏', 'hanmin@alumni.edu.cn', '临床医学', 96, '13789012345', 2022, 9900.00),
(26, '杨波', 'yangbo@university.edu', '通信工程', 84, '13899101234', 2015, 12100.00),
(27, '朱洁', 'zhujie@example.com', '会计学', 98, '13001234567', 2020, 9700.00),
(28, '秦浩', 'qinhao@example.edu', '土木工程', 85, '13112345678', 2019, 11200.00),
(29, '尤娜', 'youna@student.university.edu.cn', '电子信息工程', 93, '13223456789', 2020, 9400.00),
(30, '许强', 'xuqiang@example.com', '工商管理', 88, '13334567890', 2018, 10400.00);

用命令创建视图

create view v_student as select id,name,major from students;

用命令查看视图列表

show tables;

在这里插入图片描述
查看视图结构

desc 视图名;

在这里插入图片描述
查看视图结果

select * from 视图名;

在这里插入图片描述

创建带有条件的视图

例如 :创建学生成绩大于等于90分以上的视图,返回学生名字和成绩
在这里插入图片描述
直接查看一下

select * from v_score90;

在这里插入图片描述
以此类推做出其他视图,这里不过多讲解。

配合聚合函数使用

例如:统计每个专业的人数情况

create view v_major_count as select major,count(*) 数量 from students group by major;

在这里插入图片描述

查看结果

create view v_major_count as select major,count(*) 数量 from students group by major;

在这里插入图片描述

排序(Order by)、分组(Group by)、数量限制(LIMIT)

1.按成绩高到低排序

create view v_score as select * from students order by score desc;

在这里插入图片描述

2.查询每个入学时间段的数量并且从低到高排序

create view v_entry_year as select entry_year,count(*) as 数量 from students group by entry_year order by entry_year;

在这里插入图片描述

查询成绩前五的学生名字和成绩

create view v_score5m as select name,score from students order by score desc limit 5;

在这里插入图片描述

图形自定义视图

1.定义查询学生名字、专业,要求成绩大于等于90分,排序从高到底

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

点击构建并运行

在这里插入图片描述

  • 12
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值