首页 > 其他分享 >6.连接查询

6.连接查询

时间:2023-12-09 13:00:12浏览次数:24  
标签:等值 别名 列表 分组 查询 连接

一、含义
当查询中涉及到了多个表的字段,需要使用多表连接
select 字段1,字段2
from 表1,表2,...;

笛卡尔乘积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接
如何解决:添加有效的连接条件

二、分类

按年代分类:
   sql92:
	等值
	非等值
	自连接
	也支持一部分外连接(用于oracle、sqlserver,mysql不支持)
    sql99【推荐使用】
	内连接
		等值
		非等值
		自连接
	外连接
		左外
		右外
		全外(mysql不支持)
	交叉连接

三、SQL92语法
1、等值连接

语法:
	select 查询列表
	from 表1 别名,表2 别名
	where 表1.key=表2.key
	【and 筛选条件】
	【group by 分组字段】
	【having 分组后的筛选】
	【order by 排序字段】

特点:
	① 一般为表起别名
	②多表的顺序可以调换
	③n表连接至少需要n-1个连接条件
	④等值连接的结果是多表的交集部分

2、非等值连接

语法:
	select 查询列表
	from 表1 别名,表2 别名
	where 非等值的连接条件
	【and 筛选条件】
	【group by 分组字段】
	【having 分组后的筛选】
	【order by 排序字段】

3、自连接

语法:
	select 查询列表
	from 表 别名1,表 别名2
	where 等值的连接条件
	【and 筛选条件】
	【group by 分组字段】
	【having 分组后的筛选】
	【order by 排序字段】

四、SQL99语法
1、内连接

语法:
        select 查询列表
        from 表1 别名
        【inner】 join 表2 别名 on 连接条件
        where 筛选条件
        group by 分组列表
        having 分组后的筛选
        order by 排序列表
        limit 子句;
特点:
        ①表的顺序可以调换
        ②内连接的结果=多表的交集
        ③n表连接至少需要n-1个连接条件
分类:
        等值连接
        非等值连接
        自连接

2、外连接

语法:
        select 查询列表
        from 表1 别名
        left|right|full【outer】 join 表2 别名 on 连接条件
        where 筛选条件
        group by 分组列表
        having 分组后的筛选
        order by 排序列表
        limit 子句;
特点:
        ①查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null
        ②left join 左边的就是主表,right join 右边的就是主表
          full join 两边都是主表
        ③一般用于查询除了交集部分的剩余的不匹配的行

3、交叉连接

语法:
        select 查询列表
        from 表1 别名
        cross join 表2 别名;
特点:
        类似于笛卡尔乘积

标签:等值,别名,列表,分组,查询,连接
From: https://www.cnblogs.com/codemagiciant/p/17890787.html

相关文章

  • 5.分组查询
    一、语法select分组函数,分组后的字段from表【where筛选条件】groupby分组的字段【having分组后的筛选】【orderby排序列表】二、特点使用关键字筛选的表位置分组前筛选where原始表groupby的前面分组后筛选having分组后的结果groupby的后面......
  • 2.条件查询
    一、语法select查询列表from表名where筛选条件二、筛选条件的分类1、简单条件运算符<=<>!=>=<=<=>安全等于2、逻辑运算符&&and||or!not3、模糊查询like:一般搭配通配符使用,可以判断字符型或数值型通配符:%任意多个字符,_任意单个字符betweenandin......
  • 1.基础查询
    一、语法select查询列表from表名;二、特点1、查询列表可以是字段、常量、表达式、函数,也可以是多个2、查询结果是一个虚拟表三、示例1、查询单个字段select字段名from表名;2、查询多个字段select字段名,字段名from表名;3、查询所有字段select*from表名4、......
  • 聊聊数据库连接池 Druid
    在SpringBoot项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。1为什么需要连接池假如没有......
  • linux系统如何连接网络
    1、登入进入linux桌面 2、在上方的系统下拉菜单中点击首选项  3、点击网络连接 4、进入编辑页。打开IPV4设置,将方法改为手动 5、选择添加,填写ip地址,子网掩码,网关,DNS服务器等信息,填写完成后,点击应用即可 ......
  • JDBC连接数据库
    JDBC连接数据库共六步1.Class.forName()加载数据库连接驱动2.DriverManager.getConnection()获取数据连接对象3.根据SQL获取sq|会话对象4.执行SQL,执行SQL前如果有参数值就设置参数值setXXX()5.处理结果集6.释放资源0.前期工作0.0文件jar包下载,配置,删除目前常用的驱动......
  • django如何远程查询多对多字段?
    解决办法假设A表有一个多对多properties字段,通过A表远程查询properties的名称qs=A.objects.filter(properties__name=xxx)更复杂的:A表有一个外键字段version连接B表,B表有一个多对多字段properties,通过A表远程查询properties的名称qs=A.objects.filter(version__proper......
  • mysql慢查询分析
    一、实用druid自带web管理页面查看Druid是一个开源的高性能数据库连接池,由阿里巴巴集团开发并开源,主要用于Java应用程序中与数据库的连接管理和资源池化。它提供了一系列功能和配置选项,旨在提供高效、可靠的数据库连接管理。特性和功能:高性能:Druid连接池通过一些优化策略实现高性......
  • 使用django连接MySQL
    使用python311+pycharm社区版+MySQL80,使用django连接MySQL1.下载1.1.官网下载pythonhttps://www.python.org/downloads/如我的python3.11.4,可以进入如下的页面进行hash校验https://www.python.org/downloads/release/python-3114/1.2.官网下载pycharmhttps://www.......
  • 通过C语言连接MySQL数据库
    一、如何连接MySQL首先需要安装MySQLsudoapt-getupdatesudoapt-getinstallmysql-serverC语言的API代码是与MySQL一起提供的,它包含在mysqlclient库中,并允许C程序访问数据库,如果安装MySQL后仍提示缺少库,则需要安装如下:sudoapt-getinstalllibmysqlclient-devsudoa......