首页 > 其他分享 >第八章:连接查询

第八章:连接查询

时间:2024-06-13 16:02:35浏览次数:13  
标签:join name 第八章 查询 score sc st 连接 select

一、连接查询

基本概念

  • 当查询结果来源于多张表时,需要将多张表连成一个大的数据集,在筛选合适的结果
  • 连接查询可以通过连接运算符(连接条件)可以实现多个表查询

内连接

  • 查询的结果把两张表中相同的地方连接起来

左链接

  • 查询结果包括内连接,同时查询左表特有的数据,对于右表中不存在的数据使用null填充

右连接

  • 查询结果包括内连接,同时查询右表特有的数据,对于左表中不存在的数据使用null填充

二、连接语法

内连接语法

1.内连接标准语法推荐

主要找2张表中关联(相同)字段

-- 语法一:
select * from 表1 inner join 表2 on 表1.字段=表2.字段
/*根据表中相同字段id来进查找*/
select * from a inner join b on a.id = b.id;

错误示例

强行关联,导致错误

1.2内连接隐式连接

用where连接,但是一般使用第一种方法

select * from 表1,表2 where 表1.字段 = 表2.字段

-- 例子
select * from students , score where students.name = score.name;

 1.3内连接查询,显示指定的字段

-- 学生表与分数表内连接,只显示爱好和分数
select score,aihao 
from students inner join score 
on students.name = score.name;

错误示例:

学生表与分数表内连接,只显示班级、分数、爱好

正确示例

-- 学生表与分数表内连接,只显示爱好和分数
select students.class,score,aihao 
from students inner join score 
on students.name = score.name;

1.4表的别名在查询中使用

作用:有的表名太长不太好记录,所以用别名来代替

as 可省略不写

/*语法*/
select * from 表名1 别名1 inner join 表名2 别名2 
on 别名1.字段名 = 别名2.字段名

例子:

/* 把students 表起名为st  score表起名为sc,所以下面关联字段就变为 */
select score,aihao from 
students st 
inner join score sc 
on 
st.name = sc.name;

-- 用where语句查询
/*查询学生叫杨洋,同时显示成绩对应的课程*/
select score,coursename cname from score sc 
inner join 
course co on
sc.courseid = co.courseid
where SC.name = '杨洋';


-- 用where & and语句查询
/*查询许问问,分数大于50的成绩和课程*/
select score,coursename from score sc 
inner join course co on
sc.courseid = co.courseid
where SC.name = '许问问' and sc.score > 60;

1.5多表联查

  • 查询语句需要多张关联
  • 两表中有相同字段,查询中要加上表名称,不加会报错

多表联查

/*内连接多表联查语法*/
select * from 表名1 
inner join 表名2 on 表1.字段=表2.字段
inner join 表名3 on 表2.字段 = 表3.字段
where 条件;
-- 例子
-- 查询学生信息、成绩、以及成绩对应的课程表
SELECT * from 
students st 
inner join score sc on st.name = sc.name 
inner join course co on sc.courseid = co.courseid;


-- 多表联查带where条件
-- 查询所有学生数学成绩,只显示姓名、成绩、课程
SELECT st.name,sc.score,co.coursename from 
students st 
inner join score sc on st.name = sc.name 
inner join course co on sc.courseid = co.courseid
where co.coursename = '数学';

-- 多表联查带order by、limit字段
/* 查询女同学的分数*,显示成绩、课程、名字只显示前3行*/
select sc.score,co.courseid,st.name from 
students st inner join score sc on st.name = sc.name
inner join course co on sc.courseid = co.courseid
where st.sex = '女' ORDER BY sc.score limit 3;

 左连接语法

/*语法*/
select * from 表名1  left join 表名2  on 表名1.字段名1 = 表名2.字段名2
-- 例子
/*用左连接查看表中学生成绩,名字*/
select sc.score,st.name from students st 
left join score sc on st.name = sc.name;

 显示表中全部名字,没有成绩显示null

 右连接语法

/*语法*/
select * from 表名1  right join 表名2  on 表名1.字段名1 = 表名2.字段名2
/*用右连接查询学生为女同学的爱好*/
select sc.like from students st right join score sc on
st.name = sc.name where sex = '女';

order by&limit练习
/*用右连接查询学生为女同学的爱好,成绩从高到低,显示2,6行直接的数据*/
select sc.like,sc.score from students st right join score sc on
st.name = sc.name where sex = '女' order by sc.score desc limit 1,3;

 显示表中全部like字段,没有like显示null

 总结内连接和左右连接区别:

内连接只显示满足条件

左右连接,只显示满足条件+原来表中的字段

 

标签:join,name,第八章,查询,score,sc,st,连接,select
From: https://blog.csdn.net/qq_64388558/article/details/139655820

相关文章

  • [数据库] MYSQL之SQL查询(日期时间篇)
    CASE:查询当天/昨天数据#当天select*fromtablewhereto_days(时间字段)=to_days(now());#昨天select*fromtablewhereto_days(now())-to_days(时间字段名)<=1CASE:查询近N分钟/周/月/年的数据#近5分钟SELECT*FROMtableWHERE时间字段>=DATE_SU......
  • vue项目连接到后端接口
    背景后端采用的是若依springboot分离版本,前端是自己搭建的vue项目,不是若依的前端框架,需要免认证进行调用接口的话,注释掉安全认证配置中的鉴权认证,或者将接口加入白名单1.安装axiosnpminstallaxios--save2.在request.js中编写请求后端的路径,创建src/utils/request.jsimpo......
  • PlugLink:让数据分析与工作流无缝连接(附源码)
    PlugLink:让数据分析与工作流无缝连接引言数据分析和自动化工作流已成为各个企业和个人提高效率的关键手段。今天,我要介绍一款名为PlugLink的工具,它不仅能帮助你轻松进行数据分析,还能将这些分析结果无缝连接到你的工作流中,实现真正的全自动化处理。本文将详细介绍如何使用......
  • mysql查询数据库大小
    我们可以使用MySQL命令来查看数据库的数据量大小。首先打开命令行终端,进入MySQL的安装目录,然后执行以下命令:mysql-uusername-p其中,username是你的MySQL用户名。执行命令后,会提示你输入密码。输入正确的密码后,你将进入MySQL命令行界面。接下来,选择你要查看的数据库。假设你想......
  • mysql的jdbc连接java实现
    在Java中使用JDBC连接MySQL数据库,你需要以下步骤:确保你有MySQLJDBC驱动程序。如果没有,你可以添加依赖到你的项目中,例如使用Maven:<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></de......
  • 直接用sql语句来查询和分析excel表,不需要导数据,提供了sql语句自动生成,不会sql也能用
         用sql语句来查询excel表,我们需要把excel表格导入到数据库中,然后用数据库的管理工具写sql语句来进行查询。方法有很多,我们不一一描述。     今天我们要说的是直接用sql语句来查询和分析excel表。为什么有这么一个想法呢?程序员或者会sql语句的人,不太愿......
  • Java学习 - MySQL数据库导入和查询方式 实例
    目录练习用数据库导入基础查询条件查询排序查练习用数据库导入下载相关资源中的myemployess.sql执行sql脚本sourcemyemployees.sql;基础查询SELECT子句SELECT查询字段FROM表名;--查询字段包括:表的字段,常量值,表达式,函数--查询的结果是一个虚拟的表查......
  • 使用adb通过wifi连接手机
    1,手机打开开发者模式,打开无线调试2,命令行使用adb命令配对:adbpair192.168.0.102:40731输入验证码:4228593,连接设备:adbconnect192.168.0.102:369954,查看连接状态:adbdevices......
  • 使用自定义查询参数获取 fullcalendar api
    我正试图配置fullcalendar5从数据库中获取api。除了开始和结束之外,我还想向请求传递额外的查询参数。我已经尝试过这种方法,但发现请求总是忽略附加参数。events:{url:'http://localhost:4000/api/timesheet'、type:'GET'、......
  • 成为MySQL DBA后,再看ORACLE数据库(八、进程、连接与会话)
    不同于MySQL的单进程多线程架构,ORACLE是多进程架构。一个ORACLE实例主要有以下三类进程:1.后台进程,这些进程随数据库启动而启动,用于完成数据库的各种后台任务;2.服务器进程(serverprocess),这些进程一般由客户端的请求产生,根据客户端的请求完成工作;3.从属进程,这些进程类似后台进程,它们......