DQL多表查询
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多表查询的更多相关文章
- 06-查询操作(DQL)-单表查询
一. 综述 查询操作主要从两个方面来说:单表查询和多表查询. 单表查询包括:简单查询.过滤查询.结果排序.分页查询.聚集函数. 二 . 案例设计 1. 设计产品表(product).包括:主键 ...
- 07-查询操作(DQL)-多表查询
一. 综述 查询操作主要从两个方面来说:单表查询和多表查询. 多表查询包括:笛卡尔积.外键约束.内连接查询.外链接查询.自连接查询. 二 . 案例设计 1. 设计产品表(product). ...
- (七)MySQL数据操作DQL:单表查询1
(1)单表查询 1)环境准备 mysql> CREATE TABLE company.employee5( id int primary key AUTO_INCREMENT not null, ...
- DQL单表查询
DQL数据查询语言数据查询关键字:select 对数据库关系表中的数据进行查询 创建数据库创建表格学生表(学号s_no,姓名s_name,班级s_classno,课程s_courseno) 班级表(班 ...
- (七)MySQL数据操作DQL:多表查询2
(1)准备环境 1)创建员工表 mysql> create table company.employee6( -> emp_id int auto_increment primary ke ...
- Oracle锁表查询和解锁方法
数据库操作语句的分类 DDL:数据库模式定义语言,关键字:create DML:数据操纵语言,关键字:Insert.delete.update DCL:数据库控制语言 ,关键字:grant.remov ...
- oracle锁表查询
ORACLE EBS操作某一个FORM界面,或者后台数据库操作某一个表时发现一直出于"假死"状态,可能是该表被某一用户锁定,导致其他用户无法继续操作 复制代码代码如下: --锁表查 ...
- Oracle常用sql语句(二)之组函数、多表查询
DML(数据操纵语言) INSERT .UPDATE. DELETE 插入操作:INSERT: 语法: INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...); 注 ...
- MySQL数据表查询操作
准语法结构:编写DQL时一定要严格按照此语法的顺序来实现!/* SELECT [ALL | DISTINCT] ALL表示查询出所有的内容 DISTINCT 去重 {* | 表名.* | 表名.字段名 ...
随机推荐
- 01.DesignParttern设计模式,简单工厂,工厂方法,抽象工厂三大工厂的区别与联系
工厂用来生产对象,对象具有方法和属性. 简单工厂的缺点(简单工厂并不是23中设计模式): 工厂类的职责相对过重,增加新的产品,需要修改工厂类的判断逻辑,违背开闭原则: JDK源 ...
- Windows 10长脸了!
Windows 10一直毁誉参半,但是在微软的持续升级完善之下,同时随着时间的流逝,已经顺利成为全球第一大桌面操作系统,并开始逐渐甩开Windows 7,全球设备安装量已经达到约8亿部. 根据最新的S ...
- BGR to RGB排列
BGR to RGB排列 2012年09月27日 13:59:48 雷电羊 阅读数:4759 https://blog.csdn.net/cjsycyl/article/details/80247 ...
- vue - data 接收 props 的值
<template> <div> <div v-for="todo in a" :key="todo.id"> ...
- 008.Delphi插件之QPlugins,服务的两种调用方法
这个QPlugins自带的DEMO,大概的意思就是,创建2个服务类,程序启动的时候注册这2个服务类.点击不同的按钮,使用不同的方法来调用这个服务. 效果界面如下 unit Frm_Main; inte ...
- JavaScript的调用
1 方法调用模式 var myObject = { value : 0, increment : function(inc) { alert('hi'); } }; myObject.incremen ...
- android studio3.1 添加闪屏页面(启动欢迎界面)(例子简单无BUG)
截图 启动页的 activity_splash.xml 我用了一张图片自己添加吧 <?xml version="1.0" encoding="utf-8" ...
- Windows和Ubuntu双系统时钟同步的方法。
参考文章 https://blog.csdn.net/zyqblog/article/details/79318955 电脑安装Ubuntu和Windows双系统以后,每次Ubuntu时间和时区设了以 ...
- Vue.js(25)之 vue全局配置api介绍
本文介绍的全局api并不在Vue的构造函数内,而是在Vue构造器外面提供这些方法,让我们扩展新功能. 1. vue.extend(options) 参考:https://www.w3cplus.com ...
- python+opencv+dlib瘦脸效果
对实现人脸瘦脸简单功能的一个记录,大概流程如下: 1.使用dlib检测出人脸关键点 2.使用Interactive Image Warping 局部平移算法实现瘦脸 参考:https://blog.c ...