SQL一些简单的查询

来源:互联网 发布:淘宝淘金币半币抢购 编辑:程序博客网 时间:2024/05/16 17:13
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

use master
go


if exists(select name from sys.databases where name='test')
drop database test
go

create database test
go

use test
go

if exists(select name from sys.tables where name='bumeng')
drop table 'bumeng'
go

create table bumeng(
bmId int  primary key not null,
bmName varchar(20) not null,
bmCity varchar(50) not null
)
go

if exists(select name from sys.tables where name='GYInfo')
drop table GYInfo
go

create table GYInfo(
GYId int primary key not null,
GYName varchar(20) not null,
GYJob varchar(20) not null,
GYSjId int not null,
GYdate datetime not null,
GYGz int not null,
GYZt int ,
GYBm int constraint FK_BMId foreign key(GYBM) references bumeng(bmId) not null
)

insert bumeng(bmId,bmName,bmCity) values ('10','ACCOUNTING','NEW YORK')
insert bumeng(bmId,bmName,bmCity) values ('20','Research','DALLAS')
insert bumeng(bmId,bmName,bmCity) values ('30','SALES','CHICAGO')
insert bumeng(bmId,bmName,bmCity) values ('40','OPERATIONS','BOSTON')
go

insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7369','SMITH','CLERK','7902','1980-12-17','800','','20')
insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7499','ALLEN','SALESMAN','7698','1981-2-20','1600','300','30')
insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7521','WARD','SALESMAN','7698','1981-2-22','1250','500','30')
insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7566','JONES','MANAGER','7839','1981-4-2','3975','','20')
insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7654','MARTIN','SALESMAN','7698','1981-9-28','1250','1400','30')
insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7698','BLAKE','MANAGER','7839','1981-5-1','2850',' ','30')
insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7788','SCOTT','ANALYST','7566','1987-4-19','3000',' ','20')
insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7844','TURNER','SALESMAN','7698','1981-9-8','1500','0','30')
insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7876','ADAMS','CLERK','7788','1987-5-23','1100',' ','20')
insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7900','JAMES','CLERK','7698','1981-12-3','950',' ','30')
insert dbo.GYInfo(GYId,GYName,GYJob,GYSjId,GYdate,GYGz,GYZt,GYBm) values('7902','FORD','ANALYST','7566','1981-12-3','3000',' ','20')
go

--1、列出至少有一个雇员的所有部门
select  bmId,bmName,bmCity from dbo.bumeng
where bmId in(select  GYBm from  dbo.GYInfo )
go
--2、列出薪金比"SMITH"多的所有雇员
select GYName from dbo.GYInfo where   GYGz>(
select GYGz from dbo.GYInfo where GYName='SMITH'
)
go

--3、列出所有雇员的姓名及其直接上级的姓名
select gy.GYName as 'name',(select GYName from GYInfo as sj where gy.GYSjId=sj.GYId ) as 'sj' from dbo.GYInfo as gy
go

--4、列出入职日期早于其直接上级的所有雇员
select gy.GYName from dbo.GYInfo as gy  where gy.GYdate<
(
select sj.GYdate from dbo.GYInfo as sj where gy.GYSjId=sj.GYId
)
go

--5、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门
select bmName,GYName from dbo.bumeng
left join dbo.GYInfo on bumeng.bmId=GYInfo.GYBm
go

--6、列出所有"CLERK"(办事员)的姓名及其部门名称
select GYName,(select bmname from bumeng where bmId=gy.GYBm ) as bm  from dbo.GYInfo as gy
where GYJob = 'CLERK'
go

--7、列出各种工作类别的最低薪金,并使最低薪金大于1500
select GYJob,min(GYGz) as minGz from GYInfo where GYGz<1500 group by GYJob
go

--8、列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号
select GYName from GYInfo where GYBm in (select bmid from bumeng where bmName='SALES')
go

--9、列出薪金高于公司平均水平的所有雇员
select GYName from GYInfo where GYGz >(select AVG(GYGz) from GYInfo)
go

--10、列出与“SCOTT”从事相同工作的所有雇员
select GYName from GYInfo where GYJob =(select GYJob from GYInfo where GYName='SCOTT')
go

--11、列出某些雇员的姓名和薪金,条件是他们的薪金等于部门30中任何一个雇员的薪金
select GYName,GYGz from GYInfo where GYGz in (select GYGz from GYInfo where GYBm='30')
go
--12、列出某些雇员的姓名和薪金,条件是他们的薪金高于部门30中所有雇员的薪金
select GYName,GYGz from GYInfo where GYGz > (select max(GYGz) from GYInfo where GYBm='30')
go

--13、列出每个部门的信息以及该部门中雇员的数量
select bmId,bmName,bmCity,(select count(gyid) from GYInfo where GYBm=bmId) as gynum from bumeng
go
--14、列出所有雇员的雇员名称、部门名称和薪金
select GYName,(select bmName from dbo.bumeng where  bmId=GYBm) as bm,GYGz from dbo.GYInfo
go

--15、列出从事同一种工作但属于不同部门的雇员的不同组合
select GYJob,(select bmName from bumeng where bmId=GYBm) as bm from dbo.GYInfo group by GYJob,GYBm
go
--16、列出分配有雇员数量的所有部门的详细信息,即使是分配有0个雇员
select bmid,bmname,bmcity, GYName,GYJob,GYSjId,GYdate,GYGz,GYZt from dbo.bumeng
left join dbo.GYInfo
on bmid=GYBm
go
--17、列出各种类别工作的最低工资
select gj.gyjob, (select Min(yz.GYGz) from dbo.GYInfo as yz where yz.GYJob = gj.GYJob) as gz from dbo.GYInfo as gj group by gj.GYJob
go

--18、列出各个部门的MANAGER(经理)的最低薪金
select (select bmName from dbo.bumeng where bmId=GYBm)as bm,'MANAGER' as gyjob ,min(GYGz) as Gz from  dbo.GYInfo where GYJob='MANAGER' group by GYBm
go

--19、列出按计算的字段排序的所有雇员的年薪
select GYName,(GYGz+GYZt)*12 as lx from dbo.GYInfo order by lx
go
--20、列出薪金水平处于第四位的雇员
select top 1 GYName,GYGz from dbo.GYInfo where GYId not in (select top 3 GYId from dbo.GYInfo order by GYGz desc) order by GYGz desc
go

 

以前的题目,最近整理出来了,以备后用.

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------详细请查看:http://net.itheima.com/