DQL多表查询

一、多表查询
实现多个表之间查询数据

1.交叉连接
笛卡尔积:A表中的每一行匹配B表中的每一行
基本结构:
select [数据库名1.]表名1,属性名1,......,
[数据库名.]表名.属性名
from [数据库名.]表名;

2.交叉连接的条件筛选

select [数据库名1.]表名1,属性名1,......,
[数据库名.]表名.属性名
from [数据库名.]表名
where 条件表达式;

外键:

3、内连接
使用比较运算符,根据表中匹配的属性 列出与条件相匹配的数据

内连接关键字:inner join

select [数据库名1.]表名1,属性名1,......,
[数据库名.]表名.属性名
from [数据库名.]表名1
inner join [数据库名2.]表名2
on 条件表达式;

交叉连接与内连接的区别:
内连接比交叉连接更省空间,并且效率更高

4.外连接
连接就是把内连接再进行筛选 又分为左外链接 右外连接和全外连接

1.左外连接
是以左表为基准,显示左表查询字段所有记录,右表值显示和左表相匹配的记录,没有匹配的用null代替。

关键字:left join
select [数据库名1.]表名1.属性名1,……,
[数据库名n.]表名n.属性名n
from [数据库名1.]表名1 left join [数据库名2.]表名2
on 条件表达式;

2、右外连接(右连接)
是以右表为基准,显示右表查询字段所有记录,左表只显示和右表匹配的记录,没有匹配的用null代替。
关键字:right join;
select [数据库名1.]表名1.属性名1,……,
[数据库名n.]表名n.属性名n
from [数据库名1.]表名1 right join [数据库名2.]表名2
on 条件表达式;
==
select [数据库名1.]表名1.属性名1,……,
[数据库名n.]表名n.属性名n
from [数据库名2.]表名2 left join [数据库名1.]表名1
on 条件表达式;

3、全外连接(全连接)
全连接的左右表不做限制,显示全部数据,没有匹配的数据用NULL代替。
关键字:full join;
mysql不支持全连接;

使用左连接和右连接实现全连接
连接:union

五、多表联查
可以连接查询多个表中的数据(一般最好不要超过4个表)

一般格式:
select [数据库名1.]表名1.属性名1,……,[数据库名n.]表名n.属性名n
from [数据库名1.]表名1 inner join [数据库名2.]表名2
on 条件表达式
inner join [数据库名3.]表名3 on 条件表达式
inner join [数据库名n.]表名n on 条件表达式……;

六、表取别名
表取别名格式:
在查询的from 表名 表的别名

多表联查的两种格式的区别及表取别名的使用:
select s.s_name 姓名,c.c_name 班级,cou.cou_name 课程
from student s inner join class c on s.sc_no=c.c_no
inner join course cou on s.scou_no=cou.cou_no;

select s.s_name 姓名,c.c_name 班级,cou.cou_name 课程
from student s inner join class c inner join course cou
on s.sc_no=c.c_no && s.scou_no=cou.cou_no;

DQL多表查询的更多相关文章

  1. 06-查询操作(DQL)-单表查询

    一. 综述   查询操作主要从两个方面来说:单表查询和多表查询. 单表查询包括:简单查询.过滤查询.结果排序.分页查询.聚集函数. 二 . 案例设计   1. 设计产品表(product).包括:主键 ...

  2. 07-查询操作(DQL)-多表查询

    一. 综述    查询操作主要从两个方面来说:单表查询和多表查询. 多表查询包括:笛卡尔积.外键约束.内连接查询.外链接查询.自连接查询. 二 . 案例设计   1.  设计产品表(product). ...

  3. (七)MySQL数据操作DQL:单表查询1

    (1)单表查询 1)环境准备 mysql> CREATE TABLE company.employee5( id int primary key AUTO_INCREMENT not null, ...

  4. DQL单表查询

    DQL数据查询语言数据查询关键字:select 对数据库关系表中的数据进行查询 创建数据库创建表格学生表(学号s_no,姓名s_name,班级s_classno,课程s_courseno) 班级表(班 ...

  5. (七)MySQL数据操作DQL:多表查询2

    (1)准备环境 1)创建员工表 mysql> create table company.employee6( -> emp_id int auto_increment primary ke ...

  6. Oracle锁表查询和解锁方法

    数据库操作语句的分类 DDL:数据库模式定义语言,关键字:create DML:数据操纵语言,关键字:Insert.delete.update DCL:数据库控制语言 ,关键字:grant.remov ...

  7. oracle锁表查询

    ORACLE EBS操作某一个FORM界面,或者后台数据库操作某一个表时发现一直出于"假死"状态,可能是该表被某一用户锁定,导致其他用户无法继续操作 复制代码代码如下: --锁表查 ...

  8. Oracle常用sql语句(二)之组函数、多表查询

    DML(数据操纵语言) INSERT .UPDATE. DELETE 插入操作:INSERT: 语法: INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...); 注 ...

  9. MySQL数据表查询操作

    准语法结构:编写DQL时一定要严格按照此语法的顺序来实现!/* SELECT [ALL | DISTINCT] ALL表示查询出所有的内容 DISTINCT 去重 {* | 表名.* | 表名.字段名 ...

随机推荐

  1. metasploit练习

    复现ms08_067_netapi 使用模块 msf5 > use exploit/windows/smb/ms08_067_netapi 查看配置 msf5 exploit(windows/s ...

  2. S7-300过程映像区详解

      一.概念  W过程镜像区输入字 PIW立即输入区字  PIW不用等系统刷新,立即读入 IW等待系统刷新后读入   二.PIW/IW,PQW/QW  引用西门子论坛一位大侠的比方加深理解:      ...

  3. Elasticsearch学习入门

    一.关于Elasticsearch 1.特点 Elasticsearch基于全文搜索引擎 Apache Lucene ,由Java开发而来,面向API进行搜索, Restful 风格,分布式文件存储. ...

  4. html5,css3炫酷实例-元素

    自动完成输入框下拉列表 使用的插件:jquery-ui 使用数据源实现文本框的自动完成功能 <link href="https://cdn.bootcss.com/jqueryui/1 ...

  5. 001.Delphi插件之QPlugins,一个最简单的插件

    安装QPlugins里面的Demo,复制粘贴着写了一个最简单的插件,看看好不好用 EXE代码如下: unit Main_Frm; interface uses Winapi.Windows, Wina ...

  6. PL/SQL 找到某列都为空的列名

    DECLARE CURSOR temp IS SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME=Upper('xxx'); v_num ...

  7. Python 日志模块详解

    前言 我们知道查看日志是开发人员日常获取信息.排查异常.发现问题的最好途径,日志记录中通常会标记有异常产生的原因.发生时间.具体错误行数等信息,这极大的节省了我们的排查时间,无形中提高了编码效率.所以 ...

  8. C#:string、stringBuffer、stringBuilder的区别

    好脑子不如烂笔头,总是记不住,记下来吧 依然 搬运 地址: http://blog.csdn.net/qq_28187979/article/details/76607253 ------------ ...

  9. S7-300 实训3 异步电机正反转控制

    含有视频 方便以后查阅 参考书籍 跟我动手学 S7-300/400 PLC 第2版  廖常初 主编 实训3 异步电动机 正反转控制 步骤1 步骤2 在 cycle execution 前方 右击 插入 ...

  10. 75.Python中ORM聚合函数详解:Sum

    Sum:某个字段的总和. 1. 求图书的销售总额,示例代码如下: from django.http import HttpResponse from django.db import connecti ...