上一遍文章内容
使用语句创建视图
还是用上次的三个表,如果没有创建,点击上一遍文章内容创建即可。
什么叫视图
视图是一个或多个表中导出来的表,它是一种虚拟存在的表,并且表的结构数据都依赖基本表,通过视图不仅可以看到放在基本表中的数据,还可以像操作基本表一样,对视图中存放的数据进行查询、修改和删除。与直接操作基本表相比,视图具有以下有点。
优点:
-
简化复杂查询:视图可以将复杂的SQL查询语句封装起来,用户只需要查询视图即可获取所需数据,而无需了解底层表的复杂结构和关联关系。
-
数据抽象与安全:视图可以隐藏真实表的部分或全部数据,对外提供有限且定制化的数据视图。比如,只向用户暴露必要的列,或者通过对原始数据应用过滤条件来保护敏感数据。
-
逻辑数据独立性:当数据库表结构发生改变时,可以通过修改视图定义来保持应用程序的不变,提高数据的逻辑独立性。
-
简化数据维护:对于频繁使用的复杂查询或者联合查询,创建视图可以减少重复编写相同的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
子句按每个收货人的基本信息进行分组,最后通过COUNT
和SUM
函数分别计算出每个收货人的进货次数、总进货数量和总进货金额。
如何使用视图:
-
查询视图内容:创建视图后,查询视图就如同查询一个实际的表。
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.货号;