子查询

子查询:查询的结果当做条件使用

使用数据库,创建两个表:

use fruit
go
create table a
(
code int primary key identity(1001,1),
name varchar(10),
xuanke int,
)
go
create table b
(
code int primary key identity(1,1),
kemu varchar(10),
name varchar(10),
age int,
)
go

在表中添加数据:

insert into a values('学生a',1)
insert into a values('学生b',2)
insert into a values('学生c',1)
insert into a values('学生d',3)
insert into a values('学生e',1)
insert into a values('学生f',4)
insert into a values('学生i',5,17)
select * from a
insert into b values('数学','老师a',34)
insert into b values('语文','老师b',25)
insert into b values('英语','老师c',30)
insert into b values('物理','老师d',45)
insert into b values('数学','老师e',20)
select * from b

开始子查询:

select * from b
--选a老师教的课
select * from b where name='老师a'
--年龄最小的老师的课
select * from b where age=(select MIN(age)from b)
--某个学生选的那个老师,什么课,老师多少岁
select code,name,(select kemu from b where a.xuanke=b.code),
(select name from b where a.xuanke=b.code),
(select age from b where a.xuanke=b.code) from a where name='学生a'
--选了老师a的课的学生都叫什么名字
select name from a where xuanke in(select code from b where name='老师a')
--学生表添加一个年龄表
alter table a 
add age int
--更改年龄数据
update a set age=23 where code=1001
update a set age=20 where code=1002
update a set age=21 where code=1003
update a set age=16 where code=1004
update a set age=18 where code=1005
update a set age=34 where code=1006
--选比自己年龄小的老师教的课
select * from b where age<(select age from a where name='学生f')
--所有选择数学的学生的信息
select * from a where xuanke in(select code from b where kemu='数学')
--老师a的学生里年龄最小的
select* from a where age=(select MIN(age) from a where xuanke in ( select code from b where name='老师a'))
--选择老师年龄大于30的学生的信息
select * from a where xuanke in(select code from b where age>30)

子查询练习:

查询销售部里的年龄大于35岁的人的所有信息:

haha表中部门的所有数字代码转换为bumen表中的字符串显示:

haha表中部门的所有数字代码转换为bumen表中的字符串显示,并且显示每个人的主管:

 

posted @ 2016-11-18 14:21  游称  阅读(196)  评论(0编辑  收藏  举报