软件公司
2018-01-11 17:57
113 查看
在某软件公司里,要建立一个数据库来管理员工和项目,其中职员的信息包括员工编号、姓名、性别、生日、祖籍、工资信息,要求员工编号不能重复,姓名必须填写,性别如果不做特别说明默认为男,而且不能填写除‘男’或‘女’之外的其它任何字;项目的信息包括项目编号、项目名称、起始日期、结束日期、预算,要求项目编号从1001号起每个项目递增1,项目名称不能重复且不可空着。注意:职员是要做项目的!!
(1) 创建用户及表,并创建相应的约束
(2) 使用语句插入以下信息
1号员工王晓明 女 1980-1-3 山东青岛 8900
2号员工王涵 男 1978-6-12 广东佛山 7600
3号员工李有才 男 1978-5-23 上海 7800
4号员工张小小 女 1982-9-7 山东济南 4500
项目名称:小型监控系统 起始日期:2009-8-6 结束日期:2010-1-1 预算:100000
项目名称:办公网络安全 起始日期:2009-12-30 结束日期:2010-10-1 预算:450000
项目名称:电子购物广场 起始日期:2009-11-30 结束日期:2009-12-31 预算:12000
其中 王晓明三个项目都参加了
王涵参与了电子购物广场和办公室安全项目
李有才参与了小型监控系统和办公网络安全项目
张小小只参与了小型监控系统一个项目
(3) 使用语句做以下检索
a) 查询公司中所有的王姓员工
b) 查询参与了预算最多的员工有哪些
c) 检索一下每个项目有多少员工参与了
d) 检索李有才的基本信息及其参与的项目信息
(4) 使用语句修改以下信息
a) 将所有员工的祖籍信息前都加上‘中国’二字,比如‘山东青岛’改为‘中国山东青岛’
b) 将参与了‘办公网络安全’项目的职工的工资都加上200元
(5) 使用语句完成以下删除
a) 只保留李有才一个人在小型监控系统项目中,其他参与该项目的人不再插手该项目
(6) 创建一个名为‘检索信息’的存储过程,该存储过程完成检索指定员工号所参与的项目总数,其中员工号为输入参数,项目总数为输出参数
(7) 调用‘检索信息’存储过程,完成检索1号员工参与的项目总数。
[sql] view
plain copy
print?
--1.
--(1) 创建用户及表,并创建相应的约束
create table staff
(
sno number primary key,
sname varchar2(10) not null,
ssex varchar2(3) default '男' check(ssex='男' or ssex='女') ,
sbitthday date,
sddr varchar2(20),
salary number
);
create table proj
(
pno number primary key,
pname varchar2(20),
sdate date,
edate date,
buget number
);
create table sp
(
sno number ,
pno number ,
primary key (sno,pno),
foreign key(sno) references staff(sno),
foreign key(pno) references proj(pno)
);
commit;
--(2) 使用语句插入以下信息
insert into staff values(1,'王晓明','女','03-1月-1980','山东青岛',8900);
insert into staff values(2,'王涵','男','12-6月-1978','广东佛山',7600);
insert into staff values(3,'李有才','男','23-5月-1978','上海',7800);
insert into staff values(4,'张小小','女','07-9月-1982','山东济南',4500);
select * from STAFF;
insert into proj values(1001,'小型监控系统','06-8月-2009','01-1月-2010',100000);
insert into proj values(1002,'办公网络安全','30-12月-2009','30-11月-2009',450000);
insert into proj values(1003,'电子购物广场','30-11月-2009','31-12月-2009',12000);
select * from proj;
insert into sp values(1,1001);
insert into sp values(1,1002);
insert into sp values(1,1003);
insert into sp values(2,1002);
insert into sp values(2,1003);
insert into sp values(3,1002);
insert into sp values(3,1001);
insert into sp values(4,1001);
select * from sp;
commit;
--(3) 使用语句做以下检索
--a) 查询公司中所有的王姓员工
select * from STAFF
where SNAME like '王%';
--b) 查询参与了预算最多的员工有哪些
select * from
(select staff.sno,sname,sum(buget)
from STAFF join SP on staff.sno=sp.sno join proj on sp.pno=proj.pno
group by staff.sno,sname
order by sum(buget) desc)
where rownum<2;
--c) 检索一下每个项目有多少员工参与了
select pno ,count(sno)
from SP
group by pno;
--d) 检索李有才的基本信息及其参与的项目信息
select *
from STAFF join SP on staff.sno=sp.sno join proj on sp.pno=proj.pno
where sname='李有才';
--(4) 使用语句修改以下信息
--a) 将所有员工的祖籍信息前都加上‘中国’二字,比如‘山东青岛’改为‘中国山东青岛’
update staff set SDDR=concat('中国',sddr);
select *from staff;
--b) 将参与了‘办公网络安全’项目的职工的工资都加上200元
update staff set SALARY=salary+200
where sno in (SELECT sno
FROM SP join PROJ on sp.pno=PROJ.pno
where pname='办公网络安全' );
select * from staff
where sno in (SELECT sno
FROM SP join PROJ on sp.pno=PROJ.pno
where pname='办公网络安全' );
--(5) 使用语句完成以下删除
--a) 只保留李有才一个人在小型监控系统项目中,其他参与该项目的人不再插手该项目
DELETE from sp
where PNO=(select pno from PROJ where pname='小型监控系统')and
sno!=(select sno from STAFF where sname='李有才');
select sname,pname
from STAFF join SP on staff.sno=sp.sno join proj on sp.pno=proj.pno;
--(6) 创建一个名为‘检索信息’的存储过程,该存储过程完成检索指定员工号所参与的项目总数,其中员工号为输入参数,项目总数为输出参数
create or replace procedure 检索信息 (tsno in number,a out number,b out number)
as
begin
select sno,count(*)
into a,b
from sp
where sno=tsno
group by sno;
end 检索信息;
--(7) 调用‘检索信息’存储过程,完成检索1号员工参与的项目总数。
variable a number;
variable b number;
exec 检索信息(1,:a,:b);
print a b;
部分截图:
3
(a)
![](https://img-blog.csdn.net/20170801185856553)
(b)
![](https://img-blog.csdn.net/20170801185914900)
(c)
![](https://img-blog.csdn.net/20170801185927570)
(d)
![](https://img-blog.csdn.net/20170801185943101)
4
(a)
![](https://img-blog.csdn.net/20170801190830709)
(b)
![](https://img-blog.csdn.net/20170801190005545)
5
(a)
![](https://img-blog.csdn.net/20170801190853640)
7
(1) 创建用户及表,并创建相应的约束
(2) 使用语句插入以下信息
1号员工王晓明 女 1980-1-3 山东青岛 8900
2号员工王涵 男 1978-6-12 广东佛山 7600
3号员工李有才 男 1978-5-23 上海 7800
4号员工张小小 女 1982-9-7 山东济南 4500
项目名称:小型监控系统 起始日期:2009-8-6 结束日期:2010-1-1 预算:100000
项目名称:办公网络安全 起始日期:2009-12-30 结束日期:2010-10-1 预算:450000
项目名称:电子购物广场 起始日期:2009-11-30 结束日期:2009-12-31 预算:12000
其中 王晓明三个项目都参加了
王涵参与了电子购物广场和办公室安全项目
李有才参与了小型监控系统和办公网络安全项目
张小小只参与了小型监控系统一个项目
(3) 使用语句做以下检索
a) 查询公司中所有的王姓员工
b) 查询参与了预算最多的员工有哪些
c) 检索一下每个项目有多少员工参与了
d) 检索李有才的基本信息及其参与的项目信息
(4) 使用语句修改以下信息
a) 将所有员工的祖籍信息前都加上‘中国’二字,比如‘山东青岛’改为‘中国山东青岛’
b) 将参与了‘办公网络安全’项目的职工的工资都加上200元
(5) 使用语句完成以下删除
a) 只保留李有才一个人在小型监控系统项目中,其他参与该项目的人不再插手该项目
(6) 创建一个名为‘检索信息’的存储过程,该存储过程完成检索指定员工号所参与的项目总数,其中员工号为输入参数,项目总数为输出参数
(7) 调用‘检索信息’存储过程,完成检索1号员工参与的项目总数。
[sql] view
plain copy
print?
--1.
--(1) 创建用户及表,并创建相应的约束
create table staff
(
sno number primary key,
sname varchar2(10) not null,
ssex varchar2(3) default '男' check(ssex='男' or ssex='女') ,
sbitthday date,
sddr varchar2(20),
salary number
);
create table proj
(
pno number primary key,
pname varchar2(20),
sdate date,
edate date,
buget number
);
create table sp
(
sno number ,
pno number ,
primary key (sno,pno),
foreign key(sno) references staff(sno),
foreign key(pno) references proj(pno)
);
commit;
--(2) 使用语句插入以下信息
insert into staff values(1,'王晓明','女','03-1月-1980','山东青岛',8900);
insert into staff values(2,'王涵','男','12-6月-1978','广东佛山',7600);
insert into staff values(3,'李有才','男','23-5月-1978','上海',7800);
insert into staff values(4,'张小小','女','07-9月-1982','山东济南',4500);
select * from STAFF;
insert into proj values(1001,'小型监控系统','06-8月-2009','01-1月-2010',100000);
insert into proj values(1002,'办公网络安全','30-12月-2009','30-11月-2009',450000);
insert into proj values(1003,'电子购物广场','30-11月-2009','31-12月-2009',12000);
select * from proj;
insert into sp values(1,1001);
insert into sp values(1,1002);
insert into sp values(1,1003);
insert into sp values(2,1002);
insert into sp values(2,1003);
insert into sp values(3,1002);
insert into sp values(3,1001);
insert into sp values(4,1001);
select * from sp;
commit;
--(3) 使用语句做以下检索
--a) 查询公司中所有的王姓员工
select * from STAFF
where SNAME like '王%';
--b) 查询参与了预算最多的员工有哪些
select * from
(select staff.sno,sname,sum(buget)
from STAFF join SP on staff.sno=sp.sno join proj on sp.pno=proj.pno
group by staff.sno,sname
order by sum(buget) desc)
where rownum<2;
--c) 检索一下每个项目有多少员工参与了
select pno ,count(sno)
from SP
group by pno;
--d) 检索李有才的基本信息及其参与的项目信息
select *
from STAFF join SP on staff.sno=sp.sno join proj on sp.pno=proj.pno
where sname='李有才';
--(4) 使用语句修改以下信息
--a) 将所有员工的祖籍信息前都加上‘中国’二字,比如‘山东青岛’改为‘中国山东青岛’
update staff set SDDR=concat('中国',sddr);
select *from staff;
--b) 将参与了‘办公网络安全’项目的职工的工资都加上200元
update staff set SALARY=salary+200
where sno in (SELECT sno
FROM SP join PROJ on sp.pno=PROJ.pno
where pname='办公网络安全' );
select * from staff
where sno in (SELECT sno
FROM SP join PROJ on sp.pno=PROJ.pno
where pname='办公网络安全' );
--(5) 使用语句完成以下删除
--a) 只保留李有才一个人在小型监控系统项目中,其他参与该项目的人不再插手该项目
DELETE from sp
where PNO=(select pno from PROJ where pname='小型监控系统')and
sno!=(select sno from STAFF where sname='李有才');
select sname,pname
from STAFF join SP on staff.sno=sp.sno join proj on sp.pno=proj.pno;
--(6) 创建一个名为‘检索信息’的存储过程,该存储过程完成检索指定员工号所参与的项目总数,其中员工号为输入参数,项目总数为输出参数
create or replace procedure 检索信息 (tsno in number,a out number,b out number)
as
begin
select sno,count(*)
into a,b
from sp
where sno=tsno
group by sno;
end 检索信息;
--(7) 调用‘检索信息’存储过程,完成检索1号员工参与的项目总数。
variable a number;
variable b number;
exec 检索信息(1,:a,:b);
print a b;
部分截图:
3
(a)
(b)
(c)
(d)
4
(a)
(b)
5
(a)
7
相关文章推荐
- 软件公司创业完全手册[一]
- 系统分析师在软件公司中的位置
- 到软件公司学什么?
- 软件公司的招聘要求,有些其实就是中国的软件水平不能提高的原因
- 软件公司怎么消亡的
- 软件公司的十亿美元之炊
- 软件公司创业完全手册[一]
- 小型软件公司的绩效考核(转2009-02-07 00:26)
- 软件公司做现金管理的危机与方向
- 软件公司产品部
- 【南京】某上市软件公司招聘ERP项目经理和ERP架构师
- 软件公司招聘IPHONE手机开发工程师
- 软件公司的两种管理方式
- 聪明程序员 选择 软件公司 时要考虑的
- 软件公司的两种管理方式
- 软件公司项目经理岗位职责
- SaaS的商业模式是如何影响软件公司估值
- 【转】软件公司项目经理岗位职责
- 软件公司的两种管理方式
- 软件公司主要防泄密点