(完整版)上海大学数据库上机作业上机练习4作业
- 格式:doc
- 大小:22.37 KB
- 文档页数:4
数据库上机练习题数据库上机练习题在学习数据库课程时,上机练习题是非常重要的一部分。
通过上机练习,我们可以巩固理论知识,提高实践能力,并且更好地理解数据库的概念和应用。
本文将介绍一些常见的数据库上机练习题,帮助读者更好地应对这些挑战。
一、基本查询数据库的基本查询是我们在实际应用中最常用的功能之一。
在上机练习中,我们通常需要编写SQL语句来实现一些简单的查询操作。
比如,查询某个表中的所有记录、按条件筛选记录、排序等等。
举个例子,假设我们有一个学生表,包含学生的学号、姓名、性别和年龄等字段。
我们可以通过以下SQL语句查询所有学生的信息:SELECT * FROM students;如果我们只想查询女生的信息,可以使用以下语句:SELECT * FROM students WHERE gender = '女';二、表的连接在实际应用中,我们经常需要从多个表中获取数据,并进行关联和处理。
上机练习中,表的连接是一个常见的考点。
通过表的连接,我们可以根据某个字段将两个或多个表关联起来,从而获取更丰富的信息。
举个例子,假设我们有一个学生表和一个课程表,学生表中包含学生的学号和姓名,课程表中包含课程的编号和名称。
我们可以使用以下SQL语句查询每个学生所选的课程:SELECT , FROM studentsINNER JOIN coursesON students.student_id = courses.student_id;三、子查询子查询是数据库中非常有用的一种技术,它可以将一个查询的结果作为另一个查询的输入。
在上机练习中,我们经常需要使用子查询来解决一些复杂的问题。
举个例子,假设我们有一个订单表和一个产品表,订单表中包含订单的编号和产品的编号,产品表中包含产品的编号和价格。
我们可以使用以下SQL语句查询每个订单的总金额:SELECT order_id,(SELECT SUM(price) FROM products WHERE products.product_id =orders.product_id) AS total_priceFROM orders;四、数据更新除了查询,数据库还提供了数据更新的功能。
《数据库系统与应用》上机习题*************************************************************************************************第五部分、SQL高级应用要求掌握:熟练掌握T-SQL语言,了解异常处理的相关语句,学会用游标方式对数据库进行操作。
一、做书上第十章的例题二、写出书上198页练习题10中第7、8、9、11题的结果,并上机验证。
完成第12、13、14题7、数据库中没有stud表8、9、重复插入ID的值11、12、编写一个程序,采用游标的方式输出所有课程的平均分use schoolgoset nocount ondeclare @s_cj int,@s_name char(8)declare c_cursor cursor forselect score、课程号,AVG(score、分数)from scoregroup by score、课程号order by score、课程号open c_cursorfetch next from c_cursor into @s_cj,@s_namewhile@@FETCH_STATUS=0beginprint CAST(@s_cj as char(8))+@s_namefetch next from c_cursor into @s_cj,@s_nameendclose c_cursordeallocate c_cursorgo13、编写一个程序,使用游标的方式输出所有学号,课程号,成绩等级use schooldeclare @s_xh int,@c_name char(8),@s_cj float,@dj char(1) declare c_cursor cursor forselect student、学号,score、课程号,score、分数from score,studentwhere score、学号=student、学号group by student、学号,score、课程号,score、分数order by student、学号beginset @dj=CASEwhen @s_cj>=90 then'A'when @s_cj>=80 then'B'when @s_cj>=70 then'C'when @s_cj>=60 then'D'else'E'endopen cfetch next from c_cursor into @s_xh,@c_name,@s_cjprint'学号课程号等级'print'---------------------------'while@@FETCH_STATUS=0beginprint @s_xh+' '+@c_name+' '+@s_cjfetch next from c_cursor into @s_xh,@c_name,@s_cjendclose c_cursordeallocate c_cursor14、编写一个程序,输出各班各课程的平均分use schoolgoset nocount ondeclare @s_cj int,@s_name char(8),@s_bj char(8)declare c_cursor cursor forselect student、班级,score、课程号,AVG(score、分数)from score,studentgroup by score、课程号,student、班级order by score、课程号,student、班级open c_cursorfetch next from c_cursor into @s_cj,@s_name,@s_bjprint'学号班级成绩'print'-------------------'while@@FETCH_STATUS=0beginprint CAST(@s_cj as char(8))+@s_name+@s_bjfetch next from c_cursor into @s_cj,@s_name,@s_bjendclose c_cursordeallocate c_cursorgo三、完成书上394页上机实验题3(1)对各出版社的图书比例情况进行分析,即图书比例高于50%为“很高”,图书比例高于30%为“'较高”,图书比例高于10%为“一般”。
C第4次上机练习—、编程题1、编程输出1〜200之间所有能被12整除的整数。
—|AII global members 二][# include < s t d i o. h > vo i d ma i n (){i n t i ;For (i = l; i < = 2 0 0; i++){i f ( i%l2==0)pr i n t f (n%d ”,i); } p r i n t f (”\n M);2、从键盘输入n和k的值,求r?的值(要求不调用库函数pow())。
#include <s t d i o. h> vo i d ma i n (){i n t i;doub1e n,k,p=l;scanf (n%lf%lf n,&n, &k); for (i = l; i <=k; i++) (p=p*n;}pr i n t f (n% 1 f \n ”,p|);3、任意输入一个正整数,将它逆序打印出来。
如:输入12345,则输出54321,输入234,则输出432。
#i n c 1 LI d e < s t d i o. h>vo i d ma i n ()<i n t x;printf (n PLease i npu t x:"); scanf (n%d n, &x);do{printf x%l0);x/ = l 0;} wh i 1 e (x ! = 0);}4、下面的公式可以用来计算圆周率PI的近似值:JzlaP 1/8=1 / (1*3) +1/ (5*7) +1/ (9*11) +…… 请编程序计算公式的 前15项,看PI 的近似值是多少。
方法一:”include <或如禺>+, 逊 mainO”诞i ;"float bi=O,P ;v敷ii=l;i<=60;i+=4)”2p=1.0 氐*(i+2));”NBXi 威TPI 母&3如",pi*8);“ }* include逊 mainO”{”圾顼 =l;i<=15;i++)”n=4*i-3;” p=l 』心i*(n+幼屮pnntfC'PI=%.&3 如",pi*8);v5、求Sn=a+aa+aaa+aa...aa(n 个a),其中a, n 由键盘输入。
数据库上机实验内容及要求(第二部分)1.建立工厂管理数据库工厂(包括厂名和厂长名)需要建立一个管理数据库存储以下信息:(1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和联系电话;(2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种;(3)一个车间生产多种产品,产品有产品号和价格;每种产品只能由一个车间生产;(4)一个车间制造多种零件,一种零件也可能为多个车间制造。
零件有零件号、重量和价格;(5)一种产品可由多种零件组成,一种零件也可以装配出多种产品;(6)产品和零件均存入仓库;(7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。
根据以上需求分析结果,按照下述要求,设计并建立工厂管理数据库。
◆分析实体及联系,设计E-R图。
◆将E-R图转换成关系模式,并规范化到3NF。
◆在Microsoft SQL Server2000中基于“企业管理器”建立数据库及相关对象(主码,外码,索引,约束等)。
◆测试数据入库2.基于“查询分析器”,完成并保存下述题目的SQL脚本(1)建立“工种”是“钳工”的所有职工详细信息的视图;create view View_工人_钳工asselect*from职工表where工种='钳工'with check option(2)建立“车间号”是“CJ01”的钳工详细信息的视图;create view View_钳工_CJ01asselect*from View_工人_钳工where车间号='CJ01'(3)建立使用了“零件号”是“LJ0002”的所有产品详细信息的视图;create view View_产品_零件LJ0002asselect产品表.产品号,价格,车间号,仓库号from装配表,产品表where装配表.产品号=产品表.产品号and零件号='LJ0002'(4)对零件表按照“零件号”建立唯一索引;create unique index Index_U_零件号on零件表(零件号)(5)对职工表按照“性别”建立聚簇索引;create clustered index Index_C_性别on职工表(性别)(6)查询使用了“零件号”是“LJ0002”的产品的生产车间号;select车间号from装配表,产品表where装配表.产品号=产品表.产品号and零件号='LJ0002'(7)查询“职工号”是“ZG0001”的职工所在车间的“车间主任姓名”和“联系电话”;select车间主任姓名,联系电话from职工表,车间表where职工表.车间号=车间表.车间号and职工号='ZG0001'(8)查询使用了“零件号”是“LJ0002”的所有产品的生产车间的“车间主任姓名”和“联系电话”;(连接查询、嵌套查询实现)select车间主任姓名,联系电话from产品表,装配表,车间表where产品表.产品号=装配表.产品号and产品表.车间号=车间表.车间号and装配表.零件号='LJ0002'select车间主任姓名,联系电话from车间表where车间号in(select车间号from产品表where产品号in(select产品号from装配表where零件号='LJ0002'))(9)查询使用了“零件号”是“LJ0002”的所有产品的“产品号”和“零件数量”,且查询结果按照“零件数量”降序排列;select产品号,零件数量from装配表where零件号='LJ0002'order by零件数量desc(10)查询使用了“零件号”是“LJ0002”的产品数;select count(*)as产品数from装配表where装配表.零件号='LJ0002'(11)查询“LJ0002”号零件装配产品的使用总量;select sum(零件数量)as使用总数from装配表where零件号='LJ0002'(12)查询使用了3种以上零件的产品号;select产品号from装配表group by产品号having count(*)>=3【注意】:下机时保存数据库文件(.mdf和.ldf)及SQL脚本文件到U盘。
1、教学目的:(1)熟悉并掌握ACCESS数据库管理系统的应用;(2)加深对所学的关系型数据库基本理论的理解。
2、教学内容(1)熟悉教材中表3.1-3.6所列明的教学管理系统的数据关系的情况,对其中的某些不合理之处做出修改。
(2)按照表3.9-3.11所使用的格式,写出其余的三个表的表结构,并以表格的方式输入到一个Word文档之中。
(3)使用数据库管理系统ACCESS建立一空数据库,以自己的学号为其命名,并按照要求(2)中所确定的表结构,在空的数据库中建立各个数据表(特别注意,由于在以后的教学环节中该数据库文件仍将多次用到,请注意保存)。
(4)将表3.1-3.6中的数据输入到对应的数据表中,注意,省略号部分所代表的内容可以暂不考虑。
(5)为已经建立好的各个数据表建立主键。
(6)建立学生信息表、课程信息表和学生成绩表三个表之间的关系。
(7)将数据库文件和(2)中所要求建立的Word文件以其发送到指导教师的信箱,作为本次上机课考核的依据。
1、教学目的:(1)熟悉在在ACCESS数据库管理系统应用SQL结构化查询语言的方法;(2)熟练掌握SQL结构化查询语言中的命令,并能运用其实现对数据库(表)、记录的相关操作。
2、教学内容(1)使用CREATE命令在上次上级课程中所建立的数据库中建立表3.1-3.6中所示的数据表。
数据表中的字段的特征(类型、宽度等)为上次作业中WORD文档中所确定的结果(特别提示,表的名字不要重复)。
(2)将步骤(1)中所建立的各个数据表使用SQL命令删除。
(3)练习使用SQL结构化查询语言中的查询命令。
①查询所有教师的基本信息。
②查询“计算机系”全体教师的信息。
③查询“顾国为”老师的上课时间。
④查询全部核心课程的名称。
⑤查询“计算机文化”基础课程的平均成绩。
⑥查询学号为“970001”的同学的所选的课程的名称。
⑦查询选课两门以上的同学的学号。
⑧查询1978年12月31日之前出生的同学的信息。
试用SQL的查询语句表达下列查询:1.检索王丽同学所学课程的课程号和课程名。
select Cno ,Cname from c where Cno in(select cno from sc where sno in (select sno from s where sname='王丽' ))2.检索年龄大于23岁的男学生的学号和姓名。
select sno,sname from swhere sex='男' and age>233.检索‘c01’课程中一门课程的女学生姓名select sname from swhere sex='女' and sno in(select sno from sc where cno='c01')4.检索s01同学不学的课程的课程号。
select cno from cwhere cno not in (select cno from sc where sno ='s01')5.检索至少选修两门课程的学生学号。
select sc.sno from s,scwhere s.sno=sc.snogroup by sc.snohaving count(o)>=26.每个学生选修的课程门数。
解法一:select so.sno sno,ount,s.snamefrom(select sc.sno sno,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno ) so,swhere s.sno=so.sno解法二:select sc.sno sno,s.sname,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno,sname7.求选修C4课程的学生的平均分。
《数据库技术与应⽤》上机⼤作业数据库⼤作业1、查询XS表中的所有列。
use XSCJselect *from XS;2、查询XS表中计算机专业同学的学号、姓名和总学分。
use XSCJselect 学号,姓名,总学分from XSwhere 专业名= '计算机';3、查询XS表中计算机专业同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark。
use XSCJselect 学号as number , 姓名as name , 总学分as markfrom XSwhere 专业名= '计算机';4、查询XS表中通信⼯程专业总学分⼤于等于42的学⽣情况。
use XSCJselect *from XSwhere 专业名= '通信⼯程' and 总学分>= 42;5、查询XS表中姓“王”且单名的学⽣情况。
use XSCJselect *from XSwhere 姓名like '王_';6、查询XS表中不在1979年出⽣的学⽣情况。
use XSCJselect *from XSwhere 出⽣时间not between '1979-01-01' and '1979-12-31';7、查询选修了课程号为101的学⽣情况。
use XSCJselect *from XSwhere 学号in ( select 学号from XS_KCwhere 课程号= '101');8、查询未选修离散数学的学⽣情况。
use XSCJselect *from XSwhere 学号not in ( select 学号from XS_KC where 课程号in ( select 课程号from KC where 课程名= '离散数学'));9、查询⽐所有计算机系的学⽣年龄都⼤的学⽣情况。
上大学数据库上机作业《数据库系统与应用》上机习题*************************************************************************************************第五部分、SQL高级应用一、做书上第十章的例题二、利用上次上机的学生_课程数据库1. 求选修了高等数学的学生学号和姓名。
USE学生课程SELECT学生.学号,姓名,选课.课程号FROM学生,选课,课程WHERE学生.学号=选课.学号AND课程.课程号=选课.课程号AND课程名='高等数学'2.求C1课程的成绩高于张三的学生学号和成绩。
USE学生课程SELECT x.学号,x.成绩FROM选课x,选课yWHERE x.课程号='C1'AND x.成绩>y.成绩AND y.学号='S4'AND y.课程号='C1'ORDER BY x.学号DESC第二种:USE学生课程SELECT学号,成绩FROM选课WHERE课程号='C1'AND成绩>(SELECT成绩FROM选课,学生WHERE课程号='C1'AND姓名='张三'AND选课.学号=学生.学号)3.求其他系中比自动化学院某一学生年龄小的学生。
USE学生课程SELECT学号,姓名,年龄,单位FROM学生WHERE年龄<(SELECT MAX(年龄)FROM学生WHERE单位='自动化学院')AND单位!='自动化学院'ORDER BY学号DESC4.求其他系中比自动化学院学生年龄都小的学生。
USE学生课程SELECT学号,姓名,年龄,单位FROM学生WHERE年龄<(SELECT MIN(年龄)FROM学生WHERE单位='自动化学院')AND单位!='自动化学院'ORDER BY学号DESC5.求选修了C2课程的学生的姓名。
《数据库原理与应用》综合设计任务书前言《数据库原理与应用》课程的重点知识模块包括:1)数据库设计、2)用SQL实现建库、建表、查询、更新、和创建视图、3)存储过程和触发器设计。
针对这三个应用能力,用一个案例作为背景,布置三次大作业。
在校大学生都能理解“图书管理系统”的应用场合和业务流程。
因此,以图书管理系统作为案例来布置作业,可以降低业务分析难度,让学生将主要精力放在知识消化与技术应用上。
本文档包括四个部分。
第一部分描述系统的需求,第二部分提出E-R模型设计和关系模型设计的任务;第三部分提出在SQL Server中,用SQL语句来建库、建表、查询、更新数据、创建视图的任务;第四部分,根据应用需求、安全需求和数据完整性要求,提出设计存储过程和触发器的任务。
每个任务之前,都给出了完成任务所需要掌握的关键知识点,学生可以在对这些知识点进行复习的基础上完成任务,每个任务是一次大作业。
第一部分案例的需求描述本部分描述“图书管理系统”的需求,学生通过阅读本部分内容,了解系统的功能要求、运行环境,对系统所需的数据有总体认识,作为三次作业的基础。
1.2 需求分析1)功能需求图1-1:功能需求示意图教师信息管理:用于教师基本资料的增删改查。
图书信息管理:用于图书基本信息的增删改查,分类统计图书册数和价值。
借书登记:记录借书时间、所借图书、借书人、办理人。
还书登记:记录还书时间、所还图书、还书人、办理人。
催还:查询借阅逾期的借书信息,给借书人发电子邮件,给借书人的部门打电话。
2)运行环境要求图1-2:运行环境拓扑图系统采用C/S模式,有两台PC和一台服务器,联成一个局域网。
PC上安装图书管理软件的客户端,服务器上安装DBMS,服务器也可由两台PC中的一台来代替。
第二部分作业1——E-R模型与关系模型设计(满分8分)本部分的任务是:在需求分析的基础上,进行E-R图设计,然后将E-R模型转换为关系模型。
任务:1)根据需求描述,绘制E-R图。
数据库上机习题及答案 Revised by Liu Jing on January 12, 2021数据库及应用复习题一、设计题有一个[学生课程]数据库,数据库中包括三个表:学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为:Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 为关键字。
课程表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记为:Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。
成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为: SG(Sno,Cno,Grade) (SNO, CNO)为关键字。
用SQL语言实现下列功能:1.建立学生表Student,其中学号属性不能为空,并且其值是唯一的。
2.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。
3.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
4.查询学习1号课程的学生最高分数、平均成绩。
5.查询与“李洋”在同一个系学习的学生。
6.将计算机系全体学生的成绩置零。
7.删除学号为05019的学生记录。
8.删除计算机系所有学生的成绩记录。
1.CREATETABLE Student(Sno CHAR(5) NOT NULL UNIQUE,Sname CHAR(20),Ssex CHAR(2),Sage INT,Sdept CHAR(15))2.ALTER TABLE Student ADD Scome DATETIME 3.SELECT Sno, GradeFROM SGWHERE Cno='3'ORDER BY Grade DESC4.SELECT MAX(Grade), AVG(Grade)FROM SCWHERE Cno='1'5.SELECT Sno, Sname, SdeptFROM StudentWHERE Sdept IN(SELECT Sdept FROM StudentWHERE Sname='李洋')6. UPDATE SGSET Grade=0WHERE Sno in( SELECT Sno FROM StudentWHERE Sdept = '计算机系')7.DELETE FROM StudentWHERE Sno='05019'8. DELETE FROM SGWHERE Sno in( SELECT Sno FROM StudentWHERE Sdept = '计算机系')二、设计题现有关系数据库如下:数据库名:教师数据库教师表(编号 char(6),姓名,性别,民族,职称,身份证号)课程表(课号 char(6),名称)任课表(ID,教师编号,课号,课时数)用SQL语言实现下列功能的sql语句代码:1. 创建上述三表的建库、建表代码(14分);要求使用:主键(教师表.编号,课程表.课号)、外键(任课表.教师编号,任课表.课号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性别、课时数),自动编号(ID)2. 将下列课程信息添加到课程表的代码(6分)课号课程名称100001 SQL Server数据库100002 数据结构100003 VB程序设计修改课号为100003的课程名称:Visual Basic程序设计删除课号为100003的课程信息3. 写出创建[任课表视图](教师编号,姓名,课号,课程名称,课时数)的代码;(4分)4. 写出创建[某门课任课教师]内嵌表值函数以及检索的代码;(6分)检索:所有代'SQL Server数据库'这门课程的老师姓名;5. 写出创建[统计课时数]:输出最大课时数、最低课时数、平均课时的存储过程以及执行代码;(6分)6.写出创建:计算某教师代课总课时,并将值返回的存储过程以及执行代码。
上大学数据库上机作业《数据库系统与应用》上机习题*************************************************************************************************第四部分、SQL查询━━嵌套和组合统计查询要求掌握:利用SQL查询语言表达嵌套查询语句以及数据查询中的统计计算和组合操作。
一、做书上第九章余下的例题,并完成书上练习题9中第11、12、13、14题11.if exists(SELECT*FROM sys.objects WHERE name=student)12.二、利用图书_读者数据库1. 求机械工业出版社出版的各类图书的平均价。
USE图书读者SELECT类别,A VG(定价)AS平均价FROM图书WHERE出版社='机械工业出版社'GROUP BY类别2.求各类图书的最高价、最低价、图书的数量。
USE图书读者SELECT类别,MAX(定价)AS最高价,MIN(定价)AS最低价,COUNT(*)AS数量FROM图书GROUP BY类别3.查找图书类别,要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的1.5倍。
USE图书读者SELECT类别FROM图书WHERE定价=ALL(SELECT MAX(定价)FROM图书WHERE定价<=ALL(SELECT A VG(定价)*1.5FROM图书))4.计算机类和机械工业出版社出版的图书。
USE图书读者SELECT*FROM图书WHERE出版社='机械工业出版社'AND类别='计算机'5.查询所有读者借阅过的书,要求按读者姓名、书名来排序。
USE图书读者SELECT读者.编号,借阅.读者编号,姓名,书名FROM图书,读者,借阅WHERE读者.编号=借阅.读者编号AND借阅.书号=图书.书号ORDER BY姓名6. 查询所有在2008.11.15日以后被借阅过的图书名及借阅者。
USE图书读者SELECT读者.编号,借阅.读者编号,书名,姓名,借阅日期FROM图书,读者,借阅WHERE读者.编号=借阅.读者编号AND借阅.书号=图书.书号AND借阅日期>'2008-11-15'ORDER BY姓名三、利用上次上机的学生_课程数据库1. 查询每个学生的情况以及他所选修的课程。
USE学生课程SELECT学生.学号,姓名,选课.课程号,课程名,单位FROM学生,选课,课程WHERE学生.学号=选课.学号AND选课.课程号=课程.课程号ORDER BY学号2.求学生的学号、姓名、选修的课程名及成绩。
USE学生课程SELECT学生.学号,姓名,选课.课程号,课程名,成绩FROM学生,选课,课程WHERE学生.学号=选课.学号AND选课.课程号=课程.课程号ORDER BY学号3.求选修C1课程且成绩为90分以上的学生学号、姓名及成绩。
USE学生课程SELECT学生.学号,姓名,选课.课程号,课程名,成绩FROM学生,选课,课程WHERE学生.学号=选课.学号AND选课.课程号=课程.课程号AND选课.课程号=’C1’ AND成绩>90 ORDER BY学生.学号4. 查询每门课程的间接先行课(就是先行课的先行课)。
USE学生课程SELECT选课.课程号,课程名,先行课FROM选课,课程WHERE选课.课程号=课程.课程号四、完成书上P158页上机实验题41.显示所有职工的年龄,并按职工号递增排序。
USE factorySELECT职工号,DATEDIFF(YY,GETDATE(),出生日期)AS年龄FROM workerORDER BY职工号2.求出各部门的党员人数。
USE factorySELECT部门号,SUM(cast(党员否as bigint))AS党员人数FROM workerWHERE党员否='True'GROUP BY部门号3.显示所有职工的姓名和2004年1月份的工资数。
USE factorySELECT姓名,工资FROM salaryWHERE日期='2004-01-04'4.显示所有职工的职工号、姓名和平均工资。
USE factorySELECT职工号,姓名,A VG(工资)AS平均工资FROM salaryGROUP BY职工号,姓名5.显示所有职工的职工号、姓名、部门名和2004年2月份的工资,并按部门名顺序排序。
USE factorySELECT salary.职工号,salary.姓名,部门名,工资FROM salary,depart,workerWHERE worker.部门号=depart.部门号AND日期='2004-02-03'AND worker.职工号=salary.职工号ORDER BY部门名6.显示个部门名和该部门的所有职工平均工资。
USE factorySELECT depart.部门名,A VG(工资)AS平均工资FROM salary,depart,workerWHERE worker.部门号=depart.部门号AND worker.职工号=salary.职工号GROUP BY depart.部门名7.显示所有平均工资高于1200的部门名和对应的平均工资。
USE factorySELECT depart.部门名,A VG(工资)AS平均工资FROM salary,depart,workerWHERE worker.部门号=depart.部门号AND worker.职工号=salary.职工号GROUP BY depart.部门名HA VING A VG(工资)>12008.显示所有职工的职工号、姓名和部门类型,其中财务部和人事部属管理部门,市场部属市场部门。
USE factorySELECT worker.职工号,worker.姓名,CASE rtrim(部门名)WHEN'财务处'THEN'管理部门'WHEN'人事处'THEN'管理部门'WHEN'市场部'THEN'市场部门'ELSE'其他部门'END AS部门类型FROM worker inner join depart On worker.部门号=depart.部门号9.若存在职工号为10的职工,则显示其工作部门名称,否则显示相应的提示信息。
USE factoryGODECLARE@no int,@dep char(10)SET@no=10IF EXISTS(SELECT*FROM worker WHERE职工号=@no)BEGINSELECT@dep=depart.部门名FROM worker,departWHERE worker.职工号=@no AND worker.部门号=depart.部门号PRINT'职工号为'+CAST(@no AS CHAR(2))+'的职工在'+CAST(@dep AS char(6))+'工作'ENDELSEqwPRINT'不存在该员工的记录'GO第二种:USE factoryDECLARE@cno intSET@cno=10IF EXISTI (SELECT * FROM worker WHERE 职工号=@cno)SELECT 部门名FROM depart WHERE 部门号IN(SELECT 部门号FROM worker WHERE 职工号=@cno)ELSESELECT ‘没有该工号’10.求出男女职工的平均工资,若男职工平均工资高于女职工平均工资50%,怎显示“南‘男职工比女职工的工资高多了’,若男职工平均工资高于女职工平均工资比率在1.5-0.8之间,则显示男职工平均工资高于女职工平均工资差不多“”的信息,否则“女职工平均工资高于男职工平均工资”USE factoryGODECLARE@avg1float,@avg2float,@ratio float--计算男职工平均工资SELECT@avg1=A VG(工资)FROM worker,salaryWHERE worker.职工号=salary.职工号AND worker.性别='男'--计算女职工平均工资SELECT@avg2=A VG(工资)FROM worker,salaryWHERE worker.职工号=salary.职工号AND worker.性别='女'SET@ratio=@avg1/@avg2IF@ratio>1.5PRINT'男职工比女职工的工资高多了'ELSEIF@ratio>=0.8PRINT'男职工跟女职工的工资差不多'ELSEPRINT'女职工比男职工的工资高多了'GO。