精华内容
下载资源
问答
  • 假设存在两张表 c 和 p,这里使用的是MySQL数据库。 数据表 c: course_id title dept_name credits BIO-301 Genetics Biology 4 CS-190 Game Design Comp.sci 4 CS-315 Robotics ...select *
  • 在本篇文章里小编给大家整理的是一篇关于mysql sql99语法 内连接非等值连接的相关知识点文章,有需要的朋友们可以学习下。
  • java 用排序-合并算法实现两张表的等值连接
  • ** 小白终是踏上了这条不归路—-小文的mysql学习笔记(1) 小白终是踏上了这条不归路—-小文的...连接查询有点多,但是模式是固定的和前面的也基本相差不多。唉什么时候才能出去唉,我都在家两个多月了都没出过门。
  • sql92语法连接查询(等值连接,非等值连接,自连接) 连接查询 含义:又称多表查询,当查询的字段来自于多个表时,就要用到连接查询 笛卡尔积现象:表1 有m行,表2有n行,结果有m*n行 发生原因:没有有效的连接条件 ...

    sql92语法连接查询(等值连接,非等值连接,自连接)

    连接查询

    含义:又称多表查询,当查询的字段来自于多个表时,就要用到连接查询

    笛卡尔积现象:表1 有m行,表2有n行,结果有m*n行

    发生原因:没有有效的连接条件
    如何避免:添加有效的连接条件

    分类:
    按年代分类:
    sql92标准:仅仅支持内连接
    sql99标准【推荐】:支持内连接+外连接(左外+右外)+交叉连接

    ​ 按功能分类:
    ​ 内连接:
    ​ 等值连接,非等值连接,自连接
    ​ 外连接:
    ​ 左外连接,右外连接,全外连接
    ​ 交叉连接

    一,sql92标准

    1.等值连接

    ①多表等值连接的结果为多表的交集部分
    ②n表连接,至少需要n-1个连接条件
    ③多表连接,没有顺序
    ④一般要为表起别名
    ⑤可以搭配所有查询子句使用,比如排序,分组,筛选

    案例1:查询女生名和对应的男生名

    SELECT NAME,boyName
    FROM beauty,boys
    WHERE beauty.`boyfriend_id` = boys.`id`;
    

    案例2:查询员工名和对应的部门名

    SELECT last_name,department_name
    FROM employees,departments
    WHERE employees.`department_id` = departments.`department_id`;
    

    为表起别名

    好处:①提高语句的简洁度
    ②区分多个重名字段

    注意:如果为表起了别名,则查询的字段不能使用原来的表明去限定

    案例:查询员工名,工种号,工种名

    SELECT last_name,e.`job_id`,job_title
    FROM employees e,jobs j
    WHERE e.`job_id` = j.`job_id`;
    

    是否支持表的顺序是否可以调换

    案例:查询员工名,工种号,工种名

    SELECT last_name,employees.`job_id`,job_title
    FROM jobs,employees
    WHERE employees.`job_id` = jobs.`job_id`;
    

    是否支持筛选

    案例:查询有奖金的员工名,部门名

    SELECT last_name,department_name,commission_pct
    FROM employees e,departments d
    WHERE e.`department_id` = d.`department_id` AND e.`commission_pct` IS NOT NULL;
    

    案例2:查询城市名中第二个字符为o的对应的部门名和城市名

    SELECT department_name,city
    FROM departments d,locations l
    WHERE d.`location_id` = l.`location_id` AND `city` LIKE '_o%';
    

    是否支持分组

    案例1:查询每个城市的部门个数

    SELECT COUNT(*) 部门个数,city
    FROM departments d,locations l
    WHERE d.`location_id` = l.`location_id`
    GROUP BY city;
    

    案例2:查询出有奖金的每个部门的部门名,部门领导编号和该部门的最低工资

    SELECT department_name,d.`manager_id`,MIN(salary) 
    FROM departments d,employees e
    WHERE d.`department_id` = e.`department_id` AND commission_pct IS NOT NULL
    GROUP BY department_name,d.`department_id`;
    

    是否支持排序

    案例:查询每个工种的工种名和员工个数,并且按员工个数降序

    SELECT job_title,COUNT(*)
    FROM jobs j,employees e
    WHERE j.`job_id` = e.`job_id`
    GROUP BY job_title
    ORDER BY COUNT(*) DESC;
    

    是否支持三表连接

    案例:查询员工名,部门名和所在的城市

    SELECT last_name,department_name,city
    FROM employees e,departments d,locations l
    WHERE e.`department_id` = d.`department_id` AND d.`location_id` = l.`location_id`
    

    2.非等值连接

    案例:查询员工的工资和工资级别

    SELECT salary,grade_level
    FROM employees e,job_grades j
    WHERE salary BETWEEN lowest_sal AND highest_sal;
    

    3.自连接

    案例:查询员工名和上级名称

    SELECT e.employee_id,e.last_name,m.employee_id,m.last_name
    FROM employees e,employees m
    WHERE e.`manager_id` = m.`employee_id`;
    
    展开全文
  • 内链接:等值连接, 非等值连接,自连接 外连接 :左外,右外,全外 交叉连接 一般语法 SELECT 查询的列表 FROM 表1 别名1,表2 别名2 WHERE 表1.关键词= 表2.关键词; 【and 筛选条件】 【gr...

    多个表格查询,

    笛卡尔乘积现象;表1有m行,表2 有n行。  结果有m * n行

    发生原因在于没有有效的连接条件

    如何避免:添加有效的连接条件

    方法:分类方法

    按照年代分类:sql192标准和sql199标准

    功能

            内链接:等值连接, 非等值连接,自连接

            外连接 :左外,右外,全外

            交叉连接

    一般语法

    SELECT 查询的列表
    FROM 表1 别名1,表2 别名2
    WHERE 表1.关键词= 表2.关键词;
    【and 筛选条件】
    【group by 分组字段】
    【having 分组后的筛选】
    【order by 排序ASC,DESC】

    实操:首先你需要选择在两个表格中都存在的一个匹配项目, 就像是excel中的vlookup一样匹配当中的相似内容,这样才能设立连接条件

    假设我有一个班级学生个人信息表(stu_info),里面有学号(stu_id),然后我有一张只有学号的期末成绩表(score_count),我需要将这两个表连接起来,显示对应名字(name)和期末成绩(score),操作如下。

    SELECT name 姓名,score 期末成绩
    FROM stu_info,score_count
    WHERE stu_info.'stu_id'=score_count.'stu_id'
    # WHERE 姓名.'stu_id'=期末成绩.'stu_id'

    可以加筛选选项,或者排序判断等,任何表格的功能都是可以在这个等值查询上面实现的。

    多个表的等值连接

    跟两个表一样,将需要匹配的内容放在where 语句里面,并列的用and添加,可以添加多个。

    非等值连接

    非等值连接在于判断where语句的情况,假设有一个按照年龄区分的表格,10-20岁为小,20-35为中,35-60为老,然后我们需要匹配公司的全体员工属于哪一个范围以内的时候,可以采用在非等值连接,大致的程序思路如下。

    SELECT age
    FROM employees,age_count
    WHERE employees BETWEEN age.low_age AND age.high_age;

    自连接

    自连接顾名思义就是与自己的表进行判断匹配,平时我们可能看到过excel表中间有些内容是把某个属性匹配,比如一个学校有教职员工和学生的总表,学生也有代码教职员工也有自己的编码,学生还会有一个导师编码,这里就可以匹配学生所述的导师姓名

    SELECT s.all_id,s.name_id,t.all_id,t.name
    FROM all_list s,all_list t
    WHERE s.学生导师id = t.老师编号id
    【and 筛选】
    【group by 分组】
    【having 分组后筛选】
    【order by asc升序,desc降序】

    总结1.多表连接的结果为多表的交集部分

    2.n表连接,至少需要n-1个连接条件

    展开全文
  • 多表连接查询 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 ...内连接:等值连接 、非等值连接 、 自连接 外连接:左外连接 、 右外连接 、 全外连接 交叉连接 一、sql92标准 1》等值

    MySQL多表连接查询

    1. 含义:

    又称多表查询,当查询的字段来自于多个表时,就会用到连接查询

    笛卡尔乘积现象: 表1 有m行,
                                  表2 有n行,那么结果=m*n行
    在这里插入图片描述
    笛卡尔乘积现象:如果连接条件省略或无效的连接条件,导致现象出现
    解决办法:添加有效的连接条件
    在这里插入图片描述

    2. 分类:

    年代分类:
               sql92标准:仅仅支持内连接
               sql99标准:【推荐使用】:支持内连接、外连接(左外和右外)、交叉连接
    功能分类:
               内连接:等值连接 、非等值连接 、 自连接
               外连接:左外连接 、 右外连接 、 全外连接
               交叉连接.

    一、sql92标准

    1) 等值连接

    特点:
         ① 多表等值连接的结果为多表的交集部分
         ② n表连接,至少需要n-1个连接条件
         ③ 多表不分主次,没有顺序要求
         ④ 一般为表起别名,提高阅读性和性能
         ⑤ 可以搭配排序、分组、筛选….等子句使用

    # 查询员工名和对应的部门名
    在这里插入图片描述
    1. 为表起别名

    好处:
          ①提高语句的简洁度;
          ②区分多个重名的字段

    注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限定

    #查询员工名、工种号、工种名
    在这里插入图片描述
    这里需要用表名限定
    但如果反复用表名去限定,语句更复杂
    因此,可以为表名起别名
    在这里插入图片描述

    2. 两个表的顺序可以调换
    #查询员工名、工种号、工种名
    在这里插入图片描述

    3. 可以添加筛选条件
    #查询有奖金的员工名、部门名
    在这里插入图片描述
    #查询城市名中第二个字符为o的部门名和城市名
    在这里插入图片描述
    4. 可以添加分组
    #查询每个城市的部门个数
    在这里插入图片描述
    5. 可以添加排序
    #查询每个工种的工种名和员工的个数,并且按员工个数降序
    在这里插入图片描述
    6. 三表连接
    在这里插入图片描述

    2) 非等值连接

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3) 自连接

    #查询员工名和上级的名称
    在这里插入图片描述

    二、sql99语法:通过join关键字实现连接

    1. 含义: 1999年推出的sql语法
    2. 语法:
                select 查询列表
                from 表1 别名 【连接类型】
                join 表2 别名 on 连接条件
              【where 筛选条件】
              【group by 分组字段】
              【having 分组后的筛选条件】
              【order by 排序的字段或表达式】
    3. 分类:
               内连接 :inner
               外连接 :
                           左外 : left 【outer】
                           右外 :right【outer】
                           全外 : full 【outer】
                交叉连接 :cross join

    1> 内连接:

    语法:
             select 查询列表
             from 表1 别名
             inner join 表2 别名
             on 连接条件 ;
    分类:
             等值
             非等值
             自连接

    A. 等值连接

    特点:
           ①添加排序、分组、筛选
           ②inner可以省略
           ③筛选条件放在where后面, 连接条件放在on后面,提高分离性,便于阅读(sql99的好处)
           ④inner join连接和sql92语法中的等值连接效果是一样的,都是查询多表的交集

    1.查询员工名、部门名
    在这里插入图片描述
    注:两个表调换顺序,结果一样

    2.查询名字中包含e的员工名和工种名(添加条件)
    在这里插入图片描述

    3.查询部门个数>3的城市名和部门个数(添加分组+筛选)
    ① 查询每个城市的部门个数
    ② 在①结果上筛选满足条件的
    在这里插入图片描述
    4.查询员工个数>3的部门名和员工个数,且按个数降序的部门(添加排序)
    在这里插入图片描述
    5.查询员工名、部门名、工种名,并按部门名降序(三表连接)
    在这里插入图片描述
    B. 非等值连接
    查询工资级别的个数>20的个数,并且按工资级别降序
    在这里插入图片描述
    C. 自连接
    查询员工的名字、上级的名字

    2> 外连接

    用于查询一个表中有,另一个表中没有的记录

    特点:
          ①外连接的查询结果为主表中的所有记录
              *如果从表中有和它匹配的,则显示匹配的值
              *如果从表中没有和它匹配的,则显示null
              *外连接查询结果=内连接结果(交集部分)+主表中有而从表中没有的(用null填充)记录
          ②左外连接,left join左边的是主表
              右外连接,right join右边的是主表
          ③左外和右外交换两个表的顺序,可以实现同样的效果
          ④全外连接=内连接的结果+表1中有但表2没有的+表2中有但表1没有的

    左外连接 :
    #查询没有员工的部门
    注:查询的信息主要来自哪个表,哪个就是主表
    在这里插入图片描述
    添加条件 :

    在这里插入图片描述
    使用id是主键 绝对不为空

    右外连接 :
    在这里插入图片描述

    注 : 全外链接( MySQL不支持 )

    3> 交叉连接

    在这里插入图片描述
    sql92 VS sql99
    功能:    sql99支持的较多
    可读性: sql99实现连接条件和筛选条件的分离,可读性强
    在这里插入图片描述

    展开全文
  • 一,非等值连接 二,等值连接 三,自然连接 自然连接:是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中去除重复的属性列。 上面的等值连接进行比较的都是B属性,...

    一,非等值连接

    在这里插入图片描述

    二,等值连接

    在这里插入图片描述

    三,自然连接

    自然连接:是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中去除重复的属性列。
    上面的等值连接进行比较的都是B属性, 但还可以进行R.B = S.E等值连接, 而自然连接只能是同名属性组

    在这里插入图片描述

    四,总结

    1. 等值连接必须要有等值的条件,当条件不同时连接的结果也不相同,两个关系可以没有相同的属性列

    2. 自然连接必须要有相同的属性列才能进行,即等值连接之后要去除相同的属性列

    展开全文
  • 文章目录sql92标准的多表连接1、等值连接1.1 案例:1.2 等值连接加分组函数加排序1.3 三表连接2、非等值连接2.1 含义:2.2 案例:3、自连接3.1 含义:3.2 案例: 环境信息: 员工表:EMP 部门表: 工资等级表 ...
  • 1 等值连接 等值连接:它是基于两个表之间的相等测试,展现出来的是共同的数据,因此又称内部连接。 举例: # 等值连接/内部连接 -- 使用WHERE SELECT `snum`, `cname`, `grade` FROM `course`, `sc` WHERE `...
  • 表的别名 等值连接等值连接 create() 自定义创建你的第一张表 自连接
  • 等值连接

    2020-08-04 11:45:10
    #2、非等值连接 #案例1:查询员工的工资和工资级别 SELECT * FROM `job_grades`; SELECT `salary`,`employee_id` FROM `employees`; SELECT `salary`,`grade_level` FROM `employees` e,`job_grades` j WHERE `salary...
  • from 表1 别名 [连接类型] join 表2 别名 on 连接条件 where [筛选条件] group by [分组] having [筛选条件] order by [排序列表] 分类: 内连接: inner 外连接: 左外:left[outer] 右外 right[outer] ...
  • 深入分析内连接、外连接、左连接、右连接、等值连接、自然连接和自连接之间的区别,看这篇就够了!
  • 内连接(等值、非等值连接)、外连接(左外连接、右外连接、全连接)、自然连接、自连接
  • 文章目录1、笛卡尔积(交叉连接)2、等值连接 vs 非等值连接3、自连接 vs 非自连接4、内连接 vs 外连接5、SQL99语法新特性 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询...
  • inner join(等值连接) 语法:SELECT * FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号 作用:返回两个表中字段相等的行,A与B交集 三表连接语法:SELECT * FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号...
  • 一:等值连接 等值连接特点: 一:多表等值连接的结果为多表的交集部分 二:n表连接,至少需要n-1个连接条件 三:多表的顺序没有要求 四:一般需要为表起别名 五:可以搭配前面介绍的所有子句使用,比如排序,...
  • 内连接之等值连接:最大特点是:条件是等量关系。 案例:查询每个员工的部门名称,要求显示员工名和部门名。 下面是SQL92的(太老,不用了) mysql> select e.ename ,d.dname from emp e,dept d where e...
  • 1、等值连接:从左表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留。 2、内连接 以上可以看出,内连接有两种写法,一种是inner ...
  • 内连接:等值连接、非等值连接、自连接 外连接:左外连接、右外连接、全外连接 交叉连接 3. 等值连接 (1)查询女生名及其对应的男朋友名 SELECT girlname, boyname FROM boys, girls WH
  • 连接查询 含义:又称多表查询,当查询的字段来自于多个表时,就会使用到连接查询 笛卡尔乘积现象:表一有m行,表二有n行,结果=m*n行 发生原因:没有有效的连接条件 如何避免:添加有效的连接条件 分类:按年代分类:1sql192 ...
  • 在查询中,同时涉及两个或两个以上的表,要根据表中数据的情况作连接。 示例:查询学习课程名为‘数学’的学生学号和姓名。 select student.sno,sname from student,sc,course ...等值连接(连接条件...
  • HIVE 非等值连接的解决思路 hive低版本并不支持非等值连接,在表与表通过join关键字进行连接时, on 后面接的条件需要是区间式的话 比如: SELECT A.COL , B.COL FROM TABLEA A LEFT JOIN TABLEB B ON A.DATE<B....
  • 等值连接与自然连接的区别

    千次阅读 2020-12-04 23:04:20
    等值连接和自然连接相比较,正确的是 A等值连接和自然连接的结果完全相同 B等值连接的属性个数大于自然连接的属性个数 C等值连接的属性个数大于或等于自然连接的属性个数 D等值连接和自然连接的连接条件相同 等值...
  • 来源:blog.csdn.net/qq_44756792/article/details/95503303多表查询经常用到连接,各种连接之间的区别应该注意总结。首先大概认识各种连接的关系和...
  • 连接之非等量连接:最大的特点是:连接条件中关系是非等量关系。 案例:找出每个员工的工资等级,要求显示员工名,工资,工资等级。 下面是员工名和工资表: mysql> select ename,sal from emp;l +--------+---...
  • #连接查询 /* 概念:查询的字段来自于多个表 语法: select 字段1,字段2 ... 产生原因:没有加连接条件,导致结果为 表1 ... 等值连接(where)——非等值连接 二、sql99推出的标准,使用join关键字实现连接 ..
  • 标题:数据库查询语句内连接连接效率 作者:看不见鲸鱼的鼻子 原帖连接: https://blog.csdn.net/he1154910941/article/details/84866079 , ------------------------ 作者:小雷FansUnion 标题:优先使用...
  • 1. 等值连接 方式一 select * from 表1,表2 where 表1.列=表2.列 select * from 表1,表2这一句话出现笛卡尔积的现象。一个表的数目和另一个表的数据相乘。通过where进行筛选。 例1:查询学生信息及学生的成绩 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,128
精华内容 16,851
关键字:

等值连接