首页 > 数据库 >MYSQL内外连接查询实践

MYSQL内外连接查询实践

时间:2023-10-29 17:25:13浏览次数:36  
标签:查询 MYSQL t2 t1 sid teach 内外 连接

自身连接查询

自身连接,就是将表本身和表进行笛卡尔积计算,得到结果,但是由于表名相同,因此要先起一个别名:

SELECT * FROM 表名 别名1, 表名 别名2

自身连接查询的连接对象变成自己和自己了。

例如1:student 表自身连接查询

# 自身连接查询,笛卡尔积:81 条数据
select * from student t1, student t2;

# 自身连接查询,只展示出:t1.sid = t2.sid,有 9 条数据
select * from student t1, student t2 where t1.sid = t2.sid;

 重点:表名后续再跟一个表的名称,意为:给表起别名!

例如2:查询学生表自身连接,只展示出:t1.sid = t2.sid 的 t1学生姓名,t2学生年龄

select t1.name as 't1姓名', t2.age as 't2年龄' from student t1, student t2 where t1.sid = t2.sid;

外连接查询

外连接就是专门用于联合查询情景的,比如现在有一个存储所有用户的表,还有一张用户详细信息的表,我希望将这两张表结合到一起来查看完整的数据,我们就可以通过使用外连接来进行查询,外连接有三种方式:

  • 通过使用inner join进行内连接,只会返回两个表满足条件的交集部分:

  • 通过使用left join进行左连接,不仅会返回两个表满足条件的交集部分,也会返回左边表中的全部数据,而在右表中缺失的数据会使用null来代替(右连接right join同理,只是反过来而已,这里就不再介绍了):

 例如1:查询出 teach 表中有被授课学生的学生详情【使用 inner join 包含了老师的编号 stu.sid = teach.sid】

select stu.*, teach.tid as '老师编号' from student stu inner join teach on stu.sid = teach.sid;

重点理解:inner join 取两张表的交集部分!

例如2:查询出 teach 表中有授课老师的老师详情,学生学号

-- 查询有被授课的学生详情
select t.*, teach.sid from teacher t inner join teach on t.tid = teach.tid;

查询的结果中:表名.* 意为:展示表中所有的属性信息,例如:stu.* 展示student表中所有属性信息!

 

标签:查询,MYSQL,t2,t1,sid,teach,内外,连接
From: https://www.cnblogs.com/blogtech/p/17796066.html

相关文章

  • Python使用pymysql和xlrd2将Excel数据导入MySQL数据库
    在数据处理和管理中,有时候需要将Excel文件中的数据导入到MySQL数据库中进行进一步的分析和操作。本文将介绍如何使用Python编程语言实现这个过程。导入所需库importxlrd2#导入xlrd2库,用于读取Excel文件importpymysql#导入pymysql库,用于连接和操作MySQL数据库fromdat......
  • Pandas数据导入和导出:CSV、Excel、MySQL、JSON
    导入MySQL查询结果:read_sqlimportpandascon="mysql+pymysql://user:[email protected]/test"sql="SELECT*FROM`student`WHEREid=2"#sql查询df1=pandas.read_sql(sql=sql,con=con)print(df1)导入MySQL整张表:read_sql_table#整张表df2=pandas.rea......
  • 万字长文 | 业内 MySQL 线程池主流方案详解 - MariaDB/Percona/AliSQL/TXSQL/MySQL企
    作者:卢文双资深数据库内核研发本文首发于2023-05-0422:07:40http://dbkernel.com/2023/05/04/mysql-threadpool-main-solutions-details/#本文主要从功能层面对比percona-server、mariadb、阿里云AliSQL、腾讯TXSQL、MySQL企业版线程池方案,都基于MySQL8.0。至于源......
  • Mysql常用命令(无废话精简版)
    文章目录1.数据库操作CREATEDATABASEdatabase_name;--创建数据库DROPDATABASEdatabase_name;--删除数据库SHOWDATABASES;--显示所有数据库USEdatabase_name;--选择要使用的数据库2.表操作CREATETABLEtable_name(column1datatype,column2datatype,...);--......
  • 收藏从未停止,练习从未开始——MYSQL游标存储过程IDEA快捷键配置SpringBoot入门到入土G
    “收藏从未停止,练习从未开始”,或许有那么一些好题好方法,在被你选中收藏后却遗忘在收藏夹里积起了灰?今天请务必打开你沉甸甸的收藏重新回顾,分享一下那些曾让你拍案叫绝的好东西吧!本人详解:(提醒:随笔)本人详解作者:王文峰,参加过2020年度博客之星,《Java王大师王天师》作者采购供应链共享......
  • Mysql--存储过程
    Mysql--存储过程介绍存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。特点......
  • 面试题:MySQL事务的ACID如何实现?
    大家好,我是【码老思】,事务是一个数据库绕不开的话题,今天和大家一起聊聊。事务是什么?事务(Transaction)是并发控制的基本单位。所谓的事务呢,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。在介绍事务的特性之前,我们先看下MySQL的逻辑架构,如......
  • 从Mysql架构看一条查询sql的执行过程
    1.通信协议我们的程序或者工具要操作数据库,第一步要做什么事情?跟数据库建立连接。首先,MySQL必须要运行一个服务,监听默认的3306端口。在我们开发系统跟第三方对接的时候,必须要弄清楚的有两件事。第一个就是通信协议,比如我们是用HTTP还是WebService还是TCP?第二个是消息格......
  • oracle中concat函数与在mysql中的使用
    在Oracle中使用concat函数来做拼接:我们想要得到的效果: 对应的sql语句如下: MySQL的中使用:我们直接使用concat()函数就行 ......
  • MySQL--视图
    一、视图视图是一个虚拟表,是sql的查询结果,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成。单表视图的数据变化会影响到基表创建视图:createview视图名as查询语句createviewnewresultasselects.studentNameas姓名,sub.......