SQL 数据库 子查询及示例

子查询,又叫做嵌套查询。

将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询。

子查询有两种类型:

一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数;

另外一种是返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的数据表。

示例:

--创建一个数据库,建立一个部门表格和部门人员表格

Create database gongs --创建一个gongs的数据库
go
use gongs --使用这个数据库
go
create table bm --添加一个bm的表格
(
  bbian int primary key not null, --添加部门编号bbian 整数类型,用primary key约束来创建bbian为主键 具有唯一性,not null具有非空性
  bname varchar(20),--添加部门名字
  bceo varchar(20),--添加部门领导名字
  bdh varchar(20),--添加部门电话
)
go
create table ry --添加一个部门人员ry的表格
(
  bian int primary key identity(1001,1) not null,--添加人员编号,primary key identity(1001,1)从1开始,每次增长1,添加values时不用添加此列
  name varchar(20),--添加部门人员名字
  xingbie char(10),--添加xingbie
  age int,--添加年龄
  sfz varchar(20),--添加身份证号
  dh varchar(20),--添加电话号码
  bcode int,--部门编号
)
go

--向部门表bm中插入数据
insert into bm values(101,‘人事部‘,‘袁天罡‘,‘1234567‘)
insert into bm values(102,‘业务部‘,‘李元吉‘,‘2345678‘)
insert into bm values(103,‘企划部‘,‘公孙胜‘,‘3456789‘)
insert into bm values(104,‘客服部‘,‘冯程程‘,‘7654321‘)

--插入人员列表信息
insert into ry values(‘袁天罡‘,‘男‘,28,‘3434343434‘,‘121212‘,101)
insert into ry values(‘袁大‘,‘男‘,25,‘4343434343‘,‘212121‘,101)
insert into ry values(‘袁二‘,‘女‘,27,‘3434343434‘,‘112112‘,101)

insert into ry values(‘李元吉‘,‘男‘,25,‘5656565656‘,‘343434‘,102)
insert into ry values(‘李元a‘,‘女‘,23,‘6565656565‘,‘343434‘,102)
insert into ry values(‘李元b‘,‘女‘,24,‘5565565565‘,‘334334‘,102)

insert into ry values(‘公孙胜‘,‘男‘,28,‘1515151515‘,‘191919‘,103)
insert into ry values(‘公孙a‘,‘女‘,23,‘5151515151‘,‘919191‘,103)
insert into ry values(‘公孙b‘,‘女‘,24,‘1414141414‘,‘181818‘,103)
insert into ry values(‘公孙吉‘,‘男‘,25,‘4141414141‘,‘818181‘,103)
insert into ry values(‘公孙c‘,‘男‘,23,‘2525252525‘,‘171717‘,103)

insert into ry values(‘冯程程‘,‘女‘,25,‘3838383838‘,‘202020‘,104)
insert into ry values(‘冯锡范‘,‘男‘,32,‘8383838383‘,‘020202‘,104)
insert into ry values(‘冯斯托洛夫斯基‘,‘男‘,20,‘2929292929‘,‘886886‘,104)
go

select * from bm
select * from ry

--插入一条错误数据  显示一下外键是什么作用
insert into ry values(‘甲鱼‘,‘女‘,26,‘234765423456222‘,‘9874533‘,108)

--显示一下主键的作用
insert into bm values(101,‘人事部‘,‘钱八‘,‘2345652‘)

---查询人数最多的部门里年龄最大的人的信息
select bcode from ry group by bcode having COUNT(*)>4--查找人数最多的部门
select MAX(age) from ry where bcode=103--查找里面最大年龄
select bian from ry where bcode=103 and age =28--查找这个人的编号
--子查询的方法:
select * from ry where bian=
(select bian from ry where bcode=103 and age =28)

--按照年龄从小到大排序,取789号人员的所有信息
select top 3 * from ry where bian not in
(select top 6 bian from ry order by age) order by age

--查找所有男同志里面年龄最大的人的信息
select*from ry where bian=
(select top 1 bian from ry  where age=
(select MAX(age) from ry  where xingbie=‘男‘))

--分页查询
select top 5 * from ry
--6~10
select top 5 * from ry where bian not in
(select top 5 bian from ry)
--11-14
select top 5 * from ry where bian not in
(select top 10 bian from ry)

--能分多少页
select ceiling(( select COUNT(*)from ry)/5.0)

--将人员表显示出来   并且将部门编号变为部门名称显示
select name , xingbie ,(select bname from bm where bm.bbian = ry.bcode) from ry
时间: 2024-10-07 07:54:08

SQL 数据库 子查询及示例的相关文章

SQL 数据库 子查询、主外键

子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这时它可以用在一个单值可以使用的地方,这时子查询可以看作是一个拥有返回值的函数: 另外一种是返回一列值的子查询,这时子查询可以看作是一个在内存中临时存在的数据表. 主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通

SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)

SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5.在SELECT子句中使用子查询 6.WITH子句 子查询(进阶) 7.分析函数 8.行列转换 9.设置数据层次 八.行列转换 pivot和unpivot函数是Oracle 11g增加的新函数,利用此函数可以实现行列转换操作 按照原始方式实现,使用通用函数中的DECODE()函数 列字段的处理 SQ

SQL优化-子查询&case&limit

load 导数据.notesdxtdb 数据库    total_time  475.60秒. 监控服务:仓颉 select t_.*, a.name acquirer_name,m.merchant_name, am.merchant_name acq_merchant_name,                   ag.name agency_name            from              (            select t.* ,               

sql数据库中查询第几条到第几条的数据

通用方法: select top 500 * from (select top 1000 * from UserSearchDatas order by ID) a order by ID desc sql数据库中查询第几条到第几条的数据,布布扣,bubuko.com

SQL用子查询结果更新多个字段

作者:iamlasong 要求:表格的内容需要变更,变更的内容放在一个临时表中,用SQL语句更新正式表中多个字段. 如果更新一个字段,直接用字段名=子查询就可以了,多个字段更新,将字段在括号中并列写出即可,如下: update tb_jg t set t.jgfl = 'sd', (     t.zj_code, t.zj_mc) = (select a.zj_code, a.zj_mc from song_temp a where a.zj_code = t.zj_code) where ex

SQL 基础--> 子查询

--========================= --SQL 基础--> 子查询 --========================= 一.子查询 子查询就是位于SELECT.UPDATE.或DELETE语句中内部的查询 二.子查询的分类 单行子查询 返回零行或一行 多行子查询 返回一行或多行 多列子查询 返回多列 相关子查询 引用外部SQL语句中的一列或多列 嵌套子查询 位于其它子查询中的查询 三.子查询语法 SQL> SELECT select_list FROM table WH

SQL Server子查询填充DataSet时报500内部错误的解决办法

运行环境为Visual Studio 2010,数据库为SQL Server 2008. 执行下面SQL语句 SELECT SubsiteId, SubsiteTitle, count(CollectionID) CollectionNumber,count(LName) PlantNumber FROM (SELECT DISTINCT SubsiteId, SubsiteTitle, CollectionID, LName, CName FROM Cumplag_Garden_Plants

基本sql语句--子查询

子查询有三种:where型子查询,from型子查询,exist子查询. where型子查询 where子查询:指把内层的查询结果当成外层查询的比较条件. 例句:查询出最新的商品:select good_id,good_name from good where good_id = (select max(good_id) from good);--此句为子查询 select good_id,good_name from good order by good_id DESC limit 1; fro

数据库子查询经典面试题

数据库]SQL经典面试题 - 数据库查询 - 子查询应用二 发布于 1 年前  作者 tommy  575 次浏览  最后一次编辑是 10 个月前  来自 数据库 上节课我们通过子查询,完成了查询的最高分学生的需求,今天我们来学习子查询的分类,以及通过子查询来完成工作中经常遇到一些个性化需求. 子查询概念: 一个SELECT语句嵌套在另一个SELECT语句中,子查询也叫做内部查询,而包含子查询的语句又称为外部查询或主查询,子查询自身可以包含一个或多个子查询,一个查询语句中可以嵌套任意数量的子查询