SQL面试题(非纯数据库方向)

上传人:xia****ai 文档编号:82026050 上传时间:2022-04-28 格式:DOC 页数:25 大小:140KB
收藏 版权申诉 举报 下载
SQL面试题(非纯数据库方向)_第1页
第1页 / 共25页
SQL面试题(非纯数据库方向)_第2页
第2页 / 共25页
SQL面试题(非纯数据库方向)_第3页
第3页 / 共25页
资源描述:

《SQL面试题(非纯数据库方向)》由会员分享,可在线阅读,更多相关《SQL面试题(非纯数据库方向)(25页珍藏版)》请在装配图网上搜索。

1、1触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。 2。什么是存储过程?用什么来调用? 答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。 3。索引的作用?和它的优点缺点是什么? 答:索引就一种特殊的查询表,数

2、据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。 3。什么是内存泄漏? 答:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。 4。维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为

3、什么? 答:我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。 5。什么是事务?什么是锁? 答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。 锁:在所以的DB

4、MS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。 6。什么叫视图?游标是什么?答:视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。7。为管理业务

5、培训信息,建立3个表: S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学员年龄 C(C#,CN)C#,CN分别代表课程编号,课程名称 SC(S#,C#,G) S#,C#,G分别代表学号,所选的课程编号,学习成绩(1)使用标准SQL嵌套语句查询选修课程名称为税收基础的学员学号和姓名? 答案:select s# ,sn from s where S# in(select S# from c,sc where c.c#=sc.c# and cn=税收基础) (2) 使用标准SQL嵌套语句查询选修课程编号为C2的学员姓名和所属单位?答:select sn,sd f

6、rom s,sc where s.s#=sc.s# and sc.c#=c2 (3) 使用标准SQL嵌套语句查询不选修课程编号为C5的学员姓名和所属单位?答:select sn,sd from s where s# not in(select s# from sc where c#=c5) (4)查询选修了课程的学员人数答:select 学员人数=count(distinct s#) from sc (5) 查询选修课程超过5门的学员学号和所属单位?答:select sn,sd from s where s# in(select s# from sc group by s# having co

7、unt(distinct c#)5)在面试过程中多次碰到两道SQL查询的题目,一是查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连续增长的列,完整的查询语句如下:select top 10 * from A where ID (select max(ID) from (select top 30 ID from A order by A ) T) order by A另外一道题目的要求是查询表A中存在ID重复三次以上的记录,完整的查询语句如下:select * from(select count(ID) as count from table group by ID)T

8、 where T.count3create table testtable1(id int IDENTITY,department varchar(12) )select * from testtable1insert into testtable1 values(设计)insert into testtable1 values(市场)insert into testtable1 values(售后)/*结果id department1 设计2 市场3 售后 */create table testtable2(id int IDENTITY,dptID int,name varchar(12)

9、insert into testtable2 values(1,张三)insert into testtable2 values(1,李四)insert into testtable2 values(2,王五)insert into testtable2 values(3,彭六)insert into testtable2 values(4,陈七)/*用一条SQL语句,怎么显示如下结果id dptID department name1 1 设计 张三2 1 设计 李四3 2 市场 王五4 3 售后 彭六5 4 黑人 陈七*/答案是:SELECT testtable2.* , ISNULL(de

10、partment,黑人)FROM testtable1 right join testtable2 on testtable2.dptID = testtable1.ID在面试应聘的SQL Server数据库开发人员时,我运用了一套标准的基准技术问题。下面这些问题是我觉得能够真正有助于淘汰不合格应聘者的问题。它们按照从易到难的顺序排列。当你问到关于主键和外键的问题时,后面的问题都十分有难度,因为答案可能会更难解释和说明,尤其是在面试的情形下。 你能向我简要叙述一下SQL Server 2000中使用的一些数据库对象吗? 你希望听到的答案包括这样一些对象:表格、视图、用户定义的函数,以及存储过程

11、;如果他们还能够提到像触发器这样的对象就更好了。如果应聘者不能回答这个基本的问题,那么这不是一个好兆头。 NULL是什么意思? NULL(空)这个值是数据库世界里一个非常难缠的东西,所以有不少应聘者会在这个问题上跌跟头您也不要觉得意外。 NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。假设您的SQL Server数据库里有ANSI_NULLS,当然在默认情况下会有,对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 UNKNOWN值进行比较,并在逻辑上希望获得一个答案。您必须使用IS NULL操作符。sql5什么是索引?SQL Server 2000里有

12、什么类型的索引? 任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。 简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQL Server里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。 什么是主键?什么是外键? 主键是表格里的(一个或

13、多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。 什么是触发器?SQL Server 2000有什么不同类型的触发器? 让未来的数据库开发人员知道可用的触发器类型以及如何实现它们是非常有益的。 触发器是一种专用类型的存储过程,它被捆绑到SQL Server 2000的表格或者视图上。在SQL Server 2000里,有INSTEAD-OF和AFTER两种触发器。INSTEAD-OF触发器是替代数据操控语言(Data M

14、anipulation Language,DML)语句对表格执行语句的存储过程。例如,如果我有一个用于TableA的INSTEAD-OF-UPDATE触发器,同时对这个表格执行一个更新语句,那么INSTEAD-OF-UPDATE触发器里的代码会执行,而不是我执行的更新语句则不会执行操作。 AFTER触发器要在DML语句在数据库里使用之后才执行。这些类型的触发器对于监视发生在数据库表格里的数据变化十分 您如何确一个带有名为Fld1字段的TableB表格里只具有Fld1字段里的那些值,而这些值同时在名为TableA的表格的Fld1字段里? 这个与关系相关的问题有两个可能的答案。第一个答案(而且是您

15、希望听到的答案)是使用外键限制。外键限制用来维护引用的完整性。它被用来确保表格里的字段只保存有已经在不同的(或者相同的)表格里的另一个字段里定义了的值。这个字段就是候选键(通常是另外一个表格的主键)。 另外一种答案是触发器。触发器可以被用来保证以另外一种方式实现与限制相同的作用,但是它非常难设置与维护,而且性能一般都很糟糕。由于这个原因,微软建议开发人员使用外键限制而不是触发器来维护引用的完整性。 对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑? 你正在寻找进行与数据操控有关的应聘人员。对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操

16、控发生的时候索引也必须要维护。 你可以用什么来确保表格里的字段只接受特定范围里的值? 这个问题可以用多种方式来回答,但是只有一个答案是“好”答案。您希望听到的回答是Check限制,它在数据库表格里被定义,用来限制输入该列的值。 触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。因此,微软建议使用Check限制而不是其他的方式来限制域的完整性。 如果应聘者能够正确地回答这个问题,那么他的机会就非常大了,因为这表明他们具有使用存储过程的经验。 返回参数总是由存储过程返回,它用来表示存储过程是成功还是失败。返回参数总是INT数

17、据类型。 OUTPUT参数明确要求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可以用作输出参数的数据类型是有一些限制的。)您可以在一个存储过程里使用多个OUTPUT参数,而您只能够使用一个返回参数。 什么是相关子查询?如何使用这些查询? 经验更加丰富的开发人员将能够准确地描述这种类型的查询。 相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会真正请求外部查询的值,从而形成一个类似于循环的状况。为管理岗位业务培训信息,建立3个表:S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄C (C#,CN ) C#,C

18、N 分别代表课程编号、课程名称SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩1. 使用标准SQL嵌套语句查询选修课程名称为税收基础的学员学号和姓名-实现代码:SELECT SN,SD FROM SWHERE S# IN(SELECT S# FROM C,SCWHERE C.C#=SC.C#AND CN=N税收基础)2. 使用标准SQL嵌套语句查询选修课程编号为C2的学员姓名和所属单位-实现代码:SELECT S.SN,S.SD FROM S,SCWHERE S.S#=SC.S#AND SC.C#=C23. 使用标准SQL嵌套语句查询不选修课程编号为C5的

19、学员姓名和所属单位-实现代码:SELECT SN,SD FROM SWHERE S# NOT IN(SELECT S# FROM SCWHERE C#=C5)4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位-实现代码:SELECT SN,SD FROM SWHERE S# IN(SELECT S# FROM SCRIGHT JOINC ON SC.C#=C.C# GROUP BY S#HAVING COUNT(*)=COUNT(S#)5. 查询选修了课程的学员人数-实现代码:SELECT 学员人数=COUNT(DISTINCT S#) FROM SC6. 查询选修课程超过5门的

20、学员学号和所属单位-实现代码:SELECT SN,SD FROM SWHERE S# IN(SELECT S# FROM SCGROUP BY S#HAVING COUNT(DISTINCT C#)5)5. 查询选修了课程的学员人数-实现代码:SELECT 学员人数=COUNT(DISTINCT S#) FROM SC6. 查询选修课程超过5门的学员学号和所属单位-实现代码:SELECT SN,SD FROM SWHERE S# IN(SELECT S# FROM SCGROUP BY S#HAVING COUNT(DISTINCT C#)5)题目2问题描述:已知关系模式:S (SNO,SNA

21、ME) 学生关系。SNO 为学号,SNAME 为姓名C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩1. 找出没有选修过“李明”老师讲授课程的所有学生姓名-实现代码:SELECT SNAME FROM SWHERE NOT EXISTS(SELECT * FROM SC,CWHERE SC.CNO=C.CNOAND CNAME=李明AND SC.SNO=S.SNO)2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩-实现代码:SELEC

22、T S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)FROM S,SC,(SELECT SNOFROM SCWHERE SCGRADE=2)A WHERE S.SNO=A.SNO AND SC.SNO=A.SNOGROUP BY S.SNO,S.SNAME3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名-实现代码:SELECT S.SNO,S.SNAMEFROM S,(SELECT SC.SNOFROM SC,CWHERE SC.CNO=C.CNOAND C.CNAME IN(1,2)GROUP BY SNOHAVING COUNT(DISTIN

23、CT CNO)=2)SC WHERE S.SNO=SC.SNO4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号-实现代码:SELECT S.SNO,S.SNAMEFROM S,(SELECT SC1.SNOFROM SC SC1,C C1,SC SC2,C C2WHERE SC1.CNO=C1.CNO AND C1.NAME=1AND SC2.CNO=C2.CNO AND C2.NAME=2AND SC1.SCGRADESC2.SCGRADE)SC WHERE S.SNO=SC.SNO5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩-

24、实现代码:SELECT S.SNO,S.SNAME,SC.1号课成绩,SC.2号课成绩FROM S,(SELECT SC1.SNO,1号课成绩=SC1.SCGRADE,2号课成绩=SC2.SCGRADEFROM SC SC1,C C1,SC SC2,C C2WHERE SC1.CNO=C1.CNO AND C1.NAME=1AND SC2.CNO=C2.CNO AND C2.NAME=2AND SC1.SCGRADESC2.SCGRADE)SC WHERE S.SNO=SC.SNOcreate table dept(deptno varchar(10) primary key,dname va

25、rchar(10);create table emp(empno varchar(10) primary key,ename varchar(10),job varchar(10),mgr varchar(10),sal varchar(10),deptno varchar(10) references dept(deptno);drop table dept;drop table emp;insert into dept values (1,事业部);insert into dept values (2,销售部);insert into dept values (3,技术部);insert

26、into emp values (01,jacky,clerk,tom,1000,1);insert into emp values (02,tom,clerk,2000,1);insert into emp values (07,biddy,clerk,2000,1);insert into emp values (03,jenny,sales,pretty,600,2);insert into emp values (04,pretty,sales,800,2);insert into emp values (05,buddy,jishu,canndy,1000,3);insert int

27、o emp values (06,canndy,jishu,1500,3);select * from dept;select * from emp;-1列出emp表中各部门的部门号,最高工资,最低工资select deptno as 部门号,max(sal) as 最高工资,min(sal) as 最低工资 fromemp group by deptno;-2 列出emp表中各部门job为CLERK的员工的最低工资,最高工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号 from emp wherejob=clerk group

28、by deptno;-3 对于emp中最低工资小于2000的部门,列出job为CLERK的员工的部门号,最低工资,最高工资select b.deptno as 部门号,max(sal) as 最高工资,min(sal) as 最低工资 from emp as bwhere job=clerk and (select min(sal)from emp as a where a.deptno=b.deptno)(select avg(a.sal) from emp as a where a.deptno=b.deptno) order by b.deptno;-11对于emp,列出各个部门中工资高

29、于本部门平均工资的员工数和部门号,按部门号排序select a.deptno as 部门号,count(a.sal) as 员工数 from emp as awhere a.sal(select avg(b.sal) from emp as b where a.deptno=b.deptno) group by a.deptno orderby a.deptno;-12对于emp中工资高于本部门平均水平,人数多与1人的,列出部门号,人数,平均工资,按部门号排序select count(a.empno) as 员工数,a.deptno as 部门号,avg(sal) as 平均工资from em

30、p as a where (select count(c.empno) from emp as c where c.deptno=a.deptno andc.sal(select avg(sal) from emp as b where c.deptno=b.deptno)1group by a.deptno order by a.deptno;-13对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数select a.deptno as 部门号,a.ename as 姓名,a.sal as 工资,(select count(b.ename) from em

31、p as bwhere b.sala.sal) as 人数 from emp as awhere (select count(b.ename) from emp as b where b.sal=51、对于教学数据库的三个基本表(如下),试用SQL的查询语句表达下列查询:学生S(S#,SNAME,AGE,SEX)学习SC(S#,C#,GRADE)课程C(C#,CNAME,TEACHER)(1)检索LIU老师所授课的课程号和课程名。Select c#,cnameFrom cWhere teacher=LIU(2)检索年龄大于23岁的男学生的学号和姓名。Select s#,snameFrom sW

32、here AGE23 and sex=男(3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。方法一:Select snameFrom s,sc,cWhere s.sex=女and s.s#=sc.s# and sc.c#=c.c# and c.teacher=liu方法二:Select snameFrom sWhere s# in (select s#From scWhere c# in (select c#From cWhere teacher=liu)and sex=女(4)检索WANG同学未学的课程的课程号。方法一:Select c#From CWhere c# not in (

33、select c#From sc,sWhere s.name=wangand s.s#=sc.s#)方法二:Select c#From cWhere not exists(select * From s,sc Where s.s#=sc.s# and sc.c#=c.c# and sname=wang)(5)检索至少选修两门课程的学生学号。方法一:Select distinct a.s# From sc a,sc b Where a.s#=B.s# and a.c#b.c#方法二:Select s#From scGroup by s#Having count(*)=2(6)检索全部学生都选修的

34、课程的课程号与课程名。Select c#.cnameFrom cWhere not exists(select *From sWhere not exists (select * From sc Where s.s#=sc.s# and sc.c#=c.c#)(7)检索选修课程包含LIU老师所授课的学生学号。Select distinct s#From sc s1Where not exists (select * From c where teacher=liu and Not exists(select * from sc s2Where s1.s#=s2.s#And c.c#=s2.c#

35、)(8)统计有学生选修的课程门数。Select count(distinct c#)From sc(9)求选修C4课程的学生的平均年龄。Select AVG(age)From s,scWhere s.s#=sc.s# and c#=c4(10)求LIU老师所授课程的每门课程的学生平均成绩。Select c#,avg(grade)From scWhere c# in (select c#From CWhere teacher=liu)Group by c#(11)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,Select c#,count(s#)From scG

36、roup by c#Having count(s#)102、更新语句Insert、update、delete试用SQL更新语句对教学数据库中三个基本表S、SC、C进行更新操作。(参看作业3)(1)在基本表S中插入一个学生元组(S9,WU,18)。Insert into s(s#,sname,age)Values(S9,WU,18)(2)在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个新的基本表STUDENT(S#,SNAME,SEX)。Create table student(s# char(10), Sname char(20), Sex cha

37、r(2)Insert into stuentSelect S#,sname,sexFrom sWhere not exists(select *From scWhere s.s#=sc.s# and grade80)或Select S#,sname,sex into studentFrom sWhere not exists(select *From scWhere s.s#=sc.s# and grade(select gradeFrom sc,cWhere ame=maths and sc.c#=c.c#)方法二:update sc set grade=nullWhere grade(se

38、lect avg(grade) from sc)(7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。(略)若课程号为:C4Update sc set grade=grade*1.05 Where c#=C4and grade75若课程名为:C4Update sc set grade=grade*1.05 Where C# in (select C#From CWhere cname=C4)and grade 75注:查询每位学生的学号、姓名及总成绩。select sc.sno,sname,sum(grade)from

39、 student,scwhere student.sno=sc.snogroup by sc.sno,sname若语句中含有group by子句,select 子句中的字段,除集聚函数外,都需在group by后出现才行。多表时,有重复字段名时,一定要标明所有的字段是哪个表的。 3、创建表create实例二:设有如图所示的关系S,SC和C,试用关系代数表达式表示下列查询语句: S SCc1、 创建实例二中的基本表,指出主键、外键。Create table S(S# int primary key,Sname char(8),AGE tinyint,Sex char(2)Create table

40、 SC(S# int foreign key references s(S#),C# char(3) foreign key references c(C#),Grade int,Primary key (S#,C#)Create table C(C# char(3) primary key,cname char(10),teacher char(8) 1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话Create table stu (学号 int ,姓名 varchar(8),年龄 int,性别 varchar(4),家庭地址 varchar(50),联系电话

41、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,男,

42、110,高中)Insert into stu values(4,D,18,女,114,大学)5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”Update stu set 学历=大专 where 联系电话 like 11%6) 删除学生表的数据,姓名以C开头,性别为男的记录删除Delect from stu where 性别=男 and 姓名 like c%7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来Select 姓名,学号 from stu where 年龄23 order by s_age desc-5 查询姓张的所有学生 se

43、lect *from student where s_name like张%-6 查询所有年龄在23-25 之间,并且是男学生,还要姓张,只返回前一条记录, 并按照年龄和所在系倒排序。 select top 1*from student where s_name like%张% and s_sex=男 and s_age between 23 and 25 order by s_age desc, s_dept asc-7 查询既不是交通工程系,也不是土木的学生的姓名和年龄及所在系。 select s_name,s_age ,s_dept from student where s_dept n

44、ot in(交通工程系,土木)-8 查询所有学生中不姓张的学生 select * from student where s_name not like 张%-9 从学生表中查询学号的最后一位不在6-9 范围内的学生情况 select * from student where substring(s_no,8,1) not like6-9-10 查询成绩表中成绩是空的学生的情况 select * from sc where c_grade=null-11 查询学生总人数 select count(*) as 总人数 from student-12 查询选修了课程的学生人数 select coun

45、t(*) as 总人数 from sc-13 计算所有男生的成绩之和 select sum(c_grade)from sc sc ,student where s_sex=男and student.s_no=sc.s_no-14 查询课程号为c002 的学生平均成绩 select avg(c_grade)from sc where c_no=c002-15 查询选修了课程的学生 select count(distinct s_no) from sc-16 查询选修了r001 课程的学生最高分和最低分。 select max(c_grade),min(c_grade) from sc where

46、 c_no=r001-17 统计每门课程的选课人数,并列出课程号和人数 select c_no ,count(*)from sc group by c_no-18 查询每名学生的选课门数和平均成绩 select s_no ,count(*),avg(c_grade)from sc group by s_no-19 查询修了3 门以上课程的学生学号 select s_no ,count(*)from sc group by s_no having count(*)=3-20 查询修课门数大于等于3 的学生平均成绩和选课门数 select s_no ,avg(c_grade),count(*)from sc group by s_no having count(*)=3-21 查询每个学生的修课情况 select * from student ,sc where student.s_no=sc.s_no(两个表中的学号字段均列出)-22 查询计算机学生的修课情,要求列出学生的名字、所修课程号和成绩 select s_name,c_no ,c_grade from student a ,sc b where s_dept=计算机and a.s_no=b.s_no-23 查询选修了大学语文课程的学生修课成绩,要求列出学生的名字,所修的课程名和成绩 e

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!