首页 > 其他分享 >99语法:交叉连接,自然连接,内连接查询

99语法:交叉连接,自然连接,内连接查询

时间:2023-02-24 13:13:33浏览次数:27  
标签:语法 join -- 99 dept emp 连接 select

 【1】多表查询引入:
实际开发中往往需要针对两张甚至更多张数据表进行操作,而这多张表之间需要使用主键和外键关联在一起,然后使用连接查询来查询多张表中满足要求的数据记录。

一条SQL语句查询多个表,得到一个结果,包含多个表的数据。效率高。在SQL99中,连接查询需要使用join关键字实现。

提供了多种连接查询的类型: cross   natural   using   on

交叉连接(CROSS JOIN)是对两个或者多个表进行笛卡儿积操作,所谓笛卡儿积就是关系代数里的一个概念,表示两个表中的每一行数据任意组合的结果。比如:有两个表,左表有m条数据记录,x个字段,右表有n条数据记录,y个字段,则执行交叉连接后将返回m*n条数据记录,x+y个字段。笛卡儿积示意图如图所示。  

【2】sql展示:

 

-- 查询员工的编号,姓名,部门编号:
select * from emp;
select empno,ename,deptno from emp;
-- 查询员工的编号,姓名,部门编号,部门名称:
select * from emp; -- 14条记录
select * from dept; -- 4条记录 
-- 多表查询 :
-- 交叉连接:cross join
select * 
from emp
cross join dept; -- 14*4 = 56条 笛卡尔乘积 : 没有实际意义,有理论意义
select * 
from emp
join dept; -- cross 可以省略不写,mysql中可以,oracle中不可以
-- 自然连接:natural join 
-- 优点:自动匹配所有的同名列 ,同名列只展示一次 ,简单
select * 
from emp
natural join dept;
select empno,ename,sal,dname,loc 
from emp
natural join dept;
-- 缺点: 查询字段的时候,没有指定字段所属的数据库表,效率低
-- 解决: 指定表名:
select emp.empno,emp.ename,emp.sal,dept.dname,dept.loc,dept.deptno
from emp
natural join dept;
-- 缺点:表名太长
-- 解决:表起别名
select e.empno,e.ename,e.sal,d.dname,d.loc,d.deptno
from emp e
natural join dept d;
-- 自然连接 natural join 缺点:自动匹配表中所有的同名列,但是有时候我们希望只匹配部分同名列:
-- 解决: 内连接 - using子句:
select * 
from emp e
inner join dept d -- inner可以不写
using(deptno) -- 这里不能写natural join了 ,这里是内连接
-- using缺点:关联的字段,必须是同名的 
-- 解决: 内连接 - on子句:
select * 
from emp e
inner join dept d
on (e.deptno = d.deptno);
-- 多表连接查询的类型: 1.交叉连接  cross join  2. 自然连接  natural join  
-- 3. 内连接 - using子句   4.内连接 - on子句
-- 综合看:内连接 - on子句
select * 
from emp e
inner join dept d
on (e.deptno = d.deptno)
where sal > 3500;
-- 条件:
-- 1.筛选条件  where  having
-- 2.连接条件 on,using,natural 
-- SQL99语法 :筛选条件和连接条件是分开的

 

标签:语法,join,--,99,dept,emp,连接,select
From: https://www.cnblogs.com/89564f/p/17151035.html

相关文章

  • 99语法:交叉连接,自然连接,内连接查询
    ​ 【1】多表查询引入:实际开发中往往需要针对两张甚至更多张数据表进行操作,而这多张表之间需要使用主键和外键关联在一起,然后使用连接查询来查询多张表中满足要求的数据......
  • JavaScript语法快速学习
    资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战),本人才疏学浅,记录其笔记以供他日回顾视频链接知识点<!--Javascript:客户端的一个脚本语言js是一门弱类型......
  • JDBC——连接SQL Server环境配置
    JDBC:使用JAVA语言操作关系型数据库的API。是一套标准的接口。步骤1.创建工程,导入驱动jar包2.注册驱动:Class.forName("com.mysql.jdbc.Driver");3.获取连接:Connectionc......
  • Esp32连接wifi
    1、用安卓数据线连接上esp322、main.cpp代码如下#include<Arduino.h>#include<WiFi.h>voidWiFi_Connect(){WiFi.begin("erdao_pinpai_2.4","erdao123456");//......
  • MyBatis支持多种数据库连接(多种sql语法支持)
    1、说明这里说的多种数据库连接,是指同时支持多种Sql语法,可做到不同类型数据库使用同一套后台代码而不用改动,不是多数据源。这里有一种简单的方式可以实现,就是使用MyBatis的d......
  • JSON_概念与JSON_语法_定义
    JSON_概念1.概念:JavaScriptObjectNotationJavaScript对象表示法Personp=newPerson();p.setName("张三"); p.setA......
  • dbeaver连接达梦数据库
    dbeaver连接达梦数据库1、DBeaver可以绿色版安装,下载zip包解压即可使用下载地址:https://dbeaver.io/download/或者网盘地址:链接:https://pan.baidu.com/s/16_eIJu5F-4-rz......
  • Windows 技术篇 - 远程桌面连接不保存密码、每次都要输入密码问题解决
    https://blog.csdn.net/qq_38161040/article/details/120013883通过 gpedit.msc 打开本次组策略编辑器。选择 模板管理-系统-凭据分配-允许分配保存的凭据用......
  • C# HttpClient使用和注意事项,.NET Framework连接池并发限制
    System.Net.Http.HttpClient类用于发送HTTP请求以及从URI所标识的资源接收HTTP响应。HttpClient实例是应用于该实例执行的所有请求的设置集合,每个实例使用自身的......
  • 换个角度理解TCP建立连接为什么需要三次握手
    1、第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。2、换个易于理解的视角来看为什么要3次握手。客户端和服务端通信前要进行连接,“3次握手”的......