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. Python+opencv+pyaudio实现带声音屏幕录制

    原文链接:https://blog.csdn.net/zhaoyun_zzz/article/details/84341801 Python+opencv+pyaudio实现带声音屏幕录制原创luke ...

  2. 查看oracle单签session

    转自 https://blog.csdn.net/alexsong123/article/details/51858092 怎样查看oracle当前的连接数呢?只需要用下面的SQL语句查询一下就可以了 ...

  3. ROS常用库(二) Serial库(单片机和上位机串口通讯)

    比如我们做了个单片机,在win里面用串口调试助手接收和下发数据,那么在ubuntu里用ros怎么实现?换个说法,怎么实现上位机和下位机的通讯? 首先,用python自带的库就可以实现这个功能. 安装p ...

  4. 前端构建工具gulp超详细配置, 使用教程(图文)

    流程 1. 输入命令(可以使用git bash或者命令控制台cmd) npm install -g gulp 安装全局gulp命令 2. 创建一个项目文件夹, 当前项目文件夹下输入命令npm init ...

  5. db.mybatis.config

    config1: <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryB ...

  6. notifix测试

    成功 失败 警告 提示

  7. 项目启动报错:Communications link failure

    2017-12-29 10:43:19,776 ERROR [com.alibaba.druid.pool.DruidDataSource] - <init datasource error, ...

  8. pyhton中matplotlib箱线图的绘制(matplotlib双轴图、箱线图、散点图以及相关系数矩阵图))

    //2019.07.23 1.箱形图,又称为盒式图,一般可以很好地反映出数据分布的特征,也可以进行多项数据之间分布特征的比较,它主要包含五个基础数据:中位数,两个上下分位数以及上下边缘线数据 其中的一 ...

  9. Json实体类驼峰名称转化器

    背景 我们常用一些网站,将json转化成实体类.但不巧的是,这些自动生成的都是小驼峰.需要进一步的改成大驼峰+JsonProperty.接着同事说他已经有个工具了.我稍微简化了一下 方法 首先行分离. ...

  10. setup factory 设置自启动

    Registry.SetValue(HKEY_LOCAL_MACHINE, "Software//Microsoft//Windows//CurrentVersion//Run", ...