数据库视图-多表

在数据库中创建一个视图,结合多张表通常会用到 JOIN 操作(连接操作)。通过将多个表的数据联合起来,你可以创建一个包含来自多个表的字段的视图。

示例:从多个表中创建视图

假设我们有以下两张表:

  1. 员工表 (employees)

    • employee_id:员工ID
    • employee_name:员工姓名
    • department_id:员工所属部门ID
  2. 部门表 (departments)

    • department_id:部门ID
    • department_name:部门名称

我们希望创建一个视图,该视图包含员工的姓名和他们所在的部门名称。

1. 创建多表视图的 SQL 示例:

CREATE VIEW employee_department_view AS
SELECT e.employee_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;

解释:

  • JOIN 操作:将 employees 表与 departments 表连接,连接条件是两表的 department_id 字段相等。
  • 视图名称employee_department_view 是我们要创建的视图名称。
  • 查询:视图中包含的查询是从两个表中选取 employee_namedepartment_name 字段。

2. 查询视图:

一旦视图创建完成,可以像查询普通表一样查询视图:

SELECT * FROM employee_department_view;

3. 更复杂的多表视图

可以通过更复杂的查询来组合多个表的数据,下面是一个包含多个表的更复杂视图创建示例。

假设还要添加一个 薪资表 (salaries),该表包含员工的薪资信息:

  • 薪资表 (salaries)
    • employee_id:员工ID
    • salary:员工薪资

现在,我们要创建一个视图,显示员工姓名、部门名称和薪资。

4. 创建多表视图(包含三个表):

CREATE VIEW employee_details_view AS
SELECT e.employee_name, d.department_name, s.salary
FROM employees e
JOIN departments d ON e.department_id = d.department_id
JOIN salaries s ON e.employee_id = s.employee_id;

解释:

  • 该视图包含了 员工姓名部门名称薪资
  • 使用了两个 JOIN 操作:
    • employeesdepartments 表通过 department_id 连接。
    • employeessalaries 表通过 employee_id 连接。

5. 使用 LEFT JOIN 连接多表:

如果我们希望即使某些员工没有薪资信息时,依然显示他们的姓名和部门,可以使用 LEFT JOIN

CREATE VIEW employee_department_salary_view AS
SELECT e.employee_name, d.department_name, s.salary
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id
LEFT JOIN salaries s ON e.employee_id = s.employee_id;

解释:

  • 使用了 LEFT JOIN,即使某些员工没有对应的薪资记录,视图也会返回这些员工的姓名和部门信息,只是薪资列会返回 NULL

总结:

  • 创建多表视图通常依赖于 JOIN 操作,将多个表的数据合并到一起,创建一个虚拟的综合视图。
  • 你可以使用不同类型的 JOIN(如 INNER JOIN, LEFT JOIN 等)来控制数据的合并方式。
  • 视图的好处是让复杂查询变得更简单,用户不需要关心表的结构,只需要查询视图。

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

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

相关文章

二叉搜索数(二叉排序树、二叉查找树)-----详解

C系列—二叉搜索树 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 前言 一、二叉搜索树 1.1、二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树&…

SPSS统计学:全距

概念 全距,也被称为极差,是统计学中衡量数据变异程度的一项指标。它代表了一组数据中最大值和最小值之间的差距,计算方式为最大值减去最小值。 用途 全距直观地揭示了总体内数值变化的幅度,或者说是标志值差异的范围&#xff0…

飞米仕智能门锁:以科技之名,重塑未来家居安全新篇章

在智能科技日新月异的今天,家居安全已悄然迈入了一个全新的智能化时代。近日,飞米仕智能门锁在杭州未来科技城举办了一场盛大的新品发布会,正式推出了其高端旗舰产品——飞米仕智能门锁K10系列。K10系列分为尊享版和旗舰版,售价分…

基于Java Springboot旅游民宿信息管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

SpringBoot - spring.profiles.active最佳实践

文章目录 Pre概述为什么需要多环境配置多环境配置实现步骤1. 配置文件准备2. 激活特定环境方法1:命令行参数方法2:环境变量方法3:IDE 配置方法4:全局配置文件默认设置 3. 配置文件加载顺序配置生效的原理 4. 常见问题多个配置文件…

详细描述一下Elasticsearch索引文档的过程?

大家好,我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程?】面试题。希望对大家有帮助; 详细描述一下Elasticsearch索引文档的过程? Elasticsearch的索引文档过程是其核心功能之一,涉及将数据存储到…

03 —— Webpack 自动生成 html 文件

HtmlWebpackPlugin | webpack 中文文档 | webpack中文文档 | webpack中文网 安装 npm install --save-dev html-webpack-plugin 下载html-webpack-plugin本地软件包 npm i html-webpack-plugin --save-dev 配置webpack.config.js让webpack拥有插件功能 const HtmlWebpack…

如何控制自己玩手机的时间?两台苹果手机帮助自律

对一些人来说,被智能手机“绑架”是一件心甘情愿的事,和它相处的一天中,不必面对现实的压力,它就像个“舒适区”。这是因为在使用手机的过程中,应用程序(尤其是游戏和社交媒体应用)会不断刺激大…

解决“400 Bad RequestThe plain HTTP request was sent to HTTPS portnginx/1.23.1”

目录 一、问题描述 二、问题解决 三、问题原因 (1)问题成因 (2)那为什么访问其他网站的时候,其不会出错呢?而且自己会用https协议? 一、问题描述 在浏览器直接输入:“xxx.xxx.x…

有趣的跳马问题与最优路径

献给皮鞋👞经理 有一个无限大的棋盘,在某个点有一个只能走日的马,计算马到达棋盘上任意一个点 P(x, y) 最小步数。 “走日” 规则下,任意坐标的 “马” 是否可达任意其它坐标需要证明。按照递归原则,只需证明 “马” …

IDEA自定义文件打开格式

介绍在IDEA中自定义文件打开格式的方法,比如一个文件,可以选择用txt格式打开,也可以选择用xml格式打开,也可以用java格式打开等等,通过这个方法可以方便的用任意格式在idea中打开想要打开的文件。 下面分别讨论三种不…

百度智能云千帆大模型平台引领企业创新增长

本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容,请访问: https://baiduworld.baidu.com 首先,跟大家分享一张图,这个是我们目前大模型应用落地的场景分布。可以看到,大模型…

【蓝桥杯C/C++】翻转游戏:多种实现与解法解析

博客主页: [小ᶻZ࿆] 本文专栏: 蓝桥杯C/C 文章目录 💯题目💯问题分析解法一:减法法解法二:位运算解法解法三:逻辑非解法解法四:条件运算符解法解法五:数组映射法不同解法的比较…

第二十一章 Spring之假如让你来写AOP——Weaver(织入器)篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

04 - Clickhouse-21.7.3.14-2单机版安装

目录 一、准备工作 1、确定防火墙处于关闭状态 2、CentOS 取消打开文件数限制 3、安装依赖 4、CentOS取消SELINUX 二、单机安装 2.1、下载安装 2.2、安装这4个rpm包 2.3、修改配置文件 2.4、启动服务 2.5、关闭开机自启 2.6、使用Client连接server 一、准备工作 1…

Python脚本-linux远程安装某个服务

需求: 某公司因为网站服务经常出现异常,需要你开发一个脚本对服务器上的服务进行监控;检测目标服务器上是否存在nginx软件(提供web服务的软件),如果不存在则安装(服务器可能的操作系统Ubuntu24/RedHat9);如果nginx软件…

芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号)

芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号) 本期是平台君和您分享的第113期内容 前一段时间,高通公司(Qualcomm)发布安全警告称,提供的60多款芯片潜在严重的“零日漏洞”,芯片安全再一次暴露在大众视野。 那什么是“零日漏洞”?平台君从网上找了一段…

x-cmd mod | x pixi - 兼容 Conda 生态的极速包管理器,conda 和 mamba 用户的另一选择

目录 介绍使用语法参数子命令 介绍 x pixi 模块是由 x-cmd 团队使用 posix shell 实现的 pixi 命令增强工具。它能优化 pixi 命令的安装和使用体验,具体如下: 提供带有 advise 的自动补全功能。对于中国区用户,我们还提供了汉化版的 advise…

Rust derive macro(Rust #[derive])Rust派生宏

参考文章:附录 D:派生特征 trait 文章目录 Rust 中的派生宏 #[derive]基础使用示例:派生 Debug 派生其他常用特征示例:派生 Clone 和 Copy 派生宏的限制和自定义派生自定义派生宏上面代码运行时报错了,以下是解释 结论…

Node.js | npm下载安装及环境配置教程

前言: npm 是 Nodejs 下的包管理器,在下载 Node.js 后自动安装,因此本文同时适合 Node.js / npm 的下载安装及环境配置。 一、软件安装 Node.js中文网官网下载页:Node.js 中文网 (nodejs.com.cn) 1)进入下载页&#xf…