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. 01.DesignParttern设计模式,简单工厂,工厂方法,抽象工厂三大工厂的区别与联系

                工厂用来生产对象,对象具有方法和属性. 简单工厂的缺点(简单工厂并不是23中设计模式): 工厂类的职责相对过重,增加新的产品,需要修改工厂类的判断逻辑,违背开闭原则: JDK源 ...

  2. Windows 10长脸了!

    Windows 10一直毁誉参半,但是在微软的持续升级完善之下,同时随着时间的流逝,已经顺利成为全球第一大桌面操作系统,并开始逐渐甩开Windows 7,全球设备安装量已经达到约8亿部. 根据最新的S ...

  3. BGR to RGB排列

    BGR to RGB排列 2012年09月27日 13:59:48 雷电羊 阅读数:4759   https://blog.csdn.net/cjsycyl/article/details/80247 ...

  4. vue - data 接收 props 的值

    <template>   <div>     <div v-for="todo in a" :key="todo.id"> ...

  5. 008.Delphi插件之QPlugins,服务的两种调用方法

    这个QPlugins自带的DEMO,大概的意思就是,创建2个服务类,程序启动的时候注册这2个服务类.点击不同的按钮,使用不同的方法来调用这个服务. 效果界面如下 unit Frm_Main; inte ...

  6. JavaScript的调用

    1 方法调用模式 var myObject = { value : 0, increment : function(inc) { alert('hi'); } }; myObject.incremen ...

  7. android studio3.1 添加闪屏页面(启动欢迎界面)(例子简单无BUG)

    截图 启动页的 activity_splash.xml  我用了一张图片自己添加吧 <?xml version="1.0" encoding="utf-8" ...

  8. Windows和Ubuntu双系统时钟同步的方法。

    参考文章 https://blog.csdn.net/zyqblog/article/details/79318955 电脑安装Ubuntu和Windows双系统以后,每次Ubuntu时间和时区设了以 ...

  9. Vue.js(25)之 vue全局配置api介绍

    本文介绍的全局api并不在Vue的构造函数内,而是在Vue构造器外面提供这些方法,让我们扩展新功能. 1. vue.extend(options) 参考:https://www.w3cplus.com ...

  10. python+opencv+dlib瘦脸效果

    对实现人脸瘦脸简单功能的一个记录,大概流程如下: 1.使用dlib检测出人脸关键点 2.使用Interactive Image Warping 局部平移算法实现瘦脸 参考:https://blog.c ...