首页 > 数据库 >Java登陆第六天——SQL之SQL(四)外连接

Java登陆第六天——SQL之SQL(四)外连接

时间:2023-11-14 16:36:03浏览次数:32  
标签:语句 Java exam 第六天 id stu SQL join 连接

外连接

外连接分为左外连接和右外连接。

有的也叫联表查询,联表查询分为左表查询(左外连接)和右表查询(右外连接)。

准备数据

create table stu(
id int,
name varchar(32)
);
insert into stu values (1,'jack'),(2,'tom'),(3,'kity'),(4,'nono');

create table exam(
id int,
grade int
);
insert into exam values (1,56),(2,76),(11,8);

image

左外连接

完全显示左边的表就是左外连接(左表查询)

--on+逻辑语句替代的就是where+逻辑语句;
--在join左边的就是左表,在join右边的就是右表。(表1是左表,表2是右表)。
select 列名 from 表1 left join 表2 on 逻辑语句;

栗子:显示所有人的成绩(包括没有分的人)
SQL语句:

select stu.id,name,grade 
	from stu left join exam
	on stu.id = exam.id;

程序运行结果:
image

右外连接

完全显示右边的表就是右外连接(右表查询)

--on+逻辑语句替代的就是where+逻辑语句;
--左表是left join,右表是right join。
select 列名 from 表1 right join 表2 on 逻辑语句;

栗子:显示所有人的成绩(包括没有分的人)

SQL语句:

select stu.id,name,grade 
	from exam right join stu
	on stu.id = exam.id;

程序运行结果:
image

在开发中往往根据开发习惯来选择左外连接和右外连接。

如果栗子的逻辑语句不改,使用多表查询来写的话看看有什么不同。

SQL语句:

select stu.id,name,grade
	from stu,exam
	where stu.id = exam.id;

程序运行结果:
image
从结果上可以发现exma表中的(11,8)直接丢失了。

标签:语句,Java,exam,第六天,id,stu,SQL,join,连接
From: https://www.cnblogs.com/Ocraft/p/17831922.html

相关文章

  • MySQL基本数据类型简记
    1、在MySQL整型数值范围TypeStorage(Bytes)MinimumValueSignedMinimumValueUnsignedMaximumValueSignedMaximumValueUnsignedTINYINT1-1280127255SMALLINT2-3276803276765535MEDIUMINT3-83886080838860716777215INT4-2147483648021474836......
  • 秦疆的Java课程笔记:32 基础 JavaDoc生成文档
    javadoc命令是用来生成自己API文档的参数信息:@author作者名@version版本号@since指明需要最早使用的JDK版本@param参数名@return返回值情况@throws异常抛出情况比如这就是一个JDK21的Oracle官方API:点击跳转packageacolyte.operator;/***这是加在类......
  • 因为懒得百度,我选择自己写篇博文教自己配置JAVA环境
    1.首先是准备施法材料JDK的下载地址:https://www.oracle.com/java/technologies/downloads/然后选择自己的想要的版本和英雄(系统)选择x64CompressedArchive免安装版本进行下载(解压就用,免除疯狂确认的烦恼)解压到某个位置就好,这里我创建了一个JDK文件夹,为了以后切换版本时,统一......
  • Java 中 为什么 Long 用== 有时候返回true 有时候事false
    今天做项目的时候一直跑不出想要的结果,最后才发现是一处判断语句出了问题。有两个Long类型的变量初始赋值都为10000,但用“==”来判断结果却是判断它们不相等。Long中有⼀个静态的内部类LongCache,专门⽤于缓存-128⾄127之间的值,⼀共256个元素。如果值在[-128,127]之间,会放在缓存......
  • MySQL - 一条SQL查询语句是如何执行的
    MySQL的逻辑架构图 详细解答https://www.processon.com/mindmap/655307fe6a2ff722ead8d9e4 ......
  • MySQL - MySQL 占用内存涨得特别快?可能原因?解决方案
    https://www.processon.com/mindmap/655307fe6a2ff722ead8d9e4 ......
  • java带List实体的集合转换
     实体类publicclassPageResult<T>{intpage;intlimit;Longcount;Stringcode;stringmsg;List<T>data;Texample;publicPageResult(){}}  转换的utils/***list集合转换*@paramresultT转换前数据*@paramresultw转换后的实体类@paramclassW......
  • JavaWeb--Servlet
    Servlet专门用来开发动态web资源开发技术 导入servlet依赖坐标<dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><s......
  • JavaScript - js生成 txt 文件
    JavaScript-js生成txt文件/***方法定义*/functiondownload(filename,text){varelement=document.createElement('a');element.style.display='none';varcontent=encodeURIComponent(text);element.setAttribute('href&#......
  • Docker 部署 java应用
    创建DockerfileFROMopenjdk:8-jdk-alpine#前一个dns.jar为上传的jar包,后一个dns.jar是将服务器中jar包对应在容器中运行的jar包名称ADDdns.jardns.jar#容器暴露的端口号,需要与jar包在容器中运行使用端口号一致EXPOSE9999#容器启动之后执行的命令,java-jard......