mysql关联查询语句
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关联查询语句相关推荐
- mysql 查询语句 参数,mysql参数化查询语句有关问题
mysql参数化查询语句问题 部分代码如下: using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.O ...
- Mysql 关联查询的优化 及 子查询优化
Mysql 关联查询的优化 left join ①EXPLAIN SELECT * FROM class LEFT JOIN book ON class.card = book.card; ②如何优化 ...
- MySQL高级查询语句——超详细,一篇就够了
MySQL高级查询语句 一.MySQL进阶查询 1.1.按关键字排序--order by 1.2.对结果进行分组--group by 1.2.1.单个分组 1.2.2.分组结合order by使用 1 ...
- mysql中如何分页查询_MySQL_mysql分页原理和高效率的mysql分页查询语句,以前我在mysql中分页都是用的 l - phpStudy...
mysql分页原理和高效率的mysql分页查询语句 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一些,那我 ...
- Mysql高级查询语句练习
Mysql高级查询语句练习 DROP TABLE IF EXISTS `tblcourse`; CREATE TABLE `tblcourse` ( `CourseId` varchar(3) NOT ...
- MySQL 基本查询语句
MySQL基本查询语句 表示例 id name price author stock img_path 1 java从入门到放弃 80.00 国哥 7 static/img/default.jpg 2 ...
- 为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快
为什么MySQL做查询语句时,第一次会很慢,但是第二次,第三次就会变快 为什么MySQL的查询事务第一次执行会很慢,第二次,第三次就会快很多呢? 在国外,有个老外这么提问 Hi, I have an ...
- 【SQL】MySQL的查询语句
文章目录 SELECT语句 WHERE子句 JOIN语句 GROUP BY和HAVING ORDER BY LIMIT 其他关键字 MySQL是一种广泛使用的关系型数据库管理系统,它被广泛地应用于各种 ...
- MySQL数据查询语句
MySQL数据查询语句 MySQL 表单查询是指从一张表的数据中查询所需的数据,主要有查询所有字段.查询指定字段.查询指定记录.查询空值.多条件的查询.对查询结果进行排序分组等. 查询结构 SELEC ...
- mysql关联查询操作表最新数据
mysql关联查询操作表最新数据 mysql关联查询操作表最新数据的几种方式(max,order by)和性能分析,再数据量较多,关联ID存在索引的情况下建议使用方式二,速度更快.具体请看SQL及EX ...
最新文章
- win10如何修改文件拓展名?
- html5赛车小游戏,html5公路赛车小游戏
- 自由自在休闲食品引领时尚潮流
- 【20171123】【GITC精华演讲】贝业新兄弟李济宏:如何做到企业信息化建设的加减乘除...
- mysql ignore 1 lines_MYSQL使用笔记(1)
- NHibernate扩展:FluentNHibernate基础教程
- SharePoint 2010 - User Profile Sync Service自动停止
- 看完豁然开朗!美团java面试难吗
- mysql怎么给sex设置默认值_记一次mysql优化操作
- 数学建模--偏最小二乘法
- vum安装mysql_CentOS安装MySQL的完整步骤
- 计算机wps文字背景怎么设置,如何在wps文本中添加背景以及如何将图片设置为页面背景...
- 江苏省2021年高考成绩查询入口,江苏省教育考试院2021年江苏高考成绩查询时间及系统入口【预计6月24日起查分】...
- PHP手册翻译日记[1]
- lcs问题java_动态规划法(十)最长公共子序列(LCS)问题
- UG NX 12抽取体特征
- FPGA之IP核的使用、搞懂功能仿真和时序仿真
- c语言字符串去重用指针,用几条shell命令快速去重10G数据
- 20X25 FCPX插件24种视频网站点赞订阅关注MG动画效果 Youtube Subscribe Generators
- opencv java 车牌定位_用opencv实现在图像找到车牌号并检测出车牌号
热门文章
- XAP部署错误代码大全
- “搏一搏,单车变摩托!”华为天才少年耗时四个月,将自行车强势升级为自动驾驶...
- 关于小米手机网站抢购的一点技术分析
- 动易访问mysql_服务器如何设置动易系统数据库路径的方法
- 苹果助手一键安装_再见!国内经典的iOS越狱助手,正式宣布下线
- SQL Bulk Insert
- oracle backup exec,利用Backup Exec 2010进行异机恢复测试
- backup exec linux卸载,Symantec Backup Exec 2012 Agent for Linux 卸载
- 磁盘加密工具-TrueCrypt
- im即时通讯软件app源码-仿微信-开发日记