【MySQL】表的内外连接和视图

这篇具有很好参考价值的文章主要介绍了【MySQL】表的内外连接和视图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、表的内外连接

表的连接分为内连和外连。

1. 内连接

内连接实际上就是利用 where 子句对两种表形成的笛卡尔积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。

语法:

			select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;

例如:

  • 显示 JAMES 的名字和部门名称

用前面的写法直接用笛卡尔积:

			select ename, dname from emp, dept where emp.deptno=dept.deptno and ename='JAMES';

用标准的内连接写法:

			select ename, dname from emp
			    -> inner join dept
			    -> on emp.deptno = dept.deptno
			    -> and ename = 'JAMES';

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

2. 外连接

外连接分为左外连接和右外连接。

(1)左外连接

如果联合查询,左侧的表完全显示,我们就称作是左外连接。

语法:

			select 字段名 from 表名1 left join 表名2 on 连接条件;

例如,先创建两张表:

学生表,并插入数据:

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

成绩表,并插入数据:

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

接下来要做的:

  • 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来

我们使用左外连接,将学生表的信息在左边显示,当左边表和右边表没有匹配时,也会显示左边表的数据:

			select * from stu left join exam on stu.id = exam.id;

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

(2)右外连接

如果联合查询,右侧的表完全显示我们就说是右外连接。

语法:

			select 字段 from 表名1 right join 表名2 on 连接条件;
  • 对 stu 表和 exam 表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来

      		select * from stu right join exam on stu.id=exam.id;
    

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

接下来我们继续使用员工表进行练习:

  • 列出部门名称和这些部门的员工信息,同时列出没有员工的部门

方法一:

			select d.dname, e.* from dept d left join emp e on d.deptno = e.deptno;

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

方法二:

			select d.dname, e.* from emp e right join dept d on d.deptno = e.deptno;

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

3. 练习

  1. Leetcode:分数排名

  2. Leetcode:换座位

二、视图

1. 视图的使用

我们上面所使用的内外连接所生成的表都是一个临时表,假设我们频繁地使用该表,那么有没有办法将这个临时表转化为虚拟表呢?

视图就是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

  • 创建视图

      			create view 视图名 as select语句;
    

例如我们使用内连接:

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

而创建视图:

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

我们会发现多了一个表结构,我们查看该表:

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

如上,我们发现该表和我们用内连接的结果一样。

  • 修改了视图,对基表数据有影响

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

  • 修改了基表,对视图有影响

【MySQL】表的内外连接和视图,MySQL,mysql,数据库,android,linux,centos

  • 删除视图文章来源地址https://www.toymoban.com/news/detail-820662.html

      			drop view 视图名;
    

2. 视图规则和限制

  • 与表一样,必须唯一命名(不能出现同名视图或表名);
  • 创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响;
  • 视图不能添加索引,也不能有关联的触发器或者默认值;
  • 视图可以提高安全性,必须具有足够的访问权限;
  • order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图中的 order by 将被覆盖;
  • 视图可以和表一起使用。

到了这里,关于【MySQL】表的内外连接和视图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • MySQL数据库——MySQL创建视图(CREATE VIEW)

    创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。 可以使用 CREATE VIEW 语句来创建视图。 语法格式如下: 语法说明如下。 视图名 : 指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。 SEL

    2024年02月02日
    浏览(8)
  • 玩转MYSQL数据库之--视图详解

    玩转MYSQL数据库之--视图详解

    从今天开始本系列文章就带各位小伙伴学习数据库技术。 数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 全文大约 【1297】字 ,不说废话,只讲可以让你学到技术、

    2024年02月05日
    浏览(11)
  • MySQL数据库 - 表的操作

    MySQL数据库 - 表的操作

    目录 一、创建表 二、创建表案例 1、显示当前使用的数据库名 2、创建表  2.1 MyISAM存储引擎表 2.2 InnoDB存储引擎表 三、查看表结构  四、修改表 1、新增列   2、修改列类型 3、修改列名 4、修改表名  5、删除列   五、删除表 表的操作至少会涉及如下两类SQL语句: • DDL(

    2024年02月13日
    浏览(11)
  • mysql数据库实验实训6,数据视图(详细)

    mysql数据库实验实训6,数据视图(详细)

    1、掌握视图功能和作用 2、掌握视图创建和管理办法 对YGGL数据库完成以下视图操作: 1、在员工管理数据库YGGL中创建视图Emp_view1,包含所有男员工的员工编号、姓名、工作年限和学历: 代码: mysql create or replace view Emp_view1 - as select 员工编号,姓名,工作年限,学历 - from employee

    2024年02月07日
    浏览(16)
  • 【MySQL数据库】看完还有谁学不会 MySQL 中的视图?

    【MySQL数据库】看完还有谁学不会 MySQL 中的视图?

    在MySQL中,视图是一种虚拟表,它是由一个或多个基本表的行或列组成的。视图并不实际存储数据,而是根据定义的查询语句动态生成结果集。视图可以简化复杂的查询操作,提高查询效率,同时也可以保护数据的安全性,隐藏敏感数据。 视图是一种虚拟表,它是由一个或多

    2024年02月10日
    浏览(11)
  • MySQL数据库和表的操作

    MySQL数据库和表的操作

    存储数据用文件就可以了,为什么还要弄个数据库? 文件保存数据有以下几个缺点:          1、文件的安全性问题 2、文件不利于数据查询和管理 3、文件不利于存储海量数据 4、文件在程序中控制不方便 数据库存储介质: 磁盘 内存 为了解决上述问题,专家们设计出更加利

    2024年02月09日
    浏览(15)
  • 【MySQL】数据库和表的操作

    【MySQL】数据库和表的操作

    语法: CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] 说明: 大写的表示,mysql 不区分大小写,所以也可以用小写 [] 是可选项 CHARACTER SET: 指定数据库采用的字符集 COLLATE: 指定数据库字符集的校验规则 假设现在我们现在需要创建一个名为 d1 的数

    2024年02月04日
    浏览(17)
  • 【数据库】MySQL表的增删改查

    注释:在SQL中可以使用“–空格+描述”来表示注释说明 CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写 语法: 案例: 2.1 单行数据 + 全列插入 2.2 多行数据 + 指定列插入 查询(Retrieve) 语法: 案例: 3.1 全列查询 3.2 指定列查询 3.3 查询字段为

    2024年03月23日
    浏览(14)
  • 【MySQL】表的增删改查——MySQL基本查询、数据库表的创建、表的读取、表的更新、表的删除

    【MySQL】表的增删改查——MySQL基本查询、数据库表的创建、表的读取、表的更新、表的删除

         CURD是一个数据库技术中的缩写词,它代表Create(创建),Retrieve(读取),Update(更新),Delete(删除)操作。 这四个基本操作是数据库管理的基础,用于处理数据的基本原子操作。      在MySQL中,Create操作是十分重要的,它帮助用于创建数据库对象,如数据

    2024年03月18日
    浏览(44)
  • MySQL 数据库表的基本操作

    在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。 通常在创建表时,应该使用语句USE 数据库名,指定在哪个

    2024年02月12日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包