首页 > 数据库 >Java登陆第五天——SQL之DQL(三)

Java登陆第五天——SQL之DQL(三)

时间:2023-11-12 18:12:04浏览次数:32  
标签:sir Java name 查询 person SQL DQL where select

子查询

子查询就是在 where中再嵌套一个查询SQL,可以理解为Java中方法的返回值。

--甚至可以套中套 无限套
--被查询出来的表根据结果分为:单行子查询和多行子查询
select 列名 from 表名 where (
 		另一个select语句
	);

准备数据

-- 创建Person
create table Person(
  id int,
  name varchar(20),
  sex char,
  age int,
  teacher int
);

-- 插入数据
insert into Person values
    ('1001','张三','M','11','2001'),
    ('1002','五六','M','12','2002'),
    ('1003','王正','W','11','2001'),
    ('1004','温馨','W','12','2001'),
    ('1005','真心','M','12','2002'),
    ('1006','向东','M','11','2001'),
    ('1007','藕带','M','12','2002'),
    ('1008','二郎','M','12','2001'),
    ('1009','皮球','M','12','2002'),
    ('1010','子弟','W','11','2001'),
    ('2001','刘sir','M','33',null),
    ('2002','吴sir','W','36',null);

image

子查询根据结果的行数分为:单行子查询多行子查询

单行子查询

顾名思义 子查询结果为一行的。

栗子:利用子查询,查询刘sir的所有学生。
SQL语句:

select * from person
	where teacher = (select id from person where name = '刘sir');

程序运行结果:
image

解析:
image

多行子查询

顾名思义 子查询结果为多行的。

栗子:利用子查询,查询任意sir的所有学生。
SQL语句:

select * from person 
	where teacher in (select id from person where name like '_sir');

程序运行结果:
image

解析:
image

子查询临时表

之前提及过,每次查询的结果都是一张临时的,虚拟的表(无论怎么查询都不会不改变原表结构)

因此,子查询的结果可以当作一张表使用

--可以配合多表查询进行使用。
select 列名 from 子查询;

栗子:利用子查询,显示学生信息和其老师的姓名。

SQL语句:

select person.id,person.name,person.age,tea.name
	from (select id,name from person where name LIKE '_sir') as tea,person
	where person.teacher = tea.id;

程序运行结果:
image

解析:
image

标签:sir,Java,name,查询,person,SQL,DQL,where,select
From: https://www.cnblogs.com/Ocraft/p/17827505.html

相关文章

  • linux下安装mysql
    Linux下安装MySQL概述简单介绍MySQL是什么,运用场景。在Linux操作系统(默认64位)下安装MySQL需要注意的点,以及通过navicate16连接本地MySQL实现图形化操作。注意:需要root权限,或者您能正常使用sudo提权。MySQL简介MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于......
  • Java中的HttpServletRequest
    Request:请求HttpServletRequest请求是获取请求行、请求头和请求体;可以通过这个方法设置防盗链,获取地址。牢记解决乱码的方式。怎么选择是重定向还是转发呢?通常情况下转发更快,而且能保持request内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL仍然指向开始页面,此......
  • Java 集合—ArrayList
    ArrayList介绍ArrayList 的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。ArrayList类位于java.util包中,使用前需要引入它,语法格式如下:importjava.util.ArrayList;//引入ArrayList类ArrayList<E>objectName=newArrayList<>();//初始化......
  • 本机Java连接虚拟机的redis相关
    1、代码Jedisjedis=newJedis("192.168.88.151",6379);2、开启6379端口//查看6379端口是否开启--yes是开启;no是关闭firewall-cmd--query-port=6379/tcp//开启6379端口firewall-cmd--zone=public--add-port=6379/tcp--permanent//重启使生效firewall-cmd--reloa......
  • mysql关于主表和从表
    typeGoodsstruct{BaseModelCategoryIDint32`gorm:"type:int;notnull"`CategoryCategoryBrandsIDint32`gorm:"type:int;notnull"`BrandsBrands} Goods是从表,从表中addforeignkey关系,reference主表altertab......
  • Mysql索引详解
    ​ 一、索引1.1索引由来如果数据量过大,没有索引就需要扫描全表挨个匹配速度会非常慢,这时就该用到索引了。通过索引表找到该行数据对应的物理地址然后访问相应的数据。索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。事实上,索引是一种数据结构,用于帮助我们在大......
  • SQL 学习笔记
    查询查询语句的基础模版是select<columns>[as<alias>]from<table>[as<alias>]where<expressions>orderby<expressions>。其中alias是起的别名,方便使用;where用于查找符合条件的行,orderby是排序方式。建表首先createtable<name>as,随后逐行列出selectAas......
  • Java零基础入门-运算符
    前言Java作为一种广泛应用的编程语言,其有丰富的运算符用于程序的编写。掌握Java的运算符是学习Java编程的基础之一,在本文中,我们将讨论Java中各种运算符的使用方法,以帮助初学者更好地理解Java运算符的使用。摘要本文旨在为初学者提供关于Java运算符的详细介绍。本文涵盖的运算符......
  • JavaWeb--HTTP简介
     请求数据的格式 post请求和get请求的区别 响应数据格式 状态码 常见响应状态码 使用tomcat可以省略http之间交流的代码 ......
  • linux安装mysql
    linux安装mysql概述:mysql是关系型数据库,可运行在linux、windows、macOS等各个操作系统。由于体积小、速度快、低成本等优点,大多数企业在软件开发都选择MYSQL作为软件数据库。本次linux安装mysql使用的是5.7版本,其他版本也是大同小异,思路步骤都一致。第一步:下载mysql下载地址:ht......