当前位置: 首页 > news >正文

mysql 交叉查询_MySQL连接查询,内连接,外连接,全连接,交叉连接

1.含义

当查询中涉及到多个表的字段,需要使用多表查询

select 字段1,字段2…

from 表1,表2…

笛卡尔积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接

2.多表连接分类

2.1按sql语言分类

sql92标准:仅仅支持内连接

sql99标准:支持内连接+外连接(左外+右外)+交叉连接

2.2按功能分类

内连接:

1.等值连接 (sql99 inner join,sql92 where A.key=B.key)

2.非等值连接

3.自连接

外连接:

1.左外连接 left join

2.右外连接 right join

3.全外连接 full join

交叉连接(sql99语法的笛卡尔乘积) cross join

3.多表连接语法

3.1sql92语法

select 查询列表

from 表1,表2

where 连接条件(表1.key=表2.key)

group by分组条件

having 分组后的筛选

order by 排序

limit(m,n) 排序后取从m行开始取值,取n行

注意连接条件:

等值连接 : where 表1.key=表2.key

非等值连接: where 非等值连接条件

自连接: where 自连接条件

说明:

自连接指的是同一个表的自连接

3.2sql99语法

93d5153ea5841c2c9ce5223b75cd040e.png

交叉连接(sql99版的笛卡尔积)

语法:

select 查询列表

from 表A cross join 表B

4.练习

查找所有已经分配部门的员工的last_name和first_name以及dept_no(请注意输出描述里各个列的前后顺序)

CREATE TABLE dept_emp (

emp_no int(11) NOT NULL,

dept_no char(4) NOT NULL,

from_date date NOT NULL,

to_date date NOT NULL,

PRIMARY KEY (emp_no,dept_no));

CREATE TABLE employees (

emp_no int(11) NOT NULL,

birth_date date NOT NULL,

first_name varchar(14) NOT NULL,

last_name varchar(16) NOT NULL,

gender char(1) NOT NULL,

hire_date date NOT NULL,

PRIMARY KEY (emp_no));

sql92参考示例:

select e.last_name,e.first_name,d.dept_no

from dept_emp as d,employees as e

where e.emp_no=d.emp_no;

sql99参考示例:

select e.last_name,e.first_name,d.dept_no

from dept_emp as d inner join employees as e

on e.emp_no=d.emp_no;

查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括暂时没有分配具体部门的员工(请注意输出描述里各个列的前后顺序)

CREATE TABLE dept_emp (

emp_no int(11) NOT NULL,

dept_no char(4) NOT NULL,

from_date date NOT NULL,

to_date date NOT NULL,

PRIMARY KEY (emp_no,dept_no));

CREATE TABLE employees (

emp_no int(11) NOT NULL,

birth_date date NOT NULL,

first_name varchar(14) NOT NULL,

last_name varchar(16) NOT NULL,

gender char(1) NOT NULL,

hire_date date NOT NULL,

PRIMARY KEY (emp_no));

左外连接参考示例:

select e.last_name,e.first_name,d.dept_no

from employees as e

left join dept_emp as d

on e.emp_no=d.emp_no;

右外连接参考示例:

select e.last_name,e.first_name,d.dept_no

from dept_emp as d

right join employees as e

on e.emp_no=d.emp_no;

相关文章:

  • java中 springurl_基于SpringMVC中的路径参数和URL参数实例
  • java句子倒序_Java实现英文句子中的单词顺序逆序输出的方法
  • JAVA边学边练答案_Struts2边学边练(1)-HelloWorld
  • php gzip css 乱码,php使用gzip压缩传输js和css文件的方法
  • php静态检测工具,PHP静态代码分析工具,可以检测未捕获的异常?
  • php 挂起一个请求一直执行,在后台运行进程挂起PHP pag
  • php设置cookie路径,php 设置cookie路径例子总结
  • 服务器被上传文件php,求助,哪位大神遇到过这种情况,linux服务器总是被上传这些文件...
  • php m grep gd,ubuntu – php5-gd显示在“php -i | grep -i gd“但不是在phpinfo();
  • php my global.h,11月13日任务 - 志明咖的个人空间 - OSCHINA - 中文开源技术交流社区...
  • php限制输入数字,如何使用javascript和php禁用数字输入类型
  • php7 curl 慢,PHP7无法加载curl模块
  • 二叉树建树java,二叉树的建树、遍历(先序、中序、后序、层次)(递归和非递归)--Java实现...
  • 集卡php源码,PHP自动售货发卡网源码 集成多种支付接口
  • q币充值php,腾讯Q币会员充值
  • 【node学习】协程
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 2019年如何成为全栈工程师?
  • angular学习第一篇-----环境搭建
  • Apache的基本使用
  • Debian下无root权限使用Python访问Oracle
  • git 常用命令
  • golang中接口赋值与方法集
  • Magento 1.x 中文订单打印乱码
  • Rancher-k8s加速安装文档
  • SQLServer之创建数据库快照
  • Vue 2.3、2.4 知识点小结
  • yii2中session跨域名的问题
  • 安卓应用性能调试和优化经验分享
  • 从重复到重用
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 排序算法学习笔记
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 数据科学 第 3 章 11 字符串处理
  • 云大使推广中的常见热门问题
  • 怎么把视频里的音乐提取出来
  • 智能合约开发环境搭建及Hello World合约
  • 自动记录MySQL慢查询快照脚本
  • 走向全栈之MongoDB的使用
  • k8s使用glusterfs实现动态持久化存储
  • 阿里云重庆大学大数据训练营落地分享
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​低代码平台的核心价值与优势
  • #etcd#安装时出错
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #前后端分离# 头条发布系统
  • $GOPATH/go.mod exists but should not goland
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (20050108)又读《平凡的世界》
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (python)数据结构---字典
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)计算机毕业设计SSM在线影视购票系统