数据库之查询

1.利用Query Analyzer完成以下操作:

⑴ 在预算日期、结算日期和入账日期上分别建立索引,并在查询操作中体会索引的作用。

⑵ 在完成第2题的查询操作后,删除预算日期、结算日期和入账日期上的索引。

代码:

create index 预算_date on 预算结算入帐表(预算日期);
create index 结算_date on 预算结算入帐表(结算日期);
create index 入账_date on 预算结算入帐表(入帐日期);

2.利用Query Analyzer完成以下操作:

⑴ 采油一矿二队2016-5-1到2016-5-28有哪些项目完成了预算,列出相应明细。

⑵ 采油一矿二队2016-5-1到2016-5-28有哪些项目完成了结算,列出相应明细。

⑶ 采油一矿二队2016-5-1到2016-5-28有哪些项目完成了结算,列出相应的材料费消耗明细。

⑷ 采油一矿二队2016-5-1到2016-5-28有哪些项目完成了入账,列出相应明细。

⑸ 列出采油一矿二队2016-5-1到2016-5-28总的预算金额。

⑹ 列出采油一矿二队2016-5-1到2016-5-28总的结算金额。

⑺ 列出采油一矿二队2016-5-1到2016-5-28总的入账金额。

⑻ 列出采油一矿2016-5-1到2016-5-28总的入账金额。

⑼ 有哪些人员参与了入账操作。

⑽ 列出2016-5-1到2016-5-28进行了结算但未入账的项目。

⑾ 列出采油一矿二队的所有项目,按入账金额从高到低排列。

⑿ 列出有哪些施工单位实施了项目,并计算各单位所有项目结算金额总和。

⒀ 找出消耗了材料三且消耗超过了2000元的项目,列出相应消耗明细(利用子查询)。

⒁ 作业公司二队参与了哪些项目。

⒂ 作业公司一队和二队参与了哪些项目(利用union)。

⒃ 采油一矿的油井是哪些作业队参与施工的。

代码:

select *
from 预算结算入帐表,单位代码表
where 预算结算入帐表.单位代码=单位代码表.单位代码
and  单位代码表.单位名称='采油一矿二队'
and 预算日期>='2016-5-1' and 预算日期<='2016-5-28'    

select *
from 预算结算入帐表,单位代码表
where 预算结算入帐表.单位代码=单位代码表.单位代码
and  单位代码表.单位名称='采油一矿二队'
and  结算日期>='2016-5-1' and 结算日期<='2016-5-28'   

select *
from 材料费表
where 单据号 in
(select 单据号
from 预算结算入帐表,单位代码表
where 预算结算入帐表.单位代码=单位代码表.单位代码
and  单位代码表.单位名称='采油一矿二队'
and  结算日期>='2016-5-1' and 结算日期<='2016-5-28')

select *
from 预算结算入帐表,单位代码表
where 预算结算入帐表.单位代码=单位代码表.单位代码
and  单位代码表.单位名称='采油一矿二队'
and    入帐日期>='2016-5-1' and 入帐日期<='2016-5-28'

select SUM(预算金额) 
from 预算结算入帐表,单位代码表
where 预算结算入帐表.单位代码=单位代码表.单位代码
and  单位代码表.单位名称='采油一矿二队'
and 预算日期>='2016-5-1' and 预算日期<='2016-5-28'

select SUM(结算金额)
from 预算结算入帐表,单位代码表
where 预算结算入帐表.单位代码=单位代码表.单位代码
and  单位代码表.单位名称='采油一矿二队'
and 结算日期>='2016-5-1' and 结算日期<='2016-5-28'

select SUM(入帐金额)
from 预算结算入帐表,单位代码表
where 预算结算入帐表.单位代码=单位代码表.单位代码
and  单位代码表.单位名称='采油一矿二队'
and 入帐日期>='2016-5-1' and 入帐日期<='2016-5-28'

select SUM(入帐金额)
from 预算结算入帐表,单位代码表
where 预算结算入帐表.单位代码=单位代码表.单位代码
and  单位代码表.单位名称 like '采油一矿%'
and 入帐日期>='2016-5-1' and 入帐日期<='2016-5-28'

select 入帐人
from 预算结算入帐表
group by 入帐人 

select 单据号
from 预算结算入帐表
where 结算日期>='2016-5-1' and 结算日期<='2016-5-28' and 入帐日期 is null

select *
from 预算结算入帐表,单位代码表 
where 预算结算入帐表.单位代码=单位代码表.单位代码 and 
单位代码表.单位名称='采油一矿二队'
order by 入帐金额 desc

select distinct 施工单位名称 
from 预算结算入帐表
select SUM(结算金额)
from 预算结算入帐表

select *
from 材料费表
where 物码 in
(select 物码
from 物码表
where 名称规格='材料三')
and 消耗数量*单价>2000;

select 单据号
from 预算结算入帐表
where 施工单位名称='作业公司作业二队'

select 单据号
from 预算结算入帐表
where 施工单位名称='作业公司作业二队'
union select 单据号
from 预算结算入帐表
where 施工单位名称='作业公司作业一队'

select distinct 施工单位名称
from 预算结算入帐表,单位代码表
where 预算结算入帐表.单位代码=单位代码表.单位代码 and 单位名称 like '采油一矿%'; 

3.利用Query Analyzer完成以下操作:

⑴ 建立数据表(包含3个属性列:★施工单位、★年月、◆结算金额)保存各个施工单位每月的结算金额总和。

⑵ 用子查询将各个施工单位每月的结算金额总和插入到所建立的数据表中。

⑶ 用带子查询的修改语句将采油一矿油井作业项目的结算人改为“李兵”。

⑷ 用带子查询的删除语句删除采油一矿油井作业项目。

⑸ 撤消上述两个操作。

代码:

create table 数据表(
施工单位名称 char(20),
日期 date,
结算金额 money
);

insert into 数据表(施工单位名称,日期,结算金额)
(select 施工单位名称,结算日期,SUM(结算金额)
from 预算结算入帐表
group by 施工单位名称,结算日期)    


begin tran 
update 预算结算入帐表
set 结算人='李兵'
where 单位代码 in(
select 单位代码
from 单位代码表
where 单位名称 like '采油一矿%');
delete from 预算结算入帐表
where 单位代码 in(
select 单位代码
from 单位代码表
where 单位名称 like '采油一矿%');
rollback tran;


You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注