1、4,SQL语言的数据操纵功能包括 , , ,和 ,6,在SELECT语句中,HAVING子句必须跟在 子句后面.2,对于教学数据库的三个基本表 学生 S(S#,SNAME,AGE,SEX) 学习 SC(S#,C#,GRADE) 课程 C(C#,CNAME,TEACHER) 试用SQL的查询语句表达下列查询:(1)在SC表中根据成绩建索引. (1)检索LIU老师所授课程的课程号和课程名. (2)检索年龄大于23岁的男学生的学号和姓名.(3)检索选课人数大于20人的课程号.(1)统计有学生选修的课程门数. (2)求选修C4课程的学生的平均年龄.(3)求LIU老师所授课程的每门课程的学生平均成绩.(
2、 4)检索女生人数大于50人的系.(5)检索至少选修两门课程(不及格的课程不能含在内)的学生学号.(6)求LIU老师所授课程的每门课程的学生平均成绩,按成绩的降序排序.(7)统计每门课程的学生选修人数(超过10人的课程才统计).要求输出课程号和选修人数, 查 询结果按人数降序排列,若人数相同,按课程号升序排列.4, 试用SQL查询语句表达下列对教学数据库中三个基本表S,SC,C的查询:(4)统计每门课程的学生选修人数(超过10人的课程才统计).要求输出课程号和选修人数, 查 询结果按人数降序排列,若人数相同,按课程号升序排列.(5)检索学号比WANG同学大,而年龄比他小的学生姓名. (6)检索
3、姓名以WANG打头的所有学生的姓名和年龄.(7)在SC中检索成绩为空值的学生学号和课程号.(8)求年龄大于女同学平均年龄的男学生姓名和年龄. 5, 试用SQL更新语句表达对教学数据库中三个基本表S,SC,C的各个更新操作: (1)往基本表S中插入一个学生元组(S9,WU,18).(2)在基本表S中检索每一门课程成绩都大于等于80分的学生学号,姓名和性别, 并把检索到的值送往另一个已存在的基本表STUDENT(S#,SANME,SEX).(3)在基本表SC中删除尚无成绩的选课元组.(4)把WANG同学的学习选课和成绩全部删去(5)把选修MATHS课不及格的成绩全改为空值.(6)把低于总平均成绩的
4、女同学成绩提高5%. (7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%, 若成绩大于75分时提高4%(用两个UPDATE语句实现). 6, 在宿主语言的程序中使用SQL语句有哪些规定 7,嵌入式SQL语句何时不必涉及到游标 何时必须涉及到游标 答案:一,1,B 2,C 3,D 4,C 5,B 6,D二,1,嵌入式 交互式 2,选择3,基本表导出的表 4,数据查询 数据更新 数据插入 数据删除5,视图或部分基本表 基本表 存储文件 6,GROUP BY三,1,名词解释 SQL模式:SQL模式是表和授权的静态定义.一个SQL模式定义为基本表的集合. 一个由模式名和模式拥有者的
5、用户名或账号来确定,并包含模式中每一个元素(基本表,视图,索引等)的定义. SQL数据库:SQL(Structured Query Language),即结构式查询语言,采用英语单词表示和结构式的语法规则. 一个SQL数据库是表的汇集,它用一个或多个SQL模式定义. 基本表:在SQL中,把传统的关系模型中的关系模式称为基本表(Base Table). 基本表是实际存储在数据库中的表,对应一个关系. 视图:在SQL中,把传统的关系模型中的子模式称为视图(View),视图是从若干基本表和(或)其他视图构造出来的表. 相关子查询:在嵌套查询中出现的符合以下特征的子查询:子查询中查询条件依赖于外层查询
6、中的某个值, 所以子查询的处理不只一次,要反复求值,以供外层查询使用. 联接查询:查询时先对表进行笛卡尔积操作,然后再做等值联接,选择,投影等操作. 联接查询的效率比嵌套查询低. 嵌入式SQL:嵌入在高级语言的程序中使用的SQL语言称为嵌入式SQL. 游标:游标是与某一查询结果相联系的符号名,用于把集合操作转换成单记录处理方式. 2,(1)检索LIU老师所授课程的课程号和课程名. SELECT C#,CNAME FROM C WHERE TEACHER=LIU(2)检索年龄大于23岁的男学生的学号和姓名. SELECT S#,SNAME FROM S WHERE (AGE23) AND (SE
7、X=M) (3)检索至少选修LIU老师所授课程中一门课程的女学生姓名. SELECT SNAME WHERE SEX=F AND S# IN (SELECT S# FROM SC WHERE C# IN (SELECT C# NOTICE:有多种写法,比如联接查询写法:FROM S,SC,C AND SC.S#=S.S# AND SC.C#=C.C# AND TEACHER=但上一种写法更好一些. (4)检索WANG同学不学的课程的课程号. SELECT C# WHERE C# NOT IN WHERE S# IN WHERE SNAME=WANG) (5)检索至少选修两门课程的学生学号. S
8、ELECT DISTINCT X.SNO FROM SC X,SC Y WHERE X.SNO=Y.SNO AND X.CNOY.CNO Notice:对表SC进行自连接,X,Y是SC的两个别名. (6)检索全部学生都选修的课程的课程号与课程名. WHERE NOT EXISTS (SELECT * WHERE S# NOT IN WHERE SC.C#=C.C#) 要从语义上分解:(1)选择课程的课程号与课程名,不存在不选这门课的同学. 其中,不选这门课的同学可以表示为:SELECT * WHERE SC.C#=C.C#) 或者WHERE S.S#=C.S# AND SC.C#=C.C# )
9、 (7)检索选修课程包含LIU老师所授课的学生学号. SELECT DISTINCT S# 3,(1)SELECT A,B,C FROM R UNION SELECT A,B,C (2)SELECT A,B,C INTERSECT (3)SELECT A,B,C (SELECT A,B,C WHERE R.A=S.A AND R.B=S.B AND R.C=S.C) (4)SELECT R.A,R.B,S.C FROM R,S WHERE R.B=S.B4, (1)统计有学生选修的课程门数. SELECT COUNT(DISTINCT C#) FROM SC (2)求选修C4课程的学生的平均年
10、龄. SELECT AVG(AGE) WHERE C#=C4或者, FROM S,SC WHERE S.S#=SC.S# AND C#=004(3)求LIU老师所授课程的每门课程的学生平均成绩. SELECT CNAME,AVG(GRADE) FROM SC ,C WHERE SC.C#=C.C# AND TEACHER=GROUP BY C# (4)统计每门课程的学生选修人数(超过10人的课程才统计).要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列. SELECT DISTINCT C#,COUNT(S#) HAVING COUNT(S#)10 ORDER
11、BY 2 DESC, C# ASC SELECT X.SNAME FROM S AS X, S AS Y WHERE Y.SNAME= AND X.S#Y.S# AND X.AGE(SELECT AVG(AGE) FROM S AS Y WHERE Y.SEX=女5, (1)往基本表S中插入一个学生元组(,18). INSERT INTO S(S#,SNAME,AGE) VALUES(59,18) (2)在基本表S中检索每一门课程成绩都大于等于80分的学生学号,姓名和性别, 并把检索到的值送往另一个已存在的基本表STUDENT(S#,SANME,SEX). INSERT INTO STUDEN
12、T(S#,SNAME,SEX) SELECT S#,SNAME,SEX FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE GRADE80 AND S.S#=SC.S#) (3)在基本表SC中删除尚无成绩的选课元组. DELETE FROM SC WHERE GRADE IS NULL (4)把WANG同学的学习选课和成绩全部删去. (5)把选修MATHS课不及格的成绩全改为空值. UPDATE SC SET GRADE=NULL WHERE GRADE60 AND C# IN WHERE CNAME=MATHS6)把低于总平均成绩的女同学成绩提高5
13、%. SET GRADE=GRADE*1.05 (SELECT AVG(GRADE) FROM SC) AND S# IN (SELECT S# FROM S WHERE SEX= AND GRADE75 6, 在宿主语言的程序中使用SLQ语句有以下规定:(1)在程序中要区分SQL语句与宿主语言语句 (2)允许嵌入的SQL语句引用宿主语言的程序变量(称为共享变量),但有两条规定:1)引用时,这些变量前必须加:作为前缀标识,以示与数据库中变量有区别. 2)这些变量由宿主语言的程序定义,并用SQL的DECLARE语句说明. (3)SQL的集合处理方式与宿主语言单记录处理方式之间要协调. 需要采用游标机制,把集合操作转换成单记录处理方式. 7, (1)INSERT,DELETE,UPDATE语句,查询结果肯定是单元组时的SELECT语句, 都可直接嵌入在主程序中使用,不必涉及到游标. (2)当SELECT语句查询结果是多个元组时,此时宿主语言程序无法使用, 一定要用游标机制把多个元组一次一个地传送给宿主语言处理.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1