MySQL数据库连接查询(内连接)
连接查询
1. 交叉连接(笛卡尔积)Cross Join
实例1.1:完成车辆表与线路表的交叉连接
代码如下:
-- 1.1实现线路表与车辆表笛卡尔积
SELECT * FROM line CROSS JOIN vehicle
运行效果:
语法:SELECT 字段列表 FROM 表名1 CROSS JOIN 表名2
交叉连接要点总结:使用select语句查询 通过from 表名1 CROSS JOIN 表名2 实现交叉连接(笛卡尔积)
缺点:如果不用on语句标识相同字段名,则会出现重复记录
2.内连接查询 INNER JOIN
实例2.1: 使用内连接获取车辆型号含有“DD”字样的车辆信息和司机信息,要求车辆信息为全部列,机信息中只需包含姓名和身份证
-- 2.1使用内连接获取车辆型号含有“DD”字样的车辆信息和司机信息,要求车辆信息为全部列,司机信息中只需包含姓名和身份证
SELECT name '姓名' , licenseNo '身份证',vehicleID '车辆ID',plateNo '车牌编号' , model '车辆型号',type '车辆种类' ,lineID '线路ID',driverID '司机ID'
FROM driver join vehicle on driver.driverID = vehicle.driverID
WHERE model LIKE 'DD%'
实例2.2: 使用内连接获取年龄大于 35 岁的司机信息和该司机所驾驶的车辆信息,要求车辆信息为全部列,司机信息中只需包含姓名、出生年月和电话
-- 2.2使用内连接获取年龄大于 35 岁的司机信息和该司机所驾驶的车辆信息,要求车辆信息为全部列,司机信息中只需包含姓名、出生年月和电话
SELECT name '姓名' , birthday '出生年月' , phone '电话',vehicleID '车辆ID',plateNo '车牌编号' , model '车辆型号',type '车辆种类' ,lineID '线路ID'
FROM driver JOIN vehicle on driver.driverID = vehicle.vehicleID
WHERE FLOOR(DATEDIFF(NOW(),birthday)/365) > 35
语法:SELECET 字段列表 FROM 表名1 [INNER(内连接)] JOIN 表名2 ON 表名1.字段名(与表名2字段名相同) = 表名2.字段名(与表名1字段相同) 【where 条件表达式】
内连接要点总结:
1.INNER 可以省略.
2.WHERE 看情况使用.
3.表名1和表名2的字段名连接条件一般为主键和外键关系.
4.On 表可以别名 如果使用了别名 那么只能用别名来标识
5.如果使用on标识相同字段那么这个字段无法被查询(实例1中如下的问题)
3. 自然连接 NATURAL JOIN
实例3.1: 使用自然连接获取车辆型号含有“DD”字样的车辆信息和司机信息,要求车辆信息为全部列,司机信息中只需包含姓名和身份证
-- 3.1使用自然连接获取车辆型号含有“DD”字样的车辆信息和司机信息,要求车辆信息为全部列,司机信息中只需包含姓名和身份证
SELECT lineID '线路ID',driverID '司机编号',name '姓名' , licenseNo '身份证',vehicleID '车辆ID',plateNo '车牌编号' , model '车辆型号',type '车辆种类'
FROM driver NATURAL JOIN vehicle
WHERE model LIKE 'DD%'
语法: SELCET 字段列表 FROM 表名1 NATURAL JOIN 表名2 【WHERE 条件表达式】
自然连接要点总结:
1.如果需要查询表中相同字段使用内连接on表名1.字段名 = 表名2.字段名 会报错,但自然连接可以避免这个问题
2.自然连接会自动排除重复字段记录
3.总的来说自然连接很方便
4.多表查询
实例4.1:获取所有非空调车的车牌号、型号和司机姓名、所属线路的线路号、起点站和终点站信息
--4.1获取所有非空调车的车牌号、型号和司机姓名、所属线路的线路号、起点站和终点站信息
SELECT name '姓名',type '车辆种类', model '车辆型号',lineNo '线路号' , from_station '起点站' ,end_station '终点站'
FROM driver JOIN vehicle ON driver.driverID = vehicle.driverID JOIN line ON vehicle.lineID = line.lineID
WHERE type ='非空调车'
实例4.2: 获取公交二公司所有司机信息。要求输出司机姓名、身份证、性别和电话
-- 4.2获取公交二公司所有司机信息。要求输出司机姓名、身份证、性别和电话
SELECT name '姓名',licenseNo '身份证',gender '性别',phone '电话'
FROM driver D JOIN vehicle V ON D.driverID = v.driverID JOIN line L ON V.lineID = L.lineID
WHERE company = '公交二公司'
语法:SELECT 字段列表 FROM 表名1 JOIN 表名2 ON 表名1.字段名1 = 表名2.字段名1 JOIN 表名3 ON 表名2.字段名2 = 表名3.字段名2
多表查询要点总结:
1.了解清楚表与表之间的关联(关系)
2.一般表与表之间的相同字段比较的都为主键和外键
3.多表查询一般为三表或以上连接查询的方法和三表连接查询的方法一样,都为两两相连的方式实现.
知识总结:
1.连接查询需要弄清表与表之间的关系,特别是多表查询需要在表与表之间有着清晰的关系认识,一般相同的字段都为主键和外键的关系。
2.可以给表起别名,但是上下语句之间要统一。
3.交叉连接和自然连接相比,个人认为自然连接很好用^ . ^.
MySQL数据库连接查询(内连接)相关推荐
- MySQL数据库连接查询(外连接)
*外连接查询 语法:SELECT 字段列表 FROM 表名1 LEFT|RIGHT|FULL JOIN 表名2 ON 表名1.字段名1 = 表名2.字段名1 ON后面表示两张表通过某种连接条件,多半为 ...
- mysql限制查询/外连接查询和内连接查询/联合查询
mysql查询之limit限制查询 作用:对查询结果起到限制条数的作用 语法:limit n,m n:代表起始条数值,默认为0:m代表取出的条数 应用场合:数据量过多时,起到限制作用 如图 mysql ...
- mysql数据库多表查询(内连接,外连接,自连接,子查询及案例分析)
mysql数据库多表查询 之前接触的项目或者自己涉及的部分对于多表查询的使用都比较的少,常常是自己更具案例进行学习,最近见到的比较的多,所以今天就好好的总结一下,为下一步学习做准备! 1.多表查询关系 ...
- mysql连接查询 内连接查询 外连接查询
连接查询 连接查询是将两个或两个以上的表按照某个条件连接起来,从中选取需要的数据: t_book表: id bookName price author bookTypeId t_bookType表: ...
- MySQL数据库的内连接,左外连接和右外连接查询
1.首先谈一谈数据库的连接查询有什么作用? 简单的说就是在实际生活中,当我们查询某些数据的时候,一张表不可能为我们提供足够多的数据,其次在数据库的设计的时候,考虑到表的结构和复杂性,会设计多张分类表, ...
- mysql内连接部门平均值_详解MySql基本查询、连接查询、子查询、正则表达查询_MySQL...
查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...
- MySQL连接查询 内连接和外连接的区别
MySQL 连接查询 @ sunRainAmazing 1.使用连接查询的场景 将多张表进行记录的连接查询(按照某个字段指定的条件进行数据的拼接):进行数据的拼接(两张表的内容显示在一个结果表中 使用 ...
- 全网最全的mysql表的关联查询(内连接,外连接)
Mysql 多表连接查询 inner join 和 outer join 的使用 JOIN的含义就如英文单词"join"一样,连接两张表,大致分为 内连接,外连接,右连接,左连接, ...
- Mysql数据库基本操作(六)多表查询-内连接查询,外连接查询
数据准备 use mydb3 ; --创建部门表 create table if not exists dept3 ( deptno varchar (20) primary key , --部门号 ...
最新文章
- 数据分析 python 用途-想做好数据分析,不用Python怎么行?
- python笔记本-如何用Python在笔记本电脑上分析100GB数据(上)
- js截取超链接后参数
- microsoft visual c++全家桶_Adobe 2020 MAC全家桶最新版不闪退
- 都说 VR 开发坑太多,结果华为云 5G Cloud VR 放了个大招儿!
- 机器学习算法的流程总结
- 在css中使用hover来控制其他元素的样式,该两个元素必须是父子元素
- vb中typename函数
- CMS:内容管理系统
- 6 RFID的ISOIEC标准
- 安装ROS中出现bash: /opt/ros/melodic/setup.bash: 没有那个文件或目录或者bash: /opt/ros/kinetic/setup.bash:的解决办法
- c中字符串分割函数strtok
- sqlserver Month()函数取日期不足两位的加 0
- 狂神ajax,Ajax 学习笔记 by狂神说
- Office系列函数之Left函数的使用
- Python3 post请求上传文件
- 氩弧焊机的电气图_瑞凌TIG200A氩弧焊完整图(MOS管)分析
- java selenium一一等待超时设置
- Java开源项目管理工具大全
- 软件需求管理(二) 需求获取