MySQL关联查询

  • 前言
    • 内连接
      • 等值内连接
        • where子句
        • on子句
        • using子句
        • 自然连接
      • 非等值内连接
    • 外连接
      • 左外连接
      • 右外连接
      • 全外连接
    • 交叉连接

前言

MySQL中当查询数据来自多张表时需要用到关联查询,其中关联查询又分为内连接、外连接、交叉连接。
创建两张表,分别是学生表、课程表。建表语句如下:

create table employee(empNo INT PRIMARY KEY,eName varchar(10) not NULL,job varchar(10),salary VARCHAR(10),dempNo VARCHAR(10) not NULL
);create table demp(dempNo VARCHAR(10) PRIMARY KEY,dempName VARCHAR(10) not NULL
);
insert into demp VALUES('1','采购部'),('2','运营部'),('3','开发部'),('4','运维部');
insert INTO employee VALUES(1,'张三','采购','2000','1'),(2,'李四','采购','2000','1'),(3,'王五','采购','3000','1'),(4,'赵六','运营','3000','2'),(5,'田七','开发','6000','3');
alter TABLE employee ADD INDEX(dempNo);
alter table demp add INDEX(dempNo);

内连接

内连接又分为等值内连接与非等值内连接。其中等值内连接涉及where子句、on子句、using子句以及自然连接。

等值内连接

where子句

查询每个员工的编号、姓名、薪资、部门名称。

select employee.empNo,employee.eName,employee.salary,demp.dempName from employee,demp WHERE employee.dempNo=demp.dempNo;

结果:

on子句

查询员工姓名、薪水、部门名称

select e.eName,e.salary,d.dempName FROM demp d inner JOIN employee e ON e.dempNo=d.dempNo;

using子句

查询员工姓名、薪水、部门名称

select e.eName,e.salary,d.dempName from demp d INNER JOIN employee e USING(dempNo);

自然连接

以左右两表相同字段作为关联条件,会自动去掉重复字段。

select e.eName,e.salary,d.dempName FROM demp d NATURAL JOIN employee e;

非等值内连接

> < != between and都属于非等值条件。

select e.empNo,e.eName,e.dempNo,d.dempName from employee e,demp d WHERE e.dempNo=d.dempNo AND e.empNo BETWEEN 1 AND 3;

外连接

外连接主要分为左外连接、右外连接、全外连接。

左外连接

在内连接的基础上保证左表的数据都有,右表的字段用null补充,同样的字段会重复出现。

select * FROM demp d LEFT JOIN employee e on d.dempNo=e.dempNo;

右外连接

在内连接的基础上保证右表的数据都有,左表的字段用null补充,同样的字段会重复出现。

select * from employee d RIGHT JOIN demp e on d.dempNo=e.dempNo;

全外连接

在内连接基础上保证左右表的数据都有,是左连接和有连接的并集

select * from employee e full JOIN demp d on e.dempNo=d.dempNo;

需要关注的是,mysql中并不支持全外连接,想要实现全外连接可以通过union。

交叉连接

左表每条记录与右表每条记录首尾相连,创建数据库demp表中有4条数据,employee表中有5条数据,即查询结果共有4*5=20条记录。

select * from demp d CROSS JOIN employee e;

over;

mysql关联查询语句相关推荐

  1. mysql 查询语句 参数,mysql参数化查询语句有关问题

    mysql参数化查询语句问题 部分代码如下: using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.O ...

  2. Mysql 关联查询的优化 及 子查询优化

    Mysql 关联查询的优化 left join ①EXPLAIN SELECT * FROM class LEFT JOIN book ON class.card = book.card; ②如何优化 ...

  3. MySQL高级查询语句——超详细,一篇就够了

    MySQL高级查询语句 一.MySQL进阶查询 1.1.按关键字排序--order by 1.2.对结果进行分组--group by 1.2.1.单个分组 1.2.2.分组结合order by使用 1 ...

  4. mysql中如何分页查询_MySQL_mysql分页原理和高效率的mysql分页查询语句,以前我在mysql中分页都是用的 l - phpStudy...

    mysql分页原理和高效率的mysql分页查询语句 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一些,那我 ...

  5. Mysql高级查询语句练习

    Mysql高级查询语句练习 DROP TABLE IF EXISTS `tblcourse`; CREATE TABLE `tblcourse` ( `CourseId` varchar(3) NOT ...

  6. MySQL 基本查询语句

    MySQL基本查询语句 表示例 id name price author stock img_path 1 java从入门到放弃 80.00 国哥 7 static/img/default.jpg 2 ...

  7. 为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快

    为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快 为什么MySQL的查询事务第一次执行会很慢,第二次,第三次就会快很多呢? 在国外,有个老外这么提问 Hi, I have an ...

  8. 【SQL】MySQL的查询语句

    文章目录 SELECT语句 WHERE子句 JOIN语句 GROUP BY和HAVING ORDER BY LIMIT 其他关键字 MySQL是一种广泛使用的关系型数据库管理系统,它被广泛地应用于各种 ...

  9. MySQL数据查询语句

    MySQL数据查询语句 MySQL 表单查询是指从一张表的数据中查询所需的数据,主要有查询所有字段.查询指定字段.查询指定记录.查询空值.多条件的查询.对查询结果进行排序分组等. 查询结构 SELEC ...

  10. mysql关联查询操作表最新数据

    mysql关联查询操作表最新数据 mysql关联查询操作表最新数据的几种方式(max,order by)和性能分析,再数据量较多,关联ID存在索引的情况下建议使用方式二,速度更快.具体请看SQL及EX ...

最新文章

  1. win10如何修改文件拓展名?
  2. html5赛车小游戏,html5公路赛车小游戏
  3. 自由自在休闲食品引领时尚潮流
  4. 【20171123】【GITC精华演讲】贝业新兄弟李济宏:如何做到企业信息化建设的加减乘除...
  5. mysql ignore 1 lines_MYSQL使用笔记(1)
  6. NHibernate扩展:FluentNHibernate基础教程
  7. SharePoint 2010 - User Profile Sync Service自动停止
  8. 看完豁然开朗!美团java面试难吗
  9. mysql怎么给sex设置默认值_记一次mysql优化操作
  10. 数学建模--偏最小二乘法
  11. vum安装mysql_CentOS安装MySQL的完整步骤
  12. 计算机wps文字背景怎么设置,如何在wps文本中添加背景以及如何将图片设置为页面背景...
  13. 江苏省2021年高考成绩查询入口,江苏省教育考试院2021年江苏高考成绩查询时间及系统入口【预计6月24日起查分】...
  14. PHP手册翻译日记[1]
  15. lcs问题java_动态规划法(十)最长公共子序列(LCS)问题
  16. UG NX 12抽取体特征
  17. FPGA之IP核的使用、搞懂功能仿真和时序仿真
  18. c语言字符串去重用指针,用几条shell命令快速去重10G数据
  19. 20X25 FCPX插件24种视频网站点赞订阅关注MG动画效果 Youtube Subscribe Generators
  20. opencv java 车牌定位_用opencv实现在图像找到车牌号并检测出车牌号

热门文章

  1. XAP部署错误代码大全
  2. “搏一搏,单车变摩托!”华为天才少年耗时四个月,将自行车强势升级为自动驾驶...
  3. 关于小米手机网站抢购的一点技术分析
  4. 动易访问mysql_服务器如何设置动易系统数据库路径的方法
  5. 苹果助手一键安装_再见!国内经典的iOS越狱助手,正式宣布下线
  6. SQL Bulk Insert
  7. oracle backup exec,利用Backup Exec 2010进行异机恢复测试
  8. backup exec linux卸载,Symantec Backup Exec 2012 Agent for Linux 卸载
  9. 磁盘加密工具-TrueCrypt
  10. im即时通讯软件app源码-仿微信-开发日记