mysql连接查询详解

目录
  • 1.连接查询
  • 2、连接类型
    • 内连接
      • 定义:
      • 语法1:
      • 语法2:
      • 3个表连接
      • 显示指定列
    • 左连接
      • 定义:
      • 语法:
    • 右连接
      • 定义:
      • 语法:
    • 自关联
      • 定义
    • 子查询
      • 定义
      • 主查询
      • 主查询和子查询的关系
      • 子查询充当条件
      • 子查询充当数据源
    • 子查询中特定关键字使用

1.连接查询

作用:当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回

2、连接类型

内连接

定义:

内连接查询:查询结果为两个表匹配到的数据

语法1:

select * from 表1
inner join 表2 on 表1.列 = 表2.列

例:查询学生信息及学生成绩

语法2:

 select * from 表1,表2 on 表1.列 = 表2.列

注:通常不使用此语法,效率较低

3个表连接

-- 查询学生信息及学生的课程对应的成绩

显示指定列

左连接

定义:

查询的结果为两个表匹配到的数据加左表特有的数据,对于右表中不存在的数据(匹配不到)使用null填充

语法:

select * from 表1
left join 表2 on 表1 .列 = 表2.列

例:

查询所有学生的成绩,包括没有成绩的学生

例:

查询所有学生的成绩,包括没有成绩的学生,需要显示课程名

右连接

定义:

右连接查询:查询结果为两个表匹配到的数据加右表特有的数据,对于左边中不存在的数据使用null填充

语法:

select * from 表1
right join 表2 on 表1 .列 = 表2.列

例:查询所有学生的成绩,包括没有成绩的学生

例:

查询所有学生的成绩,包括没有成绩的学生,需要显示课程名

自关联

定义

连接查询的一种应用,对同一个表查询多次,把查询多次得到的结果连接组成新的结果

主要应用场景:数据有上下级关系,并且存于同一个表中

例:查询河南省的所有城市

例:查询郑州市的所有区县

例:查询河南省所有区县

子查询

定义

在一个select 语句中,嵌入另外一个select语句,那么嵌入的那个select语句称之为子查询语句

主查询

外城的select称之为主查询语句

主查询和子查询的关系

子查询是嵌入到主查询中子查询是辅助主查询的,要么充当条件,要么充当数据源子查询是可以独立存在的语句是一条转正的select语句

子查询充当条件

以下例子中子查询返回结果只有一个值(一行一列),这种称之为标量子查询

例1:查询大于平均年龄的学生

-- 查询班里学生的平均年龄
SELECT AVG(age) FROM students --21.5833
-- 查询大于平均年龄的学生
SELECT * from students where age > 21.5833
SELECT * FROM students where age >(SELECT AVG(age) FROM students);

以下例子返回数据结果是一列数据(一列多行),这种称之为列子查询

例: 查询18岁学生的成绩,要求显示成绩

-- 学生表中查询18岁学生的学号
SELECT studentNo from students WHERE age = 18
-- 成绩表中根据学号查询成绩
SELECT * FROM scores where studentNo in ('002','006' )
SELECT * FROM scores where studentNo in (SELECT studentNo from students WHERE age = 18 )

以下例子查询的结果是一行(一行多列),这种称之为行子查询

例:查询和王昭君同班、同龄的学生信息

SELECT class,age from students where name = '王昭君'
SELECT * from students where class = '1班' and age = 20
SELECT * from students where (class,age) = ('1班' , '20')
SELECT * from students where (class,age) = (SELECT class,age from students where name = '王昭君')

子查询充当数据源

以下例子子查询返回的结果是多行多列(相当于一个表),这种称之为表级子查询;

例:查询数据库和系统测试的课程成绩

子查询中特定关键字使用

in范围

格式:主查询where条件in(列子查询)

any|some任意一个

格式:主查询where 列 = any(列子查询)

在条件查询的结果中匹配任意一个几个,等价于in

all

格式:主查询where列 = all(列子查询):等价于里面所有

格式:主查询where列<>all(列子查询):不等于其中所有

到此这篇关于mysql连接查询的文章就介绍到这了,更多相关mysql连接查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mysql多表连接查询实例讲解

    实际的项目,存在多张表的关联关系.不可能在一张表里面就能检索出所有数据.如果没有表连接的话,那么我们就需要非常多的操作.比如需要从A表找出限制性的条件来从B表中检索数据.不但需要分多表来操作,而且效率也不高.比如书中的例子: 代码如下: SELECT FId FROM T_Customer WHERE FName='MIKE' 这个SQL语句返回2,也就是姓名为MIKE 的客户的FId值为2,这样就可以到T_Order中检索FCustomerId等于2 的记录: 代码如下: SELECT FNu

  • 你知道哪几种MYSQL的连接查询

    前言 查询信息的来源如果来自多张表,则必须对这些表进行连接查询.连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理.连接查询分为内连接和外连接. 一,交叉连接 交叉连接,又称"笛卡尔连接"或"叉乘",它是所有类型的内连接的基础. 示例:实现线路表与车辆表,其语句如下: `slelect*from line CROSS JOIN vehicle 等价于:select*from line,vehicle 二,内连接 内连接是应用程序中非

  • MySQL多表连接查询详解

    目录 多表连接查询 内连接 左连接 右连接 子查询 总结 多表连接查询 表与表之间的连接分为内连接和外连接 内连接:仅选出两张表互相匹配的记录 外连接:既包括两张表匹配的记录,也包括不匹配的记录,同时外连接又分为左外连接(左连接)和右外连接(右连接) 内连接 首先准备两张表 学生student表 分数score表 内连接:在每个表中找出符合条件的共有记录 查询student表中的学生姓名和分数 第一种写法:只使用where select a.s_name, b.s_score from stud

  • Mysql自连接查询实例详解

    本文实例讲述了Mysql自连接查询.分享给大家供大家参考,具体如下: 自连接查询 假想以下场景:某一电商网站想要对站内产品做层级分类,一个类别下面有若干子类,子类下面也会有别的子类.例如数码产品这个类别下面有笔记本,台式机,智能手机等:笔记本,台式机,智能手机又可以按照品牌分类:品牌又可以按照价格分类,等等.也许这些分类会达到一个很深的层次,呈现一种树状的结构.那么这些数据要怎么在数据库中表示呢?我们可以在数据库中创建两个字段来存储id和类别名称,使用第三个字段存储类别的子类或者父类的id,最后

  • Mysql join连接查询的语法与示例

    连接查询: 是将两个查询(或表)的每一行,以"两两横同对接"的方式,所得到的所有行的结果,即一个表中的某行,跟另一个表中的某行.进行"横向对接",得到一个新行. 连接查询包括以下这些不同形式,连接方式: 交叉连接.内连接.外连接(分:左外连接,右外连接) 连接查询语法: select * from 表名 [连接方式] join 表名 [on 连接条件] where ...; 测试数据: mysql> select * from test; +----+----

  • mysql连接查询、联合查询、子查询原理与用法实例详解

    本文实例讲述了mysql连接查询.联合查询.子查询原理与用法.分享给大家供大家参考,具体如下: 本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询: 连接查询就是将多个表联合起来查询,连接查询方式有内连接.外连接.自然连接.交叉连接.连接查询使得可以同时查看多张表中数据. 内连接:有条件连接,多个表之间依据指定条件连接,匹配结果是保留符合匹配结果的记录. 外连接:与内连接不同的是不管匹配符不符合都保留,根据外连接

  • MySQL 连接查询的原理和应用

    概述 MySQL最强大的功能之一就是能在数据检索的执行中连接(join)表.大部分的单表数据查询并不能满足我们的需求,这时候我们就需要连接一个或者多个表,并通过一些条件过滤筛选出我们需要的数据. 了解MySQL连接查询之前我们先来理解下笛卡尔积的原理. 数据准备 依旧使用上节的表数据(包含classes 班级表和students 学生表): mysql> select * from classes; +---------+-----------+ | classid | classname |

  • MySQL中连接查询和子查询的问题

    目录 多表连接的基本语法 交叉连接和笛卡尔积现象 交叉连接 笛卡尔积现象 内连接 外连接 左外连接 右外连接 全外连接 子查询 多表连接的基本语法 多表连接,就是将几张表拼接为一张表,然后进行查询 select 字段1, 字段2, ... from 表1 {inner|lift|right} join 表2 on 连接条件; 有如下两张表:部门表和员工表 交叉连接和笛卡尔积现象 交叉连接 交叉连接,又名无条件内连接/笛卡尔连接 第一张表种的每一项会和另一张表的每一项依次组合 select * f

  • mysql连接查询详解

    目录 1.连接查询 2.连接类型 内连接 定义: 语法1: 语法2: 3个表连接 显示指定列 左连接 定义: 语法: 右连接 定义: 语法: 自关联 定义 子查询 定义 主查询 主查询和子查询的关系 子查询充当条件 子查询充当数据源 子查询中特定关键字使用 1.连接查询 作用:当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回 2.连接类型 内连接 定义: 内连接查询:查询结果为两个表匹配到的数据 语法1: select * from 表1 inner join

  • MySQL数据库学习之去重与连接查询详解

    目录 1.去重 2.连接查询 使用where进行多表连接查询 内连接 - 等值连接 内连接 - 非等值连接 内连接 - 自连接 外连接 - 左右外连接 三表连接 1.去重 示例表内容参考此文章 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据. 例如:去重显示岗位信息: mysql> select distinct job from emp; +-----------+ | job | +-----------+ | CLERK

  • MySQL笔记之连接查询详解

    连接查询是将两个或两个以上的表按某个条件连接起来,从中选取需要的数据 当不同的表中存在表示相同意义的字段时,可以通过该字段来连接这几张表 参考表:employee 参考表:department 可以看到,上面两张表都有同一个字段d_id 当两张表含有相同意义的字段(可以不同名)时就可以进行连接查询 内连接查询 复制代码 代码如下: mysql> SELECT num, name, employee.d_id, sex, d_name, function    -> FROM employee,

  • SQL中的连接查询详解

    Join 连接 (SQL Join) SQL Join (连接) 是利用不同数据表之间字段的关连性来结合多数据表之检索. SQL Join是结合多个数据表而组成一抽象的暂时性数据表以供数据查询,在原各数据表中之纪录及结构皆不会因此连接查询而改变. 这是一个客户数据表「customers」: C_Id Name City Address Phone 1 张一 台北市 XX路100号 02-12345678 2 王二 新竹县 YY路200号 03-12345678 3 李三 高雄县 ZZ路300号

  • SQL Server中的连接查询详解

    在查询多个表时,我们经常会用"连接查询".连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 知道了连接查询的概念之后,什么时候用连接查询呢? 一般是用作关联两张或两张以上的数据表时用的.看起来有点抽象,我们举个例子,做两张表:学生表(T_student)和班级表(T_class). T_student T_class 连接标准语法格式: SQL-9

  • MySql学习day03:数据表之间的连接、查询详解

    主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实际的业务逻辑. 主键使用方式: 方式一:     Create table t1(        Id int primary key,        Name varchar(100) ); Insert into t1 values(1,'zs'); Insert into t1 values(

  • MySql连接查询方式详解

    目录 1. 什么是连接查询 2. 连接查询的方式 3. 内连接 1. 等值连接 2. 非等值连接 3. 自连接 4. 外连接 1. 右外连接 2. 左外连接 5. 多张表(两张以上)连接 1. 什么是连接查询 从一张表中单独查询,称为单表查询. 跨表查询,多张表联合其来查询,称为连接查询. 2. 连接查询的方式 内连接: 等值连接 非等值连接 自连接 外连接: 左外连接(左连接) 右外连接(右连接) 当对多张表进行查询,没有任何限制的时候,返回的值是笛卡尔积 3. 内连接 1. 等值连接 查询每

  • MySQL连接查询实例详解

    本文实例讲述了MySQL连接查询.分享给大家供大家参考,具体如下: 创建表suppliers: CREATE TABLE suppliers ( s_id int NOT NULL AUTO_INCREMENT, s_name char(50) NOT NULL, s_city char(50) NULL, s_zip char(10) NULL, s_call CHAR(50) NOT NULL, PRIMARY KEY (s_id) ) ; INSERT INTO suppliers(s_i

随机推荐