update graduate set cj=cj+10 where mz<>'汉'
10.创建一个名为rxcj(入学成绩)的视图,要求使用该视图能够查询入学成绩超过平均入学成绩的研究生的编号、姓名、入学成绩和所选导师的姓名及联系电话。 create view rxcj as
select bh,xm,cj,dsxm,dh from graduate g,teacher t
where g.dsbh=t.dsbh and cj>(select avg(cj) from graduate); (六)已知汽车销售数据库QCXS包含QCGS(汽车公司)数据表、QCXX(汽车信息)数据表和JYJL(交易记录)数据表,表结构如表 1、表2和表3所示:
表 1 QCGS(汽车公司表结构) 字段名 bh mc szd 字段名 qcbh cxmc bh dj 字段类型 字段宽度 CHAR CHAR CHAR 字段类型 CHAR CHAR CHAR INT 4 10 20 字段宽度 4 10 4 说明 公司编号,主码 公司名称,唯一 所在地 说明 汽车编号,主码 车型名称 公司编号,外码 单价 保修期,缺省值12 说明 交易编号,主码 汽车编号,外码 销量 销售日期 表 2 QCXX(汽车信息表结构) bxq INT 表 3 JYJL(交易记录表结构) 字段名 jybh qcbh xl xsrq 字段类型 CHAR CHAR INT DATE 字段宽度 4 4 请用SQL语句完成以下操作:
1.查询通用公司单价大于20万的汽车信息并按照单价降序排列,需要含有以下4列:公司名称,车型名,单价和保修期。 select mc,cxmc,dj,bxq from QCGS c,QCXX x where c. bh=x.bh and dj>200000
2.查询每个汽车公司卖出每款汽车的总销量,需给出汽车公司编号,汽车编号和销量。
select bh,j.qcbh,count(xl) from QCXX x,JYJL j where x.qcbh=j.qcbh group by j.qcbh
3. 查询所有产地为“天津”的汽车公司编号和姓名。 select bh,xm from QCGS where szd='天津'
4.查询生产汽车种类大于2的汽车公司编号。 select bh from QCXX
group by bh having count(cxmc)>2 5.查询所有进行过交易的汽车编号。 select distinct qcbh from JYJL
6.查询单价在10万-20万之间的汽车名称和单价。 select cxmc,dj from QCXX
where dj between 100000 and 200000 7.查询销量高于平均销量的汽车名称 select cxmc from QCXX x,JYJL j
where x.qcbh=j.qcbh and xl>(select avg(xl) from JYJL)
8.查询没有卖出过的汽车编号。 select qcbh from QCXX
where not in(select qcbh from JYJL); 9.使用SQL语句将汽车单价增加10%。 update QCXX set dj=dj*1.1
10.使用SQL语句创建一个名为zxxl(最新销量)的视图,要求能够使用该视图查询2015年销售量的车型名称、单价、销量和销售日期。 create view zxxl as
select cxmc,dj,xl,xsrq from QCXX q,JYJL j where q.qcbh=j.qcbh and xsrq='2015' (七)设“职工_社团”数据库有3个基本表:
职工:zg (zgh,xm,nl,xb,gz); 社会团体:shtt(bh,nc,fzr,dd); 参加:cj(zgh,bh,rq)。
其中:(1)职工表zg的主码为zgh(职工号)。xm为姓名,nl为年龄,xb为性别,gz为工资。
(2)社会团体表shtt的主码为bh(编号),fzr(负责人)为外码,参照职工表zg的zgh。nc为名称,fzr为负责人,dd为活动地点
(3)参加表cj的职工号zgh和编号bh为主码;zgh为外码,参照职工表zg的zgh;编号bh为外码,参照社会团体表shtt的bh。 rq为参加日期。
使用SQL语句完成下列操作:
1.定义参加表,在语句中要求定义表中的主码和外码约束;(说明:表中属性的类型根据实际情况定义。)
create table cj( zgh char(5), bh char(4), primary key(zgh,bh),
foreign key(zgh) references zg(zgh), foreign key(bh) references shtt(bh)) 2.查询每个社会团体的参加人数; select count(*) from cj group by bh
3.检索所有比“王华”年龄大的职工的姓名、年龄和性别; select xm,nl,xb from zg
where nl>(select nl from zg where xm='王华') 4.查找参加了歌唱队或篮球队的职工号和姓名; select zgh,xm from zg,shtt,cj
where zg.zgh=cj.zgh and shtt.bh=cj.bh and mc in('篮球队','歌唱队');
5.查找没有参加任何社会团体的职工信息;
selec * from zg where not in(select distinct zgh from cj) 6.将所有参加编号为“10001”的社会团体的职工的工资增加10%; update zg set gz=gz*1.1
where zgh in(select zgh from cj where bh='10001' )
7.查询年龄最大的职工的职工号和姓名; select zgh,xm from zg where nl=(select max(nl) from zg)
8.查询各社会团体的编号以及其负责人的姓名; select bh,xm from zg,shtt where zg.zgh=shtt.fzr
9.删除职工号为’402’的职工参加所有社会团体的记录; delete from cj where zgh='402'
10.以职工姓名为参数建立一个带参数的存储过程,用于查询其所参加的社会团体的编号和名称,并调用此存储过程查询“王明”所参加的社会团体的编号和名称。
create procedure procl @name char(8) as
select shtt.bh,mc from zg z,shtt s,cj c
where z.zgh=c.zgh and shtt.bh=c.bh and xm=@name exec procl @name='王明'