精华内容
下载资源
问答
  • 多表查询sql语句语法
    万次阅读
    2021-03-03 10:11:37
                           **sql语句多表关联查询语法**
    

    一、外连接

    1.左连接 left join 或 left outer join

    SQL语句:select * from student left join score on student.Num=score.Stu_id;

    2.右连接 right join 或 right outer join

    SQL语句:select * from student right join score on student.Num=score.Stu_id;

    3.完全外连接 full join 或 full outer join

    SQL语句:select * from student full join score on student.Num=score.Stu_id;

    通过上面这三种方法就可以把不同的表连接到一起,变成一张大表,之后的查询操作就简单一些了。

    而对于select * from student,score;则尽量不使用此语句,产生的结果过于繁琐。

    二、内连接

    join 或 inner join

    SQL语句:select * from student inner join score on student.Num=score.Stu_id;

    此时的语句就相当于:select * from student,score where student.ID=course.ID;

    三、交叉连接

    cross join,没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积。

    SQL语句:select * from student cross join score;

    四、结构不同的表连接

    当两表为多对多关系的时候,我们需要建立一个中间表student_score,中间表至少要有两表的主键。

    SQL语句:select s.Name,C.Cname from student_score as sc left join student as s on s.Sno=sc.Sno left join score as c on c.Cno=sc.Cno

    select C_name,grade from student left join score on student.Num=score.Stu_id where name=‘李五一’;
    红色部分即中间表,是集合两表所有内容的一张总表。

    五、UNION操作符用于合并两个或多个select语句的结果集。

    UNION内部的SELECT语句必须拥有相同数量的列,每个列也必须拥有相似的数据类型,每条SELECT语句中的列的顺序必须相同。

    select Num from student union select Stu_id from score;
    union操作符是默认查重的,如果允许重复的值,就可以使用union all 。对于两张结构相同的表,union也可以把他们合并成一张表:

    select * from student1 union select *from student2;
    六、子查询

    有时候,查询时需要的条件是另外一个select语句的结果,就会使用到子查询。

    1.带IN关键字的子查询

    SQL语句:select * from student where Num IN(select Stu_id from score);

    2.带EXISTS关键字的子查询

    exists内查询返回一个真价值,若返回true时,外查询进行查询,否则外查询不进行查询。

    SQL语句:select * from student where exists(select * from score where C_name=‘计算机’);

    3.带ANY关键字的子查询

    使用ANY关键字只要有一个满足,就通过该条件来执行外查询。

    SQL语句:select sname,(date_format(from_days(now())-to_days(birthday)),’%Y’)+0) as ‘年龄’ from student where birthday>ANY(select birthday from student where bumen=‘计算机系’);

    4.带ALL关键字的子查询

    使用ALL关键字必须满足所有的内层查询语句返回的所有结果,才执行外查询

    SQL语句:select sname,(date_format(from_days(now())-to_days(birthday)),’%Y’)+0) as ‘年龄’ from student where birthday>ALL(select birthday from student where bumen=‘计算机系’);

    更多相关内容
  • sql语句多表查询

    万次阅读 2022-03-16 09:56:06
    文章目录一、笛卡尔积(交叉连接) ---->cross join1、概念2. 语法3.示例二、内连接---->inner join1、概念2....返回结果集合中的数据行数等于第一个中符合查询条件的数据行数乘以第二个中符合查询条件的


    一、笛卡尔积(交叉连接) ---->cross join

    1、概念

     笛卡尔积又称为“交叉连接”,将两个表中所有数据行。返回结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
    (相当于合并两张表单为一张,表单中所有字段都保存展示)
    

    例如,A={a,b},B={0,1,2} 则
    AxB={<a,o>,<a,1>,<a,2>,<b,0>,<b,1>,<b,2>,}
    BxA={<0,a>,<0,b>,<1,a>,<1,b>,<2,a>,<2,b>}

    2. 语法

    在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用’,’

    SELECT * FROM table1 CROSS JOIN table2;

    SELECT * FROM table1 JOIN table2;

    SELECT * FROM table1 , table2;

    3.示例

    1. 示例1、合并两个表内容(纯粹连接查询)
    select * from employees,dept_emp;
    

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

    二、内连接---->inner join

    1、概念

      在MySQL中把INNER JOIN叫做等值连接,即需要指定等值连接条件INNER JOIN被划分在一起。
    

    (1)、必须有等值条件;
    (2)、内连接可能会丢失信息;
    (内连接是从结果表中删除与其他被连接表中没有匹配行的所有行)
    (3)、重点:内连接,只查匹配行。

    2. 语法

    第一种:只使用where

    SELECT * FROM table1 a,table2 b where a.id=b.id ;

    第二种:join…on

    SELECT * FROM table1 a JOIN table2 b on a.id=b.id;

    第三种:inner join … on

    SELECT * FROM table1 a inner join table2 b on a.id=b.id;

    3.示例

    select * from salaries a,dept_manager b where a.emp_no=b.emp_no;
    
    select * from salaries a join dept_manager b on a.emp_no=b.emp_no;
    

    在这里插入图片描述

    三、外链接---->outer join

    1、概念

     分为左外连接( LEFT OUTER JON )和右连接(RIGHT OUTER JOIN),
     即除了返回符合连接条件的结果之外,
     还要返回左表(左连接)或者右表(右连接)中不符合连接条件的结果,相对应的使用NULL对应。
    

    1、左外连接 left inner join
    左边主表,左所有数据都显示,右边显示相关联 ,没有数据显示null
    2、右外连接 right inner join
    右边主表,右所有数据都显示,左边显示相关联 ,没有数据显示null

    2. 语法

    SELECT * FROM table1 a left join table2 b on a.id=b.id ;

    SELECT * FROM table1 a right join table2 b on a.id=b.id;

    3.示例

    (1)两张表以左表为准

    select * from salaries a left join dept_manager b on a.emp_no=b.emp_no;
    

    在这里插入图片描述
    (2)三张表
    A left join B on A.id=B.id left join C on B.code=C.code

    SELECT last_name, first_name, dept_name
    FROM employees a LEFT JOIN dept_emp b ON a.emp_no=b.emp_no
    LEFT JOIN departments c ON b.dept_no=c.dept_no;
    

    在这里插入图片描述

    四、联合连接---->union

    1、概念

     两个sql语句,中间用union连接
     union all 分别查看&不去重
    

    2.示例

    select device_id, gender, age, gpa
    from user_profile
    where university='山东大学'
    
    union all
    
    select device_id, gender, age, gpa
    from user_profile
    where gender='male'
    

    在这里插入图片描述

    展开全文
  • SQL多表查询基本语法与实例

    千次阅读 2021-03-16 22:53:05
    多表查询就是在一条查询语句中,从张表里一起取出所需的数据,如果要想进行多表查询,直接在FROM子句之后跟上即可,此时的语法如下: select [DISTINCT]*|列名称[AS][列别名],列名称[AS][列别名],...FROM ...

               多表查询就是在一条查询语句中,从多张表里一起取出所需的数据,如果要想进行多表查询,直接在FROM子句之后跟上多个表即可,此时的语法如下:

    select [DISTINCT]*|列名称[AS][列别名],列名称[AS][列别名],...FROM 表名称1[表别名],表名称2[表别名2]...

    [WHERE 条件(S)]

    [ORDER BY 排序的字段1 ASC|DESC,排序的字段1 ASC|DESC...];

    例:查询emp,dept两张表的数据

    select * from emp,dept

     

    从上表中可以看到,一共返回了39条数据,而且可以看到,有很多数据重复的。这些数据就是笛卡尔积造成的。在进行多表连接查询的时候,由于数据库内部的处理机制,会产生一些“无用”的数据,而这些数据就称为笛卡尔积。

     

    --消除笛卡尔积

    select *

    from emp,dept

    where emp.deptno = dept.deptno;

     

    一般而言,如果要想进行笛卡尔积的消除,往往会使用关联字段。由于多张表之间可能会有重名的字段,所以在进行重名字段访问的时候,前面需要加上表名称。采用“表名称.字段”的方式来进行访问。

    --多表查询范例:

    --查询每个雇员编号、姓名、职位、基本工资、部门名称、部门位置信息

    select emp.empno,emp.ename,emp.job,emp.sal,dept.dname,dept.loc

    from emp,dept

    where emp.deptno = dept.deptno;

     

    步骤:

    确定所需要的数据表:

    emp:查询每个雇员的编号,姓名,职位,基本工资

    dept表:部门名称,部门位置。

    确定一致的关联字段:

    部门与雇员关联:emp.deptno = dept.deptno

    随后还需要按照一个SQL语法编写

     

    多表查询别名定义:

    --查询出每个雇员的编号、姓名、基本工资、工资等级

    select e.empno,e.ename,e.sal,s.grade

    from emp e,salgrade s

    where e.sal BETWEEN s.losal AND s.hisal;

     

    --为了更加清楚的显示处工资等级的信息,现在希望可以按如下格式进行替换显示:

    --grade = 1:显示为“E等工资”

    --grade = 2:显示为“D等工资”

    --grade = 3:显示为“C等工资”

    --grade = 4:显示为“B等工资”

    --grade = 5:显示为“A等工资”

     

    select e.empno,e.ename,e.sal,

    DECODE(s.grade,1,'E等工资',2,'D等工资',3,'C等工资',4,'B等工资',5,'A等工资') grade

    from emp e,salgrade s

    where e.sal BETWEEN s.losal AND s.hisal;

     

    --查询两张以上的表

    --例:查询每个雇员的姓名,职位,基本工资,部门名称,工资等级

    确定所需的数据表:

    --emp表:每个雇员的姓名、职位、基本工资;

    --dept表:部门名称

    --salgrade:工资等级:

    --确定一致的关联字段:

    --雇员和部门:emp.deptno = dept.deptno

    --雇员和工资等级:emp.sal BETWEEN salgrade.losal AND salgrade.hisal

     

    select e.ename,e.job,e.sal,d.dname,

    DECODE(s.grade,1,'E等工资',2,'D等工资',3,'C等工资',4,'B等工资',5,'A等工资') grade

    from emp e,dept d,salgrade s

    where e.deptno = d.deptno AND e.sal BETWEEN s.losal AND s.hisal;

     

    注:多表查询之中,每当增加一个关联表都需要设置消除笛卡尔积的条件。

    展开全文
  • 达梦8数据库操作语法
  • SQL语句多表连接查询语法

    万次阅读 多人点赞 2019-07-28 09:32:13
    总结:内连接就是两个的交集 ,左外连接就是左边加两交集 ,右外连接就是右边加两交集 ...SQL语句:select * from student left join score on student.Num=score.Stu_id; 2.右连接 right join 或 r...

     

     

    总结:内连接就是两个表的交集 ,左外连接就是左边表加两表交集 ,右外连接就是右边表加两表交集

     

     

    一、外连接

    1.左连接  left join 或 left outer join

    SQL语句:select * from student left join score on student.Num=score.Stu_id;

    2.右连接  right join 或 right outer join

    SQL语句:select * from student right join score on student.Num=score.Stu_id;

    3.完全外连接  full join 或 full outer join

    SQL语句:select * from student full join score on student.Num=score.Stu_id;

    通过上面这三种方法就可以把不同的表连接到一起,变成一张大表,之后的查询操作就简单一些了。

    交叉连接查询,这种查询方式基本不会使用,原因就是这种查询方式得到的是两个表的乘积(笛卡儿集)

    语法就是select * from a,b;则尽量不使用此语句,产生的结果过于繁琐。

     

    内连接查询,可以有效的去除笛卡尔集现象

    内连接查询分为两类:

     

    二、内连接 

    join 或 inner join

    SQL语句:select * from student inner join score on student.Num=score.Stu_id;

    此时的语句就相当于:select * from student,score where student.ID=course.ID;

     

    内连接查询分为两类:

    隐式内连接

    select * from A,B where 条件                                          隐式连接使用别名:

    select * from A 别名1,B 别名2 where 别名1.xx=别名2.xx;

    显示内连接

    select * from A inner join B on 条件 (inner可以省略)  显示连接使用别名:

    select * from A 别名1 inner join B 别名2 on 别名1.xx=别名2.xx

    举例:

    三、交叉连接

    cross join,没有where指定查询条件的子句的交叉联接将产生两表的笛卡尔积。

    SQL语句:select * from student cross join score;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • MySQL多表查询语句

    千次阅读 热门讨论 2021-05-30 08:59:12
    MySQL多表查询语句 1.内连接查询 1.隐式内连接:使用where条件消除无用数据 例子: --查询所有员工信息和对应的部门信息 SELECT * FROM emp,dept WHERE emp.dept_id=dept.id; --查询员工的姓名,性别,...
  • MySQL学习-多表联合查询sql语法

    千次阅读 2022-01-11 10:16:35
    总结:内连接就是两个的交集 ,左外连接就是左边加两交集 ,右外连接就是右边加两交集 1.内连接查询 join 或 inner join 分为两类: 隐式内连接 select * from A,B where 条件 隐式连接使用别名: select *...
  • SQL语句详解(四)——SQL联表查询

    千次阅读 2021-12-15 11:13:11
    今天我们继续给大家介绍MySQL相关知识,本文主要内容是SQL表查询。 一、SQL表查询简介 二、内链接 三、外链接 四、交叉链接 五、结果链接
  • 求三联合查询SQL查询语句

    千次阅读 2021-02-08 16:01:25
    对于开发人员来讲,大同小异 4、SQL的全称是:Structured Query Language(结构化查询语言)SQL<>SQLServer<>MSSQLServer。最常见的错误。 5、除了Access、SQLServerCE等文件型数据库之外,大部分数据库都需要数据库...
  • Oracle数据库的多表关联查询SQL语句

    千次阅读 2021-05-03 03:04:12
    将字段中所有的数据聚合在一条中1、sum(字段名) :求总和2、avg(字段名) :求平均值3、max(字段名) :求最大值4、min(字段名) :求最小值5、count(字段名、*) :统计行数----2、按部门编号,查询平均薪水 ,并且平均...
  • sql多表查询语句

    千次阅读 2020-12-10 20:48:19
    sql多表关联 inner join(等值连接) 只返回两个中联结字段相等的行 left join(左联接) 返回包括左中的所有记录和右中联结字段相等的记录 right join(右联接) 返回包括右中的所有记录和左中联结字段相等...
  • 多表联合查询SQL语句

    万次阅读 2018-10-30 17:09:57
    多表联合查询SQL语句一:  select dpt.`dept_namee`, dpt.`principal_name`, dpt.`unit_type`, info.`sys_name`, info.`dept_name`, info.`begin_use_time`, gd.`pro_grade`, gd.`pro_time`, gd....
  • SQL语句查询语句完整语法

    千次阅读 2018-05-14 17:54:17
    的完整数据信息是:完整语法是:Select [select选项] 字段列表[字段别名]/* from 数据源 [where 字句] [group by子句 ][having 子句][order by 子句][limit 子句];①[select选项]:Select 选项包含:ALL(所有,...
  • SQL语句(四)联表查询

    千次阅读 2021-08-02 17:16:00
    文章目录一、关联查询的分类按年代分按功能分二、sql92语法的链接语法1. 简单应用2. 为起别名3. 加入筛选4. 加入分组5. 三连接6. 非等值连接7. 自连接 一、关联查询的分类 按年代分 sql92:仅仅支持内连接 sql99...
  • SQL里3个的连接查询语句怎么写

    万次阅读 2020-06-25 12:04:40
    1、SQL语句: select u.*,r.*,r.id rid from user u left join sys_user_role sur on u.id = sur.userid left join sys_role r on sur.roleid = r.id 图片: 请点击输入图片描 请点击输入图片描述 ...
  • 目录SQL查询语句基础查询条件查询模糊查询字段控制查询排序聚合函数分组查询having子句limit分页查询多表连接查询 SQL查询语句 数据查询语言。 数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给...
  • SQL语法(五) 多表联合查询

    万次阅读 多人点赞 2018-09-09 09:00:01
    当需要获取的数据分布在张中,考虑使用联合查询,本章将学习两种查询方式(sql92/sql99) 范例 1.笛卡儿积 将的数据进行一一对应,所得到结果为多表的笛卡尔积。结果的数量为所有的数量的乘积。 --...
  • sql基础语句(联表查询)

    千次阅读 2020-07-20 16:41:53
    sql基础语句(联表查询) SQL表查询 1、创建数据库、 -- 创建一个测试的数据库 create database test charset = utf8; -- 选择切换到这个数据库 use test; -- 创建一个学生 create table student( stuid integer...
  • 查询中涉及到了的字段,需要使用多表查询 select 字段1,字段2,…… from 1,2,…… 二、分类 按年代分 sql192: 等值连接 非等值连接 自连接 sql199【推荐使用】 内连接 等值连接 非等值连接 自...
  • sql指令和多表关系 ### 1. 排序 (order by) 数据库的查询(排序:order by) 默认是按升序排列的,但是升序ASC最好写上,代码可读性! SELECT * FROM 表名 ORDER BY 排序字段 ASC(升序)|DESC(降序); 如果排序列的值...
  • 3联查sql语句

    万次阅读 2018-04-10 18:57:31
    ************************************学生Student*******************************************DROP TABLE IF EXISTS `student`;CREATE TABLE `student` ( `stuId` varchar(255) NOT NULL, `stuName` varchar...
  • 金仓SQL语法详解

    2019-04-12 13:10:18
    本资源为金仓数据SQL语法详解文档,kingbase SQL 欢迎大家下载
  • SQL语句多表联合查询

    万次阅读 2017-03-18 12:25:57
    本周之前,对于数据库的使用仅限于简单的增删改查(insert、delete、updata、select),而这一周由于工作需要,对一些sql函数、sql语句多表联合查询、T-SQL语句基本语法、存储过程编写等有了简单的学习,现将一周所...
  • SQL语句- 条件查询

    千次阅读 2021-06-24 21:52:12
    SELECT 语句 SELECT查询的 WHERE 子句 =, !=, < <=, >, >= :Standard numerical operators 基础的 大于,等于等比较 between…and…: 在…和…之间 not between…and…: 不在…和…之间 IN (…): 在...
  • Sql语句的基本查询用法,两联查,3联查

    万次阅读 多人点赞 2019-01-24 09:27:45
    查询表中所有学生的信息: Select * from exam; 查询表中所有学生的姓名和对应的英语成绩: Select name,englich from exam; 过滤表中的重复数据: Select distinct english from exam; 在所有学生分数上加...
  • 查询有数据的值,右没有的数据会显示出NULL值 语法 left---join---on 示例: select s.*,c.*,d.* from 表名 s left join 表名 c on c.id = s.sid left join 表名 d on d.id = s.sid select s.*,c....
  • mysql 分页查询sql语句

    千次阅读 2021-01-18 19:13:54
    语法:select * from table limit [offset,] rows | rows offset offsetmysql分页使用limit,limit 子句可以被用于强制 select 语句返回指定的记录数。limit 接受一个或两个数字参数。参数必须是一个整数常量。如果...
  • SQL语句多条件查询

    万次阅读 2020-05-01 15:36:23
    SQL条件查询中如果有and和or,and的优先级高于or,如果不加括号会先运行and,然后再运行or 数据 一、查询时先且查询,则先and条件查询查询结果与or后面的条件进行或查询 SQL语句 select * from ceshi ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 402,899
精华内容 161,159
关键字:

多表查询sql语句语法