分类: 数据库开发技术
2008-03-11 22:15:24
--下面是建立表的语句
create table 项目(项目编号 int,项目名称 varchar(50))
insert 项目
select 1, '项目1'
union
select 2, '项目2'
union
select 3, '项目3'
create table 合同(合同编号 int,项目编号 int,合同金额 numeric(7,3))
insert 合同
select 1,1,1000
union
select 2,1,1500
union
select 3,2,2000
create table 付款(付款编号 int,合同编号 int,付款金额 numeric(7,3))
insert 付款
select 1,1,100
union
select 2,2,200
union
select 3,2,800
问题(一):
设计一个查询,要求返回结果如下:
----------------------------------------------------------
项目编号 项目名称 项目所有合同的金额
----------- ------------------------ ---------------------
1 项目1 2500
2 项目2 2000
3 项目3 NULL
解答:
select a.项目编号,a.项目名称,sum(b.项目金额) from 项目 a left join 合同 b on a.项目编号 = b.项目编号 group by a.项目编号,a.项目名称
如果将"left join" 改为 "join" 返回结果如下:
----------------------------------------------------------
项目编号 项目名称 项目所有合同的金额
----------- ------------------------ ---------------------
1 项目1 2500
2 项目2 2000
问题(二):
设计一个查询,要求返回结果如下:
----------------------------------------------------------
项目编号 项目名称 项目所有付款的金额
----------- ------------------------ ---------------------
1 项目1 1100
2 项目2 null
3 项目3 NULL
解答:
select a.项目编号,a.项目名称,sum(b.付款金额) 项目所有合同金 from
项目 a left join 合同 c on a.项目编号 = c.项目编号 left join 付款 b on c.合同编号 = b.合同编号 group by a.项目编号,a.项目名称
如果将第一个left join 改为 join。返回结果如下:
----------------------------------------------------------
项目编号 项目名称 项目所有付款的金额
----------- ------------------------ ---------------------
1 项目1 1100
2 项目2 null
如果将两个left join 改为 join。返回结果如下:
----------------------------------------------------------
项目编号 项目名称 项目所有付款的金额
----------- ------------------------ ---------------------
1 项目1 1100
问题(三):
设计一个查询,要求返回结果如下:
--------------------------------------
项目编号 项目所有合同已付款金额
----------- --------------------------
1 1100
2 NULL
--------------------------------------
select a.项目编号,sum(c.付款金额)
from 项目 a right join 合同 b on a.项目编号 = b.项目编号 left join 付款 c on b.合同编号 =c.合同编号
一 单词解释(2分/个) 34
Data 数据Database 数据库RDBMS 关系数据库管理系统GRANT 授权
REVOKE取消权限DENY 拒绝权限DECLARE 定义变量PROCEDURE存储过程
Transaction事务TRIGGER触发器继续 continue唯一 unqiue
主键 primary key标识列 identity外键 foreign kdy 检查 check
约束 constraint
二 编写SQL语句(5分/题)50
1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话
Create table stu (学号 int ,
姓名 varchar(8),
年龄 int,
性别 varchar(4),
家庭地址 varchar(50),
联系电话 int
);
2) 修改学生表的结构,添加一列信息,学历
Alter table stu add 学历 varchar(6);
3) 修改学生表的结构,删除一列信息,家庭住址
Alter table stu drop column 家庭地址
4) 向学生表添加如下信息:
学号 姓名年龄性别联系电话学历
1A22男123456小学
2B21男119中学
3C23男110高中
4D18女114大学
Insert into stu values(1,’A’,22,’男’,123456,’小学’)
Insert into stu values(2,’B’,21,’男’,119,’中学’)
Insert into stu values(3,’C’,23,’男’,110,’高中’)
Insert into stu values(4,’D’,18,’女’,114,’大学’)