MySQl基础入门 ⑮

上一遍文章内容

使用语句创建视图

还是用上次的三个表,如果没有创建,点击上一遍文章内容创建即可。

什么叫视图

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

优点:

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

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

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

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

1.首先,根据您提供的进货表结构,创建一个视图来展示每个收货人的基本信息与其负责的所有进货记录的汇总信息。下面是一个创建视图的示例:

-- 创建视图:展示每个收货人的基本信息以及其总进货数量和总金额
CREATE VIEW 进货记录汇总视图 AS
SELECT e.姓名 AS 收货人姓名,e.性别,e.出生日期,e.部门,e.手机号码,COUNT(i.进货记录ID) AS 进货次数,SUM(i.总数量) AS 总进货数量,SUM(i.总金额) AS 总进货金额
FROM 进货表 i
JOIN 员工信息 e ON i.收货人ID = e.员工号
GROUP BY e.员工号, e.姓名, e.性别, e.出生日期, e.部门, e.手机号码;

在这个视图中,我们首先通过JOIN操作将进货表员工信息表连接在一起,然后通过GROUP BY子句按每个收货人的基本信息进行分组,最后通过COUNTSUM函数分别计算出每个收货人的进货次数、总进货数量和总进货金额。

如何使用视图:

  1. 查询视图内容:创建视图后,查询视图就如同查询一个实际的表。

    SELECT * FROM 进货记录汇总视图;
    

在这里插入图片描述


2.在销售表上创建一个价格高于12000元的销售日期、产品名称、部门的视图view_sjxs。

在这里插入图片描述

create view view_sjxs as select 销售日期,产品名称,部门 from 销售表 where 销售业绩金额>12000;

在这里插入图片描述

解释:
该SQL语句用于创建一个名为view_sjxs的视图,其功能是从原始的“销售表”(sales_table)中筛选出符合特定条件的记录,并将这些记录的部分列组织成一个新的虚拟表结构。具体解释如下:

  • CREATE VIEW view_sjxs: 定义了一个新的视图,名为view_sjxs。视图并非实际存储数据的地方,而是一个逻辑上的虚表,它的内容由定义它的SELECT语句动态生成。

  • AS SELECT 销售日期, 产品名称, 部门: 视图将包含以下三列:

    • 销售日期:来自原“销售表”的销售日期字段;
    • 产品名称:来自原“销售表”的产品名称字段;
    • 部门:同样来自原“销售表”的部门字段。
  • FROM 销售表: 指定从哪个表中获取数据,这里是从名为“销售表”的表中获取。

  • WHERE 销售业绩金额 > 12000: 这是一个筛选条件,表示只选择那些销售业绩金额大于12000的记录。

总结来说,这条语句创建了一个视图,该视图仅包含“销售表”中销售业绩金额超过12000的所有记录,并且只显示销售日期、产品名称和部门这三列信息。之后,用户可以通过简单的查询语句 SELECT * FROM view_sjxs 来查看视图中的数据,就像查询普通表一样,而无需每次都写完整的过滤条件。每次查询视图时,数据库系统会自动应用视图定义中的WHERE子句来获取符合条件的最新数据。


3.在员工信息表上创建一个统计各个部门人数的视图view_cjrs。

在这里插入图片描述

create view view_cjrs as select 部门,count(*) 人数 from 员工信息 group by 部门; 

解释

该SQL语句用于创建一个名为view_cjrs的视图,其目的是统计“员工信息”表中各部门的员工人数。具体解释如下:

  • CREATE VIEW view_cjrs: 创建一个名为view_cjrs的视图,这个视图在数据库中并不实际存储数据,而是根据定义的SELECT查询结果动态生成。

  • AS SELECT 部门, count(*) AS 人数: 在视图中包含两列:

    • 部门:直接选取“员工信息”表中的部门字段值;
    • 人数:使用聚合函数count(*)计算每个部门的员工总数,通过AS关键字给该计数列赋予别名“人数”。
  • FROM 员工信息: 表明要统计的数据来源是“员工信息”这张表。

  • GROUP BY 部门: 这个子句指定了按部门字段进行分组,即对不同部门分别进行人数统计,这样最终的结果将是每个部门及其对应的员工人数。

总结起来,这条SQL语句创建的视图将会展示每个部门及对应部门下的员工总数。后续查询时,只需执行 SELECT * FROM view_cjrs,即可得到各部门人数的汇总情况。每次查询视图时,数据库系统会重新执行定义视图时的分组与统计操作,从而得到最新的部门员工人数统计结果。


4.在进货表、销售表、商品表、员工信息表中创建一个查询姓名、货名、销售业绩金额的视图view_spxx

4.1先创建员工信息表

创建一个商品一览表的SQL语句通常会在数据库管理系统中使用CREATE TABLE语句实现,假设我们正在创建这样一个表,并且命名为"商品表",各个字段可以定义为:

CREATE TABLE 商品表 (货号 varchar(50) PRIMARY KEY,货名 VARCHAR(255) NOT NULL UNIQUE,规格 VARCHAR(100),单位 VARCHAR(50),平均进价 DECIMAL(10, 2),参考价格 DECIMAL(10, 2),库存量 INT
);

在这里插入图片描述

上述SQL语句含义如下:

  • 货号:设置为主键(PRIMARY KEY),通常用于标识每件商品的唯一编号,这里假设它是一个字符串型字段。
  • 货名:设置为VARCHAR类型,并加上NOT NULL和UNIQUE约束,表示商品名称不能为空且在表中必须唯一。
  • 规格:用来描述商品的规格信息,设为VARCHAR类型,长度可以根据实际情况调整。
  • 单位:记录商品的计量单位,也设为VARCHAR类型。
  • 平均进价:存储商品的平均进货价格,采用DECIMAL类型来精确表示货币数值,这里给出的(10, 2)代表总共有10位数字,其中2位小数。
  • 参考价格:同样使用DECIMAL类型来存储商品的参考零售价格,精度同上。
  • 库存量:记录商品的当前库存数量,设定为整数类型INT。

4.2在商品表插入数据

INSERT INTO 商品表 (货号, 货名, 规格, 单位, 平均进价, 参考价格, 库存量) VALUES
('G001', '商品A', '大号', '个', 100.00, 150.00, 50),
('H002', '商品B', '中号', '箱', 200.00, 300.00, 30),
('I003', '商品C', '小号', '件', 50.00, 75.00, 100),
('J004', '商品D', '标准版', '套', 350.00, 450.00, 25),
('K005', '商品E', '加强版', '台', 800.00, 900.00, 15),
('L006', '商品F', '豪华套装', '组', 1200.00, 1500.00, 10);

在这里插入图片描述

# 4.3 创建视图

create view view_spxx as select a.姓名,c.货名,b.销售业绩金额 from 员工信息 a inner join销售表 b on a.员工号 = b.销售员ID inner join 商品表 c inner join 进货表 d on c.货号= d.货号;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js改变图片曝光度(高亮度)

方法一: 原理: 使用canvas进行滤镜操作,通过改变图片数据每个像素点的RGB值来提高图片亮度。 缺点 当前项目使用的是svg,而不是canvas 调整出来的效果不是很好,图片不是高亮,而是有些发白 效果 代码 …

鸿蒙OS开发实例:【工具类封装-首选项本地存储】

import dataPreferences from ohos.data.preferences; import bundleManager from ohos.bundle.bundleManager; 本地首选项数据的保存,利用key value 【使用要求】 DevEco Studio 3.1.1 Release api 9 【使用示例】 1、app启动时,从本地读取数据&…

Linux文件(系统)IO(含动静态库的链接操作)

文章目录 Linux文件(系统)IO(含动静态库的链接操作)1、C语言文件IO操作2、三个数据流stdin、stdout、stderr3、系统文件IO3.1、相关系统调用接口的使用3.2、文件描述符fd3.3、文件描述符的分配规则3.3、重定向3.4、自制shell加入重…

Docker 夺命连环 15 问

目录 什么是Docker? Docker的应用场景有哪些? Docker的优点有哪些? Docker与虚拟机的区别是什么? Docker的三大核心是什么? 如何快速安装Docker? 如何修改Docker的存储位置? Docker镜像常…

三位数组合-第12届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第42讲。 三位数组合&#…

揭露非法集资陷阱!

常见的非法集资手法 犯罪分子利用了社会公众的哪些心理? 使用了怎样的措辞? 一起来揭露非法资金集聚的几个陷阱! 拐弯抹角地向亲朋好友承诺大额回报,希望他们加入(利用社会认同原则)。 不法分子造了个传…

精灵传信系统 匿名性系统 支持网站+小程序双端源码

精灵传信支持在线提交发送短信,查看回复短信,在线购买额度,自定义对接易支付,设置违禁词,支持网站小程序双端。 项目 地 址 : runruncode.com/php/19720.html 环境要求: PHP > 73 MySQL>5.6 Ngi…

【算法-PID】

算法-PID ■ PID■ 闭环原理■ PID 控制流程■ PID 比例环节( Proportion)■ PID 积分环节(Integral)■ PID 微分环节(Differential) ■ PID PID 分别是 Proportion(比例)、 Integr…

RK3588平台开发系列讲解(硬件篇-最小系统设计)

目录 系统概述 概述 系统框图 应用框图 最小系统设计 时钟: 复位/看门狗/TSADC电路: 系统启动引导顺序: 系统概述 概述 RK3588 是一颗高性能、低功耗的应用处理器芯片,由4个Cortex-A76和4个Cortex-A55 及独立的 NEON协处理…

编程语言|C语言——C语言变量的存储方式

前言 变量是程序中数据的存储空间的抽象。变量的存储方式可分为静态存储和动态存储两种。 静态存储变量通常是在程序编译时就分配一定的存储空间并一直保持不变,直至整个程序结束。在上一部分中介绍的全局变量的存储方式即属于此类存储方式。 动态存储变量是在程序执…

C++自主点餐系统

一、 题目 设计一个自助点餐系统,方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。 二、 业务流程图 三、 系统功能结构图 四、 类的设计 五、 程序代码与说明 头文件1. SystemMap.h #pragma once #ifndef SYSTEMMAP #define SYSTEMMAP #in…

集体出走的Stability AI 发布全新代码大模型,3B以下性能最优,超越Code Llama和DeepSeek-Coder

Stability AI又有新动作!程序员又有危机了? 3月26日,Stability AI推出了先进的代码语言模型Stable Code Instruct 3B,该模型是在Stable Code 3B的基础上进行指令调优的Code LM。 Stability AI 表示,Stable Code Instru…

3款免费甘特图制作工具的比较和选择指南

GanntProject GanttProject https://www.ganttproject.biz/ 是一款项目管理和调度应用,适用于 Windows、macOS 和 Linux。它易于使用,无需任何设置,适用于个人用户和小型团队。该应用提供任务层次结构和依存关系、里程碑、基准行、Gantt 图表…

WordPress Git主题 响应式CMS主题模板

分享的是新版本,旧版本少了很多功能,尤其在新版支持自动更新后,该主题可以用来搭建个人博客,素材下载网站,图片站等 主题特点 兼容 IE9、谷歌 Chrome 、火狐 Firefox 等主流浏览器 扁平化的设计加响应式布局&#x…

BioXcell InVivoPlus anti-mouse Ly6G及部分参考文献

BioXcell InVivoPlus anti-mouse Ly6G 1A8单克隆抗体与小鼠Ly6G反应。Ly6G分子量为21-25kDa,是GPI锚定的细胞表面蛋白Ly-6超家族的成员,在细胞信号传导和细胞粘附中发挥作用。Ly6G在发育过程中由骨髓谱系中的细胞(包括单核细胞、巨噬细胞、粒…

android 集合总结

1 集合分类, collection和map两大类,Iterator接口是提供遍历任何Collection的接口,不是map 2 集合类的底层实现 hashset基于hashmap实现(只不过HashSet里面的HashMap所有的value都是同一个Object而已) treeset由红黑树实现 …

什么是根据人类反馈的强化学习Reinforcement Learning with Human Feedback(RLHF)?

基于人类反馈的强化学习(Reinforcement learning with human feedback)是近年来越来越受欢迎的一种前沿技术,用于提高大型语言模型的性能。这是种使用人类反馈训练这些模型的有效方法,而该方法的输入组件与搜索评估也有诸多相似之…

[Flutter]环境判断

方式一(推荐) 常量kReleaseMode,它会根据你的应用是以什么模式编译的来获取值。bool.fromEnvironment会从Dart编译时的环境变量中获取值。对于dart.vm.product这个特定的环境变量,它是由Dart VM设置的,用来标明当前是…

【Android 源码】Android源码下载指南

文章目录 前言安装Repo初始化Repo选择分支没有梯子替换为清华源 有梯子 下载源码下载开始参考 前言 这是关于Android源码下载的过程记录。 环境:Windows上通过VMware安装的Ubuntu系统 安装Repo 创建Repo文件目录 mkdir ~/bin PATH~/bin:$PATH下载Repo工具&#…

回文子串 每日温度 接雨水

647. 回文子串 力扣题目链接 如果s【i】和s【j】相同 dp【i1】【j-1】也是回文串的话 (等于true) 那么dp【i】【j】也是回文串 true 定义一个bool二维数组 遍历顺序是从下到上 从左到右 因为dp【i】【j】是通过dp【i1】【j-1】推出来的 i从最后一…