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 去重 {* | 表名.* | 表名.字段名 ...
随机推荐
- zabbix WebUI自定义Nginx监控项模板
zabbix webUI自定义Nginx监控项模板 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.创建模板 1>.如下图所示,依次点击"配置" --- ...
- 单选与多选与label
单选radio和多选checkbox是用name属性关联的 相同的name就相当于同一道题 <input type="radio" name="radio" ...
- 传入sql语句,执行完提取内容赋值到控件上
class procedure DBTools.FillStrings(ComboBoxEh: TDBComboBoxEh; sql: string; Default: Boolean = False ...
- Most simple basic of internet programming based on two different machines sharing the same local net
This blog is just shown for the most simple basic of internet programming based on two different mac ...
- 小米百元NFC智能神器来了:必成爆款!
6月14日,小米手环4全渠道首卖,其中电商平台今日10:00开卖,线下小米之家需要顾客持本人身份证限购一台. 首销结束后,米家官微宣布,小米手环4下一轮开售时间在6月18日上午10:00,届时小米手环 ...
- 12.swoole学习笔记--锁机制
<?php //创建锁对象 $lock=new swoole_lock(SWOOLE_MUTEX);//互斥锁 echo "创建互斥锁\n"; //开始锁定 主进程 $loc ...
- 三十三、在SAP中通过选择屏幕,选择我们需要的数据
一.代码如下,注意红色框框中的语句 二.我们选择一条数据 三.输出结果如下
- 本地Redis服务配置
本地Redis服务配置 要求:在虚拟机中启动redis服务,并要在windows物理机上取得链接 虚拟机安装略,(结果如下) windows工作机上装了Oracle VM VirtualBox,并在其 ...
- 通过 spark.files 传入spark任务依赖的文件源码分析
版本:spak2.3 相关源码:org.apache.spark.SparkContext 在创建spark任务时候,往往会指定一些依赖文件,通常我们可以在spark-submit脚本使用--file ...
- apache flink源码挖坑 (未完待续)
Apache Flink 源码解读(一) By yyz940922原创 项目模块 (除去.git, .github, .idea, docs等): flink-annotations: flink ...