数据库语言SQL作业解答

合集下载

数据库原理 第三章关系数据库标准语言——SQL期末习题与答案

数据库原理 第三章关系数据库标准语言——SQL期末习题与答案

1、数据库的事务日志文件()。

A.只能有一个B.可以有多个C.可以没有D.以上都不对正确答案:B2、CREATE命令属于()语句。

A.数据查询B.数据操纵C.数据定义D.数据控制正确答案:C3、使用ALTER命令修改数据时,以下说法错误的是()。

A.可以增加主要数据文件B.可以删除次要数据文件C.可以修改文件的增容方式D.可以增加事务日志文件正确答案:A4、使用存储存储过程Sp_helpfile可以()。

A.查看数据库的结构B.查看数据库的文件信息C.查看数据库的文件组信息D.以上都可以5、在DBMS中分离数据库之后,()。

A.数据库文件将会从磁盘上删除B.数据库文件将会脱离DBMSC.事务日志文件将会从磁盘上删除D.以上都不对正确答案:B6、假设学号字段“SNo”的数据类型为nvarchar(6),当“SNo”的值为“S001”时,“SNo”在内存中占()字节。

A.4B.6C.8D.12正确答案:C7、创建数据表时,如果给某个字段定义PRIMARY KEY约束时,该字段的数据()。

A.不允许有空值B.允许有多个空值C.允许有一个空值D.以上都不对正确答案:A8、为数据表增加新的字段时,()。

A.可以为新字段设置NOT NULL约束B.不能为新字段设置NOT NULL约束C.不能为新字段设置约束D.以上都不对9、在SQL的SELECT语句中,能实现选取操作的是()。

A.SELECTB.FROMC.WHERED.GROUP BY正确答案:C10、假定学生关系是S(SNo,SName,Sex,Age),课程关系是C(CNo,CName,Teacher),学生选课关系是SC(SNo,CNo,Grade)。

要查找选修“数据库”课程的“男”学生姓名,将涉及的关系是()。

A.SB.SC,CC.S,SCD.S,C,SC正确答案:D11、下列SQL语句中,()不是数据操纵语句。

A.INSERTB.CREATEC.DELETED.UPDATE正确答案:B12、SQL中,下列涉及空值的操作,不正确的是()。

SQL经典习题及答案(新手必看)

SQL经典习题及答案(新手必看)

Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;update SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100* SUM(CASE WHEN isnull(score,0)>=60THEN 1ELSE 0END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第3名到第6名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩> T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1; 28、查询男生、女生人数Select count(Ssex) as 男生人数from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) as agefrom studentwhere CONVERT(char(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score <60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e <60 order by C# ;38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过10人的课程才统计)。

SQL基础知识题库100道及答案(完整版)

SQL基础知识题库100道及答案(完整版)

SQL基础知识题库100道及答案(完整版)1. 在SQL 中,用于创建表的语句是()A. CREATE TABLEB. INSERT INTOC. UPDATED. DELETE答案:A2. 以下哪个关键字用于在SQL 中添加数据()A. ADDB. INSERTC. APPENDD. PUT答案:B3. 在SQL 中,用于从表中检索数据的语句是()A. SELECTB. GETC. FETCHD. REQUEST答案:A4. 以下哪个关键字用于在SQL 中更新数据()A. MODIFYB. CHANGEC. UPDATED. REPLACE答案:C5. 要从表中删除数据,应使用的SQL 语句是()A. DROPB. DELETEC. REMOVED. CLEAR答案:B6. SQL 中用于创建索引的关键字是()A. CREATE INDEXB. MAKE INDEXC. BUILD INDEXD. ESTABLISH INDEX答案:A7. 以下哪种数据类型用于存储整数()A. INTB. FLOATC. VARCHARD. DATE答案:A8. 用于存储字符串的常见数据类型是()A. CHARB. INTC. DECIMALD. DOUBLE答案:A9. 在SQL 中,用于对结果集进行排序的关键字是()A. SORTB. ORDER BYC. ARRANGED. ALIGN答案:B10. 以下哪个运算符用于等于比较()A. =B. ==C. <>D. >答案:A11. 用于不等于比较的运算符是()A.!=B. < >C. NOT EQUALSD. DIFFERENT答案:B12. 以下哪个运算符用于大于比较()A. >B. >=C. <D. <=答案:A13. 用于小于比较的运算符是()A. <B. <=C. >D. >=答案:A14. 以下哪个关键字用于在SQL 中进行分组操作()A. GROUP BYB. SORT BYC. CLASSIFY BYD. CATEGORIZE BY答案:A15. 聚合函数SUM 用于()A. 计算总和B. 计算平均值C. 计算数量D. 计算最小值答案:A16. 聚合函数AVG 用于()A. 计算总和B. 计算平均值C. 计算数量D. 计算最大值答案:B17. COUNT 函数用于()A. 计算总和B. 计算平均值C. 计算数量D. 计算最小值答案:C18. MAX 函数用于()A. 计算总和B. 计算平均值C. 计算最大值D. 计算最小值答案:C19. MIN 函数用于()A. 计算总和B. 计算平均值C. 计算最大值D. 计算最小值答案:D20. 在SQL 中,用于连接两个表的关键字是()A. JOINB. CONNECTC. LINKD. BIND答案:A21. 内连接使用的关键字是()A. INNER JOINB. LEFT JOINC. RIGHT JOIND. FULL JOIN答案:A22. 左连接使用的关键字是()A. INNER JOINB. LEFT JOINC. RIGHT JOIND. FULL JOIN答案:B23. 右连接使用的关键字是()A. INNER JOINB. LEFT JOINC. RIGHT JOIND. FULL JOIN答案:C24. 全连接使用的关键字是()A. INNER JOINB. LEFT JOINC. RIGHT JOIND. FULL JOIN答案:D25. 在SQL 中,用于限制结果集行数的关键字是()A. LIMITB. RESTRICTC. BOUNDD. CONSTRAINT答案:A26. 以下哪个子句用于在SQL 中进行条件筛选()A. WHEREB. HAVINGC. FROMD. GROUP BY答案:A27. HAVING 子句通常与()一起使用A. GROUP BYB. ORDER BYC. WHERED. FROM答案:A28. 在SQL 中,用于创建视图的语句是()A. CREATE VIEWB. MAKE VIEWC. BUILD VIEWD. ESTABLISH VIEW 答案:A29. 以下哪个关键字用于删除视图()A. DROP VIEWB. DELETE VIEWC. REMOVE VIEWD. CLEAR VIEW 答案:A30. 要在SQL 中添加注释,可以使用()A. //B. /* */C. #D. --答案:D31. 在SQL 中,以下哪种数据类型用于存储日期和时间()A. DATEB. TIMEC. DATETIMED. TIMESTAMP答案:C32. 用于提取日期部分的函数是()A. DATEPART()B. DAY()C. MONTH()D. YEAR()答案:A33. 以下哪个函数用于计算字符串的长度()A. LENGTH()B. SIZE()C. COUNT()D. LEN()答案:A34. 在SQL 中,用于将字符串转换为大写的函数是()A. UPPER()B. TO_UPPER()C. CAPITALIZE()D. BIGCASE()答案:A35. 用于将字符串转换为小写的函数是()A. LOWER()B. TO_LOWER()C. SMALLCASE()D. DECAPITALIZE()答案:A36. 以下哪个函数用于去除字符串两端的空格()A. TRIM()B. CLEAN()C. REMOVE_SPACES()D. STRIP()答案:A37. 在SQL 中,用于执行事务的语句是()A. BEGIN TRANSACTIONB. START TRANSACTIONC. OPEN TRANSACTIOND. INITIATE TRANSACTION答案:A38. 提交事务使用的语句是()A. COMMITB. SUBMITC. CONFIRMD. VALIDATE答案:A39. 回滚事务使用的语句是()A. ROLLBACKB. REVERTC. CANCELD. ABORT答案:A40. 以下哪个关键字用于在SQL 中创建存储过程()A. CREATE PROCEDUREB. MAKE PROCEDUREC. BUILD PROCEDURED. ESTABLISH PROCEDURE答案:A41. 调用存储过程使用的语句是()A. EXECUTEB. CALLC. INVOKED. RUN答案:B42. 在SQL 中,用于删除存储过程的语句是()A. DROP PROCEDUREB. DELETE PROCEDUREC. REMOVE PROCEDURED. CLEAR PROCEDURE答案:A43. 以下哪个关键字用于在SQL 中创建触发器()A. CREATE TRIGGERB. MAKE TRIGGERC. BUILD TRIGGERD. ESTABLISH TRIGGER44. 删除触发器使用的语句是()A. DROP TRIGGERB. DELETE TRIGGERC. REMOVE TRIGGERD. CLEAR TRIGGER答案:A45. 在SQL 中,用于授予权限的语句是()A. GRANTB. ALLOWC. PERMITD. AUTHORIZE答案:A46. 收回权限使用的语句是()A. REVOKEB. DENYC. REFUSED. FORBID答案:A47. 以下哪个关键字用于在SQL 中创建索引的唯一性约束()A. UNIQUEB. PRIMARY KEYC. FOREIGN KEYD. CHECK答案:A48. 用于定义主键约束的关键字是()A. PRIMARY KEYB. UNIQUE KEYC. FOREIGN KEYD. INDEX KEY答案:A49. 外键约束使用的关键字是()A. FOREIGN KEYB. OUTER KEYC. RELATED KEYD. REFERENCED KEY答案:A50. 以下哪个约束用于检查数据的有效性()A. CHECKB. VALIDATEC. INSPECTD. VERIFY答案:A51. 在SQL 中,以下哪个语句用于创建数据库()A. CREATE DATABASEB. MAKE DATABASEC. BUILD DATABASED. ESTABLISH DATABASE 答案:A52. 要删除数据库,应使用的语句是()A. DROP DATABASEB. DELETE DATABASEC. REMOVE DATABASED. CLEAR DATABASE 答案:A53. 以下哪个关键字用于在SQL 中切换数据库()A. USEB. SELECT DBC. CHANGE DBD. SWITCH DB答案:A54. 在SQL 中,以下哪种操作可以对多个表同时进行()A. 联合查询B. 子查询C. 交叉连接D. 内连接55. 子查询可以在以下哪个子句中使用()A. SELECTB. FROMC. WHERED. 以上都可以答案:D56. 以下哪个语句用于在SQL 中创建用户()A. CREATE USERB. MAKE USERC. BUILD USERD. ESTABLISH USER答案:A57. 删除用户使用的语句是()A. DROP USERB. DELETE USERC. REMOVE USERD. CLEAR USER答案:A58. 在SQL 中,用于修改表结构的语句是()A. ALTER TABLEB. MODIFY TABLEC. CHANGE TABLED. UPDATE TABLE答案:A59. 以下哪个操作可以添加列到表中()A. ADD COLUMNB. INSERT COLUMNC. APPEND COLUMND. PUT COLUMN答案:A60. 要删除表中的列,应使用()A. DROP COLUMNB. DELETE COLUMNC. REMOVE COLUMND. CLEAR COLUMN答案:A61. 在SQL 中,以下哪个关键字用于对结果集进行分页()A. PAGEB. PAGINGC. OFFSETD. LIMIT答案:D62. 以下哪个函数用于返回当前日期()A. CURDATE()B. NOW()C. CURRENT_DATE()D. TODAY()答案:C63. 用于返回当前时间的函数是()A. CURTIME()B. NOW()C. CURRENT_TIME()D. THIS_TIME()答案:C64. 在SQL 中,以下哪个关键字用于为表中的列设置默认值()A. DEFAULTB. INITIALC. BASED. START答案:A65. 以下哪个语句用于在SQL 中重命名表()A. RENAME TABLEB. MODIFY TABLE NAMEC. CHANGE TABLE NAMED. UPDATE TABLE答案:A66. 要获取表的结构信息,可以使用以下哪个语句()A. DESCRIBE TABLEB. SHOW TABLE STRUCTUREC. EXPLAIN TABLED. GET TABLE DETAILS答案:A67. 在SQL 中,以下哪个关键字用于在查询结果中去除重复行()A. DISTINCTB. UNIQUEC. SINGLED. ONLY答案:A68. 以下哪个函数用于对字符串进行拼接()A. CONCAT()B. JOIN()C. MERGE()D. COMBINE()答案:A69. 在SQL 中,用于创建临时表的关键字是()A. TEMPORARY TABLEB. TEMP TABLEC. TRANSIENT TABLED. SHORT_LIVED TABLE答案:A70. 以下哪个语句用于在SQL 中为列添加注释()A. COMMENT ON COLUMNB. NOTE ON COLUMNC. REMARK ON COLUMND. EXPLAIN COLUMN答案:A71. 在SQL 中,以下哪个关键字用于在子查询中引用外部查询的结果()A. CORRELATEDB. RELATEDC. CONNECTEDD. LINKED答案:A72. 以下哪个操作符用于在SQL 中进行范围查询()A. BETWEENB. INC. LIKED. EXISTS答案:A73. 用于模糊匹配的操作符是()A. LIKEB. SIMILARC. MATCHD. CLOSE_TO答案:A74. 在SQL 中,以下哪个关键字用于对查询结果进行排序时按照多个列进行()A. ORDER BY MULTIPLEB. SORT BY SEVERALC. ORDER BY MORE THAN ONED. ORDER BY MULTIPLE COLUMNS答案:D75. 以下哪个函数用于返回字符串的子串()A. SUBSTRING()B. PART()C. SEGMENT()D. SLICE()答案:A76. 在SQL 中,以下哪个关键字用于在存储过程中定义输入参数()A. INB. OUTC. INOUTD. PARAMETER答案:A77. 用于定义输出参数的关键字是()A. INB. OUTC. INOUTD. PARAMETER答案:B78. 以下哪个关键字用于在存储过程中定义既可以输入又可以输出的参数()A. INB. OUTC. INOUTD. PARAMETER答案:C79. 在SQL 中,以下哪个关键字用于在创建表时指定自增列()A. AUTO_INCREMENTB. SELF_INCREMENTC. AUTO_GROWD. SELF_GROW答案:A80. 以下哪个语句用于在SQL 中创建序列()A. CREATE SEQUENCEB. MAKE SEQUENCEC. BUILD SEQUENCED. ESTABLISH SEQUENCE 答案:A81. 要获取序列的下一个值,可以使用以下哪个函数()A. NEXTVAL()B. GET_NEXT()C. NEXT_VALUE()D. FOLLOWING_VALUE()答案:A82. 在SQL 中,以下哪个关键字用于锁定表()A. LOCKB. HOLDC. FREEZED. BLOCK答案:A83. 以下哪种锁类型用于防止其他事务读取或修改数据()A. 共享锁B. 排他锁C. 意向共享锁D. 意向排他锁答案:B84. 共享锁允许其他事务()A. 读取数据B. 修改数据C. 删除数据D. 以上都不行答案:A85. 在SQL 中,以下哪个关键字用于解锁表()A. UNLOCKB. RELEASEC. FREED. UNBIND答案:A86. 以下哪个函数用于计算两个日期之间的天数差()A. DATEDIFF()B. DATE_DIFFERENCE()C. DAY_DIFFERENCE()D. TIME_DIFFERENCE()答案:A87. 在SQL 中,以下哪个关键字用于在查询中使用别名()A. ASB. LIKEC. SAME ASD. EQUALS答案:A88. 以下哪个语句用于在SQL 中创建索引的唯一约束()A. UNIQUE INDEXB. PRIMARY INDEXC. FOREIGN INDEXD. CHECK INDEX答案:A89. 要在SQL 中创建全文索引,应使用()A. FULLTEXT INDEXB. COMPLETE TEXT INDEXC. ALL_TEXT INDEXD. WHOLE_TEXT INDEX 答案:A90. 在SQL 中,以下哪个关键字用于在存储过程中声明变量()A. DECLAREB. DEFINEC. STATED. ANNOUNCE答案:A91. 以下哪个语句用于在SQL 中为变量赋值()A. SETB. ASSIGNC. GIVED. PUT答案:A92. 在SQL 中,以下哪个关键字用于在存储过程中进行条件判断()A. IFB. WHENC. CASED. CHECK答案:A93. 以下哪种语句用于在SQL 中进行循环操作()A. FORB. WHILEC. LOOPD. 以上都是答案:D94. 在SQL 中,用于退出循环的语句是()A. BREAKB. EXITC. STOPD. END答案:A95. 以下哪个函数用于将数字转换为字符串()A. CAST()B. CONVERT()C. TO_STRING()D. NUM_TO_STR()答案:B96. 在SQL 中,用于获取当前会话的用户名称的函数是()A. CURRENT_USERB. SYSTEM_USERC. LOGGED_IN_USERD. SESSION_USER答案:A97. 以下哪个关键字用于在SQL 中创建存储函数()A. CREATE FUNCTIONB. MAKE FUNCTIONC. BUILD FUNCTIOND. ESTABLISH FUNCTION 答案:A98. 要删除存储函数,应使用的语句是()A. DROP FUNCTIONB. DELETE FUNCTIONC. REMOVE FUNCTIOND. CLEAR FUNCTION答案:A99. 在SQL 中,用于获取数据库版本信息的函数是()A. VERSION()B. DB_VERSION()C. DATABASE_VERSION()D. SYSTEM_VERSION()答案:A100. 以下哪个操作可以在SQL 中对表进行重命名()A. RENAME TABLEB. MODIFY TABLE NAMEC. CHANGE TABLE NAMED. UPDATE TABLE NAME答案:A。

sql考试题及答案

sql考试题及答案

sql考试题及答案一、选择题1. SQL是什么意思?a. Structured Query Languageb. Sequential Query Languagec. Structured Question Languaged. Sequential Question Language答案:a. Structured Query Language2. 下列哪个关键词用于在SQL中创建新表?a. UPDATEb. INSERTc. CREATEd. SELECT答案:c. CREATE3. 在SQL中,用于查找符合一定条件的记录的关键词是?a. SELECTb. UPDATEc. INSERTd. DELETE答案:a. SELECT4. 在SQL中,如何在表中添加新的数据?a. INSERT INTOb. ADD INTOc. UPDATEd. MODIFY答案:a. INSERT INTO5. 在SQL中,如何删除表中的数据?a. DELETE ROWb. REMOVEc. DELETE FROMd. ERASE FROM答案:c. DELETE FROM二、填空题1. SQL中用于选择所有列的通配符是______。

答案:*2. SQL中用于指定唯一键的关键词是______。

答案:PRIMARY KEY3. SQL中用于按照某一列对结果进行排序的关键词是______。

答案:ORDER BY4. SQL中用于更新数据的关键词是______。

答案:UPDATE5. SQL中用于计算某一列的总和的函数是______。

答案:SUM三、简答题1. 请解释SQL中的JOIN操作。

答案:JOIN操作用于连接两个或多个表,基于表之间的关联关系获取相关数据。

常用的JOIN类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN。

2. 什么是SQL注入?如何防止SQL注入?答案:SQL注入是一种恶意的攻击方式,通过在用户输入的数据中插入恶意的SQL代码,以获取、修改或删除数据库中的数据。

数据库sql课后练习题及答案解析

数据库sql课后练习题及答案解析

先创建下面三个表:(book表)(borrow表)(reader表)1) 找出姓李的读者姓名(NAME)和所在单位(COMPANY)。

2) 列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。

3) 查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。

4) 查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OU TPUT)和单价(PRICE)升序排序。

5) 查找书名以”计算机”开头的所有图书和作者(WRITER)。

6) 检索同时借阅了总编号(BOOK_ID)为和两本书的借书证号(READER_ID)。

##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。

8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。

9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。

##10)* 找出借阅了<FoxPro大全>一书的借书证号。

11) 找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。

12) 查询2006年7月以后没有借书的读者借书证号、姓名及单位。

#13) 求”科学出版社”图书的最高单价、最低单价、平均单价。

##14)* 求”信息系”当前借阅图书的读者人次数。

#15) 求出各个出版社图书的最高价格、最低价格和总册数。

#16) 分别找出各单位当前借阅图书的读者人数及所在单位。

17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。

18) 分别找出借书人次数多于1人次的单位及人次数。

19) 找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。

20) 查询经济系是否还清所有图书。

如果已经还清,显示该系所有读者的姓名、所在单位和职称。

附录:建表语句创建图书管理库的图书、读者和借阅三个基本表的表结构:创建BOOK:(图书表)CREATE TABLE BOOK (BOOK_ID int,SORT VARCHAR(10),BOOK_NAME VARCHAR(50),WRITER VARCHAR(10),OUTPUT VARCHAR(50),PRICE int);创建READER:(读者表)CREATE TABLE READER (READER_ID int,COMPANY VARCHAR(10),NAME VARCHAR(10),SEX VARCHAR(2),GRADE VARCHAR(10),ADDR VARCHAR(50));创建BORROW:(借阅表)CREATE TABLE BORROW (READER_ID int,BOOK_ID int,BORROW_DATE datetime)插入数据:BOOK表:insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP3/12','数据库导论','王强','科学出版社',17.90); insert into BOOK values(,'TP5/10','计算机基础','李伟','高等教育出版社',18.00);insert into BOOK values(,'TP3/12','FoxBASE','张三','电子工业出版社',23.60);insert into BOOK values(,'TS7/21','高等数学','刘明','高等教育出版社',20.00);insert into BOOK values(,'TR9/12','线性代数','孙业','北京大学出版社',20.80);insert into BOOK values(,'TR7/90','大学英语','胡玲','清华大学出版社',12.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/13','数据库基础','马凌云','人民邮电出版社',22.50);insert into BOOK values(,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(,'TP4/14','FoxPro大全','周虹','科学出版社',32.70);insert into BOOK values(,'TP4/15','计算机网络','黄力钧','高等教育出版社',21.80);insert into BOOK values(,'TP4/15','计算机网络','黄力钧','高等教育出版社',2 1.80);READER表:insert into reader values(111,'信息系','王维利','女','教授','1号楼424'); insert into reader values(112,'财会系','李立','男','副教授','2号楼316 ');insert into reader values(113,'经济系','张三','男','讲师','3号楼105'); insert into reader values(114,'信息系','周华发','男','讲师','1号楼316'); insert into reader values(115,'信息系','赵正义','男','工程师','1号楼224 ');insert into reader values(116,'信息系','李明','男','副教授','1号楼318 ');insert into reader values(117,'计算机系','李小峰','男','助教','1号楼214 ');insert into reader values(118,'计算机系','许鹏飞','男','助工','1号楼216 ');insert into reader values(119,'计算机系','刘大龙','男','教授','1号楼318 ');insert into reader values(120,'国际贸易','李雪','男','副教授','4号楼506');insert into reader values(121,'国际贸易','李爽','女','讲师','4号楼510 ');insert into reader values(122,'国际贸易','王纯','女','讲师','4号楼512 ');insert into reader values(123,'财会系','沈小霞','女','助教','2号楼202'); insert into reader values(124,'财会系','朱海','男','讲师','2号楼210'); insert into reader values(125,'财会系','马英明','男','副教授','2号楼212 ');BORROW表:insert into borrow values(112,,'3-19-2006');insert into borrow values(125,,'2-12-2006');insert into borrow values(111,,'8-21-2006');insert into borrow values(112,,'3-14-2006');insert into borrow values(114,,'10-21-2006');insert into borrow values(120,,'11-2-2006');insert into borrow values(120,,'10-18-2006');insert into borrow values(119,,'11-12-2006');insert into borrow values(112,,'10-23-2006');insert into borrow values(115,,'8-21-2006');insert into borrow values(118,,'9-10-2006');现有关系数据库如下:数据库名:图书借阅管理系统读者表(读者编号 char(6),姓名,性别,年龄,单位,身份证号,职称)图书表(图书编号char(6),图书名称,出版社,作者)借阅表(读者编号,图书编号,借阅时间)用SQL语言实现下列功能的sql语句代码。

sql数据库习题与答案

sql数据库习题与答案

sql数据库习题与答案SQL数据库习题与答案SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言。

在数据库管理系统中,SQL可以用于执行各种操作,如插入、更新、删除和查询数据。

对于学习SQL的人来说,练习SQL数据库习题是非常重要的。

下面将为大家提供一些常见的SQL数据库习题以及相应的答案。

1. 查询所有学生的信息答案:SELECT * FROM students;2. 查询所有学生的姓名和年龄答案:SELECT name, age FROM students;3. 查询所有学生的姓名,并按照年龄从小到大进行排序答案:SELECT name FROM students ORDER BY age;4. 查询学生表中年龄大于18岁的学生信息答案:SELECT * FROM students WHERE age > 18;5. 查询学生表中姓“张”的学生信息答案:SELECT * FROM students WHERE name LIKE '张%';6. 查询学生表中的姓名和对应的课程名称答案:SELECT , FROM students INNER JOIN course ON students.course_id = course.id;7. 查询学生表中每个班级的学生人数答案:SELECT class, COUNT(*) FROM students GROUP BY class;通过以上SQL数据库习题与答案的练习,可以帮助大家更好地理解和掌握SQL语言的基本操作和常用查询。

同时,也可以帮助大家提升解决实际问题的能力,为今后的数据库管理工作打下坚实的基础。

希望大家能够认真对待SQL数据库习题,不断提升自己的技能水平。

数据库中SQL查询语句习题含的答案解析

数据库中SQL查询语句习题含的答案解析

查询问题:设教学数据库Education有三个关系:学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME)(1)检索计算机系的全体学生的学号,姓名和性别;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS”的学生学号与姓名;(4)检索选修课程号为C2或C4的学生学号;(5)检索至少选修课程号为C2和C4的学生学号;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;(8)查询所学课程包含学生S3所学课程的学生学号。

(1)检索计算机系的全体学生的学号,姓名和性别;SELECT Sno,Sname,SexFROM SWHERE Sdept =’CS’;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS”的学生学号与姓名本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C表中,但S和C表没有直接联系,必须通过SC表建立它们二者的联系。

C → SC → S基本思路:(1)首先在C表中找出“DS”课程的课程号Cno;(2)然后在SC表中找出Cno等于第一步给出的Cno 集合中的某个元素Cno;(3)最后在S关系中选出Sno等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname送入结果表列。

SELECT Sno,SnameFROM SWHERE Sno IN(SELECT SnoFROM SCWHERE Cno IN(SELECT CnoFROM CWHERE Cname=‘DS’));(4)检索选修课程号为C2或C4的学生学号;SELECT SnoFROM SCWHERE Cno=‘C2’ OR Cno=‘C4’;(5)检索至少选修课程号为C2和C4的学生学号;SELECT SnoFROM SC X,SC YWHERE = AND =‘C2’ AND =‘C4’;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;在表S中找学生,要求这个学生学了全部课程。

第四章SQL作业参考答案及常见错误说明

第四章SQL作业参考答案及常见错误说明
c.
UPDATE works SET salary = 1.1*salary WHERE pany-name = 'First Bank Corporation'
AND works.employee-name IN( SELECT manager-name FROM manages
这道题做错率非常高,下面是各种做法:
做法 1:
select employee-name from works where salary > (
SELECT employee-name FROM works WHERE company-name <> 'First Bank Corporation'
SELECT employee-name FROM works WHERE NOT (company-name = 'First Bank Corporation')
AND manages.manager-name = managers.employee-name
f.
SELECT employee-name FROM employee WHERE employee-name NOT IN (
SELECT employee-name FROM works WHERE company-name = 'First Bank Corporation' )
b)
由于创建的视图中含有一个导出列 avg(salary),它无法与 works 或 manages 中的具体一列相 对应,所以这样的视图不能更新。设想,如果更新此视图,修改了 avg(salary)的值,此时表 works 中的 salary 该如何修改? 一般说来简单的行列视图(从基本表中通过投影和选择得到的视图)是可以更新的,含有分 组、聚集函数的视图是不可更新的。 另外简单行列视图还有 with check option 约束,可参考相关资料理解其含义。

(完整版)sql练习题+答案

(完整版)sql练习题+答案

(一) 新建以下几个表student(学生表):其中约束如下:(1)学号不能存在相同的(2)名字为非空(3)性别的值只能是’男’或’女’(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5)出生日期为日期格式(6)年龄为数值型,且在0~100之间cs(成绩表):其中约束如下:(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0〜100之间,可以不输入值create table cs (sno smallint not null referencesstudent ( sno ), ----定义成外键cno smallint not null referencescourse ( cno ), ----定义成外键cj smallint constraint e check (cj between0 and 100 ),---- 检查约束一—j(成绩)只能在~100之间,可以不输入值constraint f primary key ( sno , cno )---- 定义学生学号和课程号为sc表的主键)course(课程表)其约束如下:(1)课程号(cno)不能有重复的(2)课程名(cname非空(三)针对学生课程数据库查询(1)查询全体学生的学号与姓名。

Select sno , sname from student(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。

(3)查询全体学生的详细记录。

select * from student(4)查全体学生的姓名及其出生年份。

select sname , birth from student(5)查询学校中有哪些系。

select distinct dept from student(6)查询选修了课程的学生学号。

select sno from cs where eno is not null(7)查询所有年龄在20岁以下的学生姓名及其年龄。

第5章-SQL语言 作业和思考

第5章-SQL语言 作业和思考

一、单项选择题:1.SQL语言是( )的语言,容易学习。

A.过程化B. 非过程化C.格式化D. 导航式2.关系操作方式的特点是( )操作。

A. 导航方式B. 一次一集合方式C.一次一记录方式 D. 记录或集合方式3.下列关于基本表与存储文件之间关系的叙述中,正确的是( )。

A. 一个基本表只能存储于一个文件中,一个存储文件中也只能存储一个基本表B. 一个基本表只能存储于一个文件中,但一个存储文件中可存储多个基本表C. 一个基本表可以存储于一个或多个文件中,但一个存储文件中只能存储一个基本表D. 一个基本表可以存储于一个或多个文件中,一个存储文件中也可以存储一个或多个基本表4.视图是从一个或多个基本表(视图)导出的表。

它相当于三级模式结构中的( )A. 外模式B. 模式C.内模式 D. 存储模式5.SQL的GRANT与REVOKE命令属于数据库保护中的( )控制。

A.完整性 B. 安全性 C. 并发控制 D. 恢复机制6.1986年,( )被定为关系数据库标准语言。

A. 关系代数B. 关系演算C.SQL语言D.QBE7.在SQL语言中授权的操作是通过( )语句实现的。

A. CREATE B.REVOKE C.GRANT D.INSERT8.SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE,DELETE等.其中最重要的,也是使用最频繁的语句是( )。

A. DELETEB. INSERTC. UPDATED. SELECT9.SQL语言中,实现数据检索的语句是( )。

A.SELECT B.INSERT C. UPDATE D.FIND10.下列SQL语句中,修改表结构的是( )。

A. ALTERB. CREATEC.UPDATED. DELETE11.实体完整性约束和SQL语言中的()相对应。

A.primary key B.foreign key C.check D.unique12.参照完整性约束和SQL语言中的()相对应。

SQL习题及答案讲解

SQL习题及答案讲解

实验设有以下关系模式:S(SNO,SNAME,CITY)其中,S表示别SUPPLIER(供应者),SNO为供应者代号,SNAME为供应者的名字,CITY为供应商所在的城市.主键为SNO。

P(PNO,PNAME,COLOR,WEIGHT)其中,P表示PART(零件),PNO为零件代号,PNAME为零件名,COLOR为零件颜色,WEIGHT 为零件重量,主键为PNO。

J(JNO,JNAME,CITY)其中,J表示JOB(工程),JNO为工程编号,JNAME 为工程名,CITY为工程所在城市,主键为JNO。

SPJ(SNO,PNO,JNO,QTY)其中,SPJ表示供应关系,SNO是为指定工程提供零件的供应者代号,PNO是所提供的零件代号,JNO 为工程编号,QTY表示提供的零件数量,主键为(SNO,PNO,JNO),外部键分别为SNO,PNO,JNO。

试做以下各题:1、用SQL的DDL语言创建S,P,J,SPJ四个基本表。

2、按照下面表格提供的数据,用SQL的插入语句插入所有记录。

3、给出下列各题的查询、存储等操作的语句序列,并且上机验证结果。

1)取出所有工程的全部细节;2)取出所在城市为上海的所有工程的全部细节;3)取出重量最轻的那些零件的号码;4)取出为工程J1提供零件的供应者的代号;5)取出为工程J1提供零件P1的供应者的代号;6)取出由供应者S1提供零件的工程的名称;7)取出由供应者S1提供的零件的颜色;8)取出为工程J1和J2提供零件的供应者的代号;9)取出为工程J1提供红色零件的供应者的代号;10)取出为所在城市为上海的工程提供零件的供应者的代号;11)取出为所在城市为上海或北京的工程提供红色零件的供应者的代号;12)取出供应者与工程所在城市相同的供应者提供的零件的代号;13)取出上海的供应者提供给上海的任一工程的零件的代号;14)取出至少有一个和工程不在同一城市的供应者提供零件的工程的代号;15)取出上海供应者不提供任何零件的工程的代号;16)取出这样一些供应者的代号,他们能够提供至少一种由红色零件的供应者提供的零件;17)取出由供应者S1提供零件的工程的代号;18)取出所有这样的三元组<CITY,PNO,CITY>,使得第一个城市的供应者为第二个城市的工程提供零件;19)取出为所有工程提供同样零件的供应者的代号;20)取出提供给上海的所有工程的零件代号;21)取出至少需要供应者S1提供的所有零件的工程的代号;22)把所有红色零件改成橙色;23)删除所有红色零件和对应的SPJ记录;24)取出供应者Sl提供的代号为P1的零件总数;25)取出每个工程的供应商数;26)取出所需的零件总数大于1000的工程代号;1.CREATE TABLE S(SNO CHAR(5) PRIMARY KEY, SNAME CHAR(5),CITY CHAR(10));CREATE TABLE P(PNO CHAR(5) PRIMARY KEY,PNAME CHAR(5),COLOR CHAR(5),WEIGHT INT);CREATE TABLE J(JNO CHAR(5) PRIMARY KEY,JNAME CHAR(5),CITY CHAR(10));CREATE TABLE SPJ(SNO CHAR(5),PNO CHAR(5),JNO CHAR(5),QTY INT,CONSTRAINT PK_SPJ PRIMARY KEY(SNO,PNO,JNO),CONSTRAINT FK_SNO FOREIGN KEY(SNO)REFERENCES S(SNO), CONSTRAINT FK_PNO FOREIGN KEY(PNO)REFERENCES P(PNO), CONSTRAINT FK_JNO FOREIGN KEY(JNO)REFERENCES J(JNO));2.SELECT * FROM J;3.SELECT * FROM J WHERE CITY='上海';4.SELECT PNO FROM P WHERE WEIGHT=(SELECT MIN(WEIGHT) FROM P);5.SELECT DISTINCT SNO FROM SPJ WHERE JNO='J1';6.SELECT SNO FROM SPJ WHERE JNO='J1' AND PNO='P1';7.SELECT DISTINCT JNAME FROM J,SPJ WHERE J.JNO=SPJ.JNO AND SPJ.SNO='S1';8.SELECT DISTINCT COLOR FROM P,SPJ WHERE P.PNO=SPJ.PNO AND SPJ.SNO='S1;9.SELECT X.SNO FROM SPJ X WHERE X.JNO='J1'AND EXISTS(SELECT * FROM SPJ Y WHERE Y.SNO=X.SNO AND Y.JNO='J2');10.SELECT DISTINCT SNO FROM SPJ,P WHERE SPJ.JNO='J1' AND SPJ.PNO=P.PNO AND P.COLOR='红';11.SELECT DISTINCT SNO FROM SPJ,J WHERE SPJ.JNO=J.JNO AND J.CITY='上海';12.SELECT DISTINCT SPJ.SNO FROM SPJ,J,P WHERE SPJ.JNO=J.JNO AND SPJ.PNO=P.PNO AND P.COLOR ='红' AND (J.CITY='上海' OR J.CITY=' 北京') ;13.SELECT DISTINCT P.PNO FROM S,J,P,SPJ WHERE P.PNO=SPJ.PNO AND SPJ.SNO=S.SNO AND SPJ.JNO=J.JNO AND S.CITY=J.CITY;14.SELECT DISTINCT P.PNO FROM S,J,P,SPJ WHERE P.PNO=SPJ.PNO AND SPJ.SNO=S.SNO AND SPJ.JNO=J.JNO AND S.CITY='上海' AND J.CITY='上海';15.SELECT DISTINCT JNO FROM J WHERE EXISTS (SELECT * FROM S,SPJ WHERE SPJ.SNO=S.SNO AND J.JNO=SPJ.JNO AND J.CITY<>S.CITY);16.SELECT DISTINCT JNO FROM J WHERE NOT EXISTS(SELECT * FROM S,SPJ WHERE J.JNO=SPJ.JNO AND SPJ.SNO=S.SNO AND S.CITY='上海');17.SELECT DISTINCT SNO FROM SPJ WHERE PNO IN(SELECT DISTINCT PNO FROM SPJ WHERE SNO IN(SELECT DISTINCT SNO FROM SPJ,PWHERE SPJ.PNO=P.PNO AND P.COLOR='红'));18.SELECT DISTINCT JNO FROM SPJ WHERE SNO='S1';19.SELECT DISTINCT S.CITY,SPJ.PNO,J.CITY FROM S,J,SPJ WHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO AND S.CITY<>J.CITY;20.SELECT DISTINCT SNO FROM S WHERE NOT EXISTS(SELECT * FROM J WHERE NOT EXISTS (SELECT * FROM P,SPJ WHERE S.SNO=SPJ.SNO AND SPJ.PNO=P.PNO AND J.JNO= SPJ.JNO));21.SELECT DISTINCT PNO FROM P WHERE NOT EXISTS(SELECT * FROM J WHERE J.CITY='上海' AND NOT EXISTS(SELECT * FROM SPJ WHERE SPJ.PNO=P.PNOAND SPJ.JNO=J.JNO));22.SELECT DISTINCT JNO FROM SPJ SX WHERE NOT EXISTS(SELECT * FROM SPJ SY WHERE SY.SNO='S1' AND NOT EXISTS(SELECT * FROM SPJ SZ WHERE SY.PNO=SZ.PNO AND SX.JNO=SZ.JNO));23.UPDATE P SET COLORE='橙' WHERE COLORE='红';24.DELETE FROM SPJ WHERE SPJ.PNO IN (SELECT PNO FROM P WHERE COLOR='红'); DELETE FROM P WHERE COLOR='红';25.SELECT SUM(QTY) FROM SPJ WHERE SNO='S1' AND PNO='P1';26.SELECT JNO,COUNT(DISTINCT SNO) FROM SPJ GROUP BY JNO;27.SELECT JNO FROM SPJ GROUP BY JNO HAVING SUM(QTY)>1000;1.//创建s表CREATE TABLE S(SNO CHAR(8) NOT NULL UNIQUE, SNAME VARCHAR(20) NOT NULL UNIQUE, CITY VARCHAR(8),CONSTRAINT CS PRIMARY KEY(SNO));//创建p表CREATE TABLE P(PNO CHAR(8) NOT NULL UNIQUE, PNAME VARCHAR(20) NOT NULL UNIQUE, COLOR CHAR(1),WEIGHT INT,CONSTRAINT CP PRIMARY KEY(PNO));//创建j表CREATE TABLE J(JNO CHAR(8) NOT NULL UNIQUE, JNAME VARCHAR(20) NOT NULL UNIQUE, CITY VARCHAR(8),CONSTRAINT CJ PRIMARY KEY(JNO));//创建spj表CREATE TABLE SPJ(SNO CHAR(8) NOT NULL NUIQUE,PNO CHAR(8) NOT NULL UNIQUE,JNO CHAR(8) NOT NULL UNIQUE, QTY INT,CONSTRAINT CSPJ PRIMARYKEY(SON,PNO,JNO), CONSTRAINT CSPJ FOREING KEY(SNO)REFERENCES S(SNO), CONSTRAINT CSPJ FOREING KEY(PNO)REFERENCES P(PNO), CONSTRAINT CSPJ FOREING KEY(JNO)REFERENCES J(JNO));2.//向s表插入数据INSERT INTO S(SNO,SNAME,CITY) VALUES(‘S1’,’N1’,’上海’); INSERT INTO S(SNO,SNAME,CITY) VALUES(‘S2’,’N2’,’北京’); INSERT INTO S(SNO,SNAME,CITY) VALUES(‘S3’,’N3’,’北京’);VALUES(‘S4’,’N4’,’上海’);INSERT INTO S(SNO,SNAME,CITY) VALUES(‘S5’,’N5’,’南京’);//向p表插入数据INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P1’,’PN1’,’红’,’12’); INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P2’,’PN2’,’绿’,’18’); INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P3’,’PN3’,’蓝’,’20’); INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P4’,’PN4’,’红’,’13’); INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P5’,’PN5’,’蓝’,’11’); INSERT INTO P(PNO,PNAME,COLOR,WEIGHT) VALUES(‘P6’,’PN6’,’红’,’15’);//向j表插入数据INSERT INTO J(JNO,JNAME,CITY)VALUES(‘J1’,’JN1’,’上海’);INSERT INTO J(JNO,JNAME,CITY)VALUES(‘J2’,’JN2’,’广州’);VALUES(‘J3’,’JN3’,’南京’); INSERT INTO J(JNO,JNAME,CITY) VALUES(‘J4’,’JN4’,’南京’); INSERT INTO J(JNO,JNAME,CITY) VALUES(‘J5’,’JN5’,’上海’); INSERT INTO J(JNO,JNAME,CITY) VALUES(‘J6’,’JN6’,’武汉’); INSERT INTO J(JNO,JNAME,CITY) VALUES(‘J7’,’JN7’,’上海’);//向表spj中插入数据INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S1’,’P1’,’J1’,’200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S1’,’P1’,’J4’,’700’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J1’,’400’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J2’,’200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J3’,’200’);VALUES(‘S2’,’P3’,’J4’,’500’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J5’,’600’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J6’,’400’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P3’,’J7’,’800’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S2’,’P5’,’J2’,’100’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALU ES(‘S3’,’P3’,’J1’,’200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S3’,’P4’,’J2’,’500’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S4’,’P6’,’J7’,’300’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P2’,’J2’,’200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P2’,’J4’,’100’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P5’,’J5’,’500’);VALUES(‘S5’,’P5’,’J7’,’100’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P6’,’J2’,’200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P1’,’J4’,’1000’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P3’,’J4’,’1200’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P4’,’J4’,’800’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P5’,’J4’,’400’); INSERT INTO SPJ(SNO,PNO,JNO,QTY) VALUES(‘S5’,’P6’,’J4’,’500’);3.1SELECT * FROM J;3.2SELECT * FROM J WHERE CITY LIKE ‘上海’; 3.3SELECT PNO FROM P WHERE WEIGHT=(SELECT MAX(WEIGHT)FROM P);SELECT SNO FROM SPJ WHERE JNO IN(SELECT JNO FROM J WHERE JNO=‘J1’);3.5SELECT SNO FROM SPJ WHERE JNO=‘J1’ AND PNO=‘P1’;3.6SELECT JNAME FROM J,SPJ WHEREJ.JNO=SPJ.JNO AND SPJ.SNO=‘S1’;3.7SELECT COLOR FROM P,SPJ WHEREP.PNO=SPJ.PNO AND SPJ.SNO=‘S1’;3.8SELECT DISTINCT SNO FROM SPJ WHEREJNO=‘J1’ OR JNO=‘J2’;3.9SELECT SNO FROM SPJ,P WHEREP.PNO=SPJ.PNO AND SPJ.JNO=‘J1’ AND P.COLOR=‘红’’3.10SELECT SNO FROM SPJ,J WHERE J.JNO=SPJ.JNO AND J.CITY=‘上海’;SELECT SNO FROM SPJ,J,PWHERE SPJ.PNO=P.PNO AND J.JNO=SPJ.JNO AND P.COLOR=‘红’;3.12SELECT SPJ.PNO FROM SPJ,S,JWHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO AND S.CITY=J.CITY;3.13SELECT SPJ.PNO FROM SPJ,S,JWHERE S.SNO=SPJ.SNO AND J,JNO=SPJ.JNO AND S.CITY=‘上海’ AND J.CITY=‘上海’;3.14SELECT SPJ.JNO FROM SPJ,S,JWHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO AND S.CITY<>J.CITY;3.15SELECT JNO FROM SPJ WHERE JNO NOT IN (SELECT SPJ.JNO FROM S,SPJ WHERES.SNO=SPJ.SNO AND S.CITY =‘上海’);3.16SELECT SPJ.SNO FROM SPJ,P WHERE SPJ.PNO IN(SELECT SPJ.PNO FROM SPJ,S,PWHERE S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO AND P.COLOR=‘红’);3.17SELECT SPJ.JNO FROM S,P,SPJWHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO;3.18SELECT S.CITY,J.CITY FROM S,J,SPJWHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO;3.19SELECT S.CITY,SPJ.PNO,J.CITY FROM S,J,SPJ WHERE S ,=SPJ.SNO AND J.JNO =SPJ.JNO; 3.20SELECT S.CITY,SPJ.PNO,J.CITY FROM SPJ,S,J WHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO AND S.CITY<>J.CITY;3.21SELECT JNO FROM SPJ AS SPJ1WHERE NOT EXISTS(SELECT 1 FROM SPJ AS SPJ2WHERE SNO=‘S1’ AND NOT EXISTS(SELECT 1 FROM SPJ AS SPJ3WHERE SPJ3.PNO=SPJ2.PNO ANDSPJ3.JNO=SPJ1.JNO));3.22UPDATE P SET COLOR=‘红’ WHERE COLOR=‘橙’;3.23DELETE FROM SPJ,PWHERE SPJ.PNO=P.PNO AND P.COLOR=‘红’;DELETE FROM P WHERE COLOR=‘红’;3.24SELECT SPJ.SNO,SPJ,PNO,SUM(QTY) FROM SPJ WHERE SPJ.SNO=‘S1’ AND SPJ.PNO=‘P1’ GROUP BY SPJ.SNO,SPJ,PNO;3.25SELECT SPJ.SNO,COUNT(*) FROM SPJ GROUP BY SPJ.SNO;3.26SELECT JNO FROM SPJ GROUP BY SNO HAVING SUM(QTY)>1000;。

数据库(sql)课堂练习题(答案)

数据库(sql)课堂练习题(答案)

假设有如下4个样表student(学号,姓名,性别,出生日期,班级) teacher(教工号,姓名,性别,出生日期,职称,所在系) course(课程号, 课程名,教工号) score(学号,课程号,成绩)1、查询学生信息表中所有的姓名、性别和班级select sname,sex,class from student2、查询成绩表中成绩在60到80之间的所有记录select * from score where degree between 60 and 803、查询学生信息表中‘95031’班的学生或性别为‘女’的学生记录select * from student where class=95031 or sex='女'4、以班级降序显示学生信息表的所有记录select * from student order by class desc5、以课程号升序、成绩降序显示成绩表的所有记录select * from score order by cno asc , degree desc6、查询‘95031’班的学生人数select count(sno) 人数 from student where class=950317、查询成绩表中的最高分的学生的学号,课程号select sno,cno from score where degree=(select max(degree) from score)8、查询成绩表中课程号为‘3-105’的平均分*/select avg(degree) 平均成绩 from score where cno='3-105'9、显示成绩表中至少有5名学生选修的并以3开头的课程号的平均分数select avg(degree) 平均分数 from score where cno like '3%' group by cno having count(sno)>=510、列出95033班和95031班全体学生的记录select * from student where class in('95031','95033')11、显示所有学生的姓名、课程号和成绩select sname,cno,degree from student,score where student.sno=score.sno12、列出所有同学的姓名、课程名和成绩select sname,cname,degree from student,score,course where student.sno=score.sno and o=o13、显示'张旭'教师任课的学生成绩select student.sno, sname,degree from student,scorewhere student.sno=score.sno and cno in(select cno from coursewhere tno in (select tno from teacher where name='张旭' ) )14、列出存在有85分以上成绩的课程号select distinct cno from score where degree in (select degree from score where degree>85)15、列出最高分同学的学号、课程号和成绩*/select * from score where sno=(select sno from score where degree=(select max(degree) from score))16、列出所有未讲课的教师的姓名和系别select name,depart from teacher where not exists (select * from course where course.tno=teacher.tno)17、列出成绩比该课程平均成绩低的同学的成绩表select * from score x where degree<(select avg(degree) from score y where o=o)18、列出所有选修‘计算机导论’课程的‘男’同学的成绩表select student.sno,sname,degreefrom score,studentwhere student.sno=Score.sno and cno=( select cnofrom coursewhere cname='计算机导论' )and sex='男'第三章习题5.试用SQL语言完成以下各项操作:四个关系模式:S(SNO,SNAME,STATUS,CITY)P(PNO,PNAME,COLOR,WEIGHT)J(JNO,JNAME,CITY)SPJ(SNO,PNO,JNO,QTY)(1) 找出所有供应商的姓名和所在城市。

SQL语言习题参考答案

SQL语言习题参考答案

第3章 SQL语言习题参考答案1.试述SQL语言的特点。

(85页)答:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式、语言简捷,易学易用。

2.试述SQL的定义功能。

(87页)答:SQL的数据定义功能包括定义表、定义视图和定义索引3.用SQL语句建立第二章习题5中的四个表。

S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY);供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成:CREATE TABLE S(Sno C(2) UNIQUE,Sname C(6) ,Status N(2),City C(4))零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成:CREATE TABLE P(Pno C(2) UNIQUE,Pname C(6),COLOR C(2), WEIGHT I(2))工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、所在城市(CITY)组成:CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8), CITY C(4))供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成:CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2), QTY N(2))4.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询:(1)求供应工程J1零件的供应商号码SNO:SELECT DIST SNO FROM SPJ WHERE JNO=’J1’(2)求供应工程J1零件P1的供应商号码SNO:SELECT DIST SNO FROM SPJ WHERE JNO='J1' AND PNO='P1'(3)求供应工程J1零件为红色的供应商号码SNO:SELECT SNO FROM SPJ,P WHERE JNO='J1' AND = AND COLOR='红'(4)求没有使用天津供应商生产的红色零件的工程号JNO:SELECT DIST JNO FROM SPJ WHERE JNO NOT IN (SELE JNO FROM SPJ,P,S WHERE ='天津' AND COLOR='红' AND = AND =。

sql数据库试题及答案

sql数据库试题及答案

sql数据库试题及答案SQL数据库试题一1. 下面哪个命令可以创建一个名为"employee"的表格?A. CREATE TABLE employee;B. NEW TABLE employee;C. ADD TABLE employee;D. INSERT TABLE employee;答案:A. CREATE TABLE employee;2. 下列哪个是SQL数据库的关键字?A. SELECTB. COLUMNC. INSERTD. ADD答案:A. SELECT3. 在SQL中,如何查询一个名为"customers"的表格的所有记录?A. SELECT * FROM customers;B. SELECT ALL FROM customers;C. SELECT RECORDS FROM customers;D. SELECT DATA FROM customers;答案:A. SELECT * FROM customers;4. 如何在SQL中向表格中插入新的记录?A. ADD NEW INTOB. UPDATE TABLEC. INSERT INTOD. CREATE NEW答案:C. INSERT INTO5. 如何根据特定条件从表格中删除记录?A. REMOVE FROMB. ERASE ROWC. DELETE FROMD. DROP RECORD答案:C. DELETE FROMSQL数据库试题二1. 下面哪个关键字可以用来对查询结果进行排序?A. GROUP BYB. SORT BYC. ORDER BYD. ARRANGE BY答案:C. ORDER BY2. 在SQL中,如何对表格的指定列进行更新?A. MODIFY COLUMNB. EDIT TABLEC. UPDATE COLUMND. ALTER TABLE答案:C. UPDATE COLUMN3. 下面哪个函数可以计算表格中指定列的平均值?A. AVG()B. SUM()C. MAX()D. COUNT()答案:A. AVG()4. 在SQL中,如何查找表格中满足特定条件的记录数量?A. GET()B. FETCH()C. SEARCH()D. COUNT()答案:D. COUNT()5. 下面哪个关键字可以用来从多个表格中联合查询数据?A. UNIONB. JOINC. CONNECTD. COMBINE答案:B. JOIN文章到此结束,希望以上SQL数据库试题及答案能帮助到您对SQL数据库的理解和学习。

数据库期末考试题SQL及答案

数据库期末考试题SQL及答案

数据库期末考试题SQL及答案一、单项选择题(每题2分,共10分)1. 在SQL中,用于创建新表的语句是:A. CREATE TABLEB. CREATE DATABASEC. INSERT INTOD. SELECT答案:A2. 如果想要查询所有学生的姓名和成绩,应该使用以下哪个SQL语句?A. SELECT name, score FROM students;B. SELECT * FROM students;C. SELECT name FROM students;D. SELECT score FROM students;答案:A3. 在SQL中,用于更新表中数据的语句是:A. INSERTB. UPDATEC. DELETED. SELECT答案:B4. 下列哪个函数用于计算字段值的平均值?A. AVG()B. SUM()C. COUNT()D. MAX()答案:A5. 如果想要删除名为“students”的表,应该使用以下哪个SQL语句?A. DROP TABLE students;B. REMOVE TABLE students;C. DELETE TABLE students;D. DESTROY TABLE students;答案:A二、多项选择题(每题3分,共15分)1. 下列哪些SQL语句用于查询数据?A. SELECTB. INSERTC. UPDATED. DELETE答案:A2. 在SQL中,以下哪些选项是数据类型?A. INTB. VARCHARC. DATED. BOOLEAN答案:A, B, C3. 以下哪些关键字用于连接表?A. JOINB. UNIONC. INTERSECTD. EXCEPT答案:A4. 在SQL中,哪些语句用于删除数据?A. DELETEB. DROPC. REMOVED. TRUNCATE答案:A, B, D5. 下列哪些函数用于字符串操作?A. CONCAT()B. LENGTH()C. SUBSTRING()D. SUM()答案:A, B, C三、填空题(每题3分,共15分)1. 在SQL中,使用________关键字来定义主键。

数据库sql课后练习题及答案解析

数据库sql课后练习题及答案解析

数据库sql课后练习题及答案解析第一篇:数据库sql课后练习题及答案解析先创建下面三个表:(book表)(borrow表)(reader表)1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。

2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。

3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。

4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。

5)查找书名以”计算机”开头的所有图书和作者(WRITER)。

6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。

##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。

8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。

9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。

##10)* 找出借阅了一书的借书证号。

11)找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。

12)查询2006年7月以后没有借书的读者借书证号、姓名及单位。

#13)求”科学出版社”图书的最高单价、最低单价、平均单价。

##14)* 求”信息系”当前借阅图书的读者人次数。

#15)求出各个出版社图书的最高价格、最低价格和总册数。

#16)分别找出各单位当前借阅图书的读者人数及所在单位。

17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。

18)分别找出借书人次数多于1人次的单位及人次数。

19)找出藏书中各个出版单位的名称、每个出版社的书籍的总册数(每种可能有多册)、书的价值总额。

20)查询经济系是否还清所有图书。

如果已经还清,显示该系所有读者的姓名、所在单位和职称。

SQL试题精选及答案

SQL试题精选及答案

SQL试题精选及答案1. 请写出SQL中创建新表的语句。

答案:CREATE TABLE 表名 (列1 类型, 列2 类型, ...);2. 如何在SQL中查询特定列的数据?答案:SELECT 列名 FROM 表名 WHERE 条件;3. 请解释SQL中的JOIN操作。

答案:JOIN操作用于将两个或多个表中的行组合起来,基于一个共同的列。

4. 写出SQL中更新表中数据的语句。

答案:UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2 WHERE 条件;5. 如何在SQL中删除表中的数据?答案:DELETE FROM 表名 WHERE 条件;6. 请描述SQL中的GROUP BY子句的作用。

答案:GROUP BY子句用于将取回的记录分组,可以与聚合函数一起使用,如COUNT、SUM等。

7. SQL中如何使用子查询?答案:子查询是嵌套在另一个查询中的查询,可以出现在SELECT、INSERT、UPDATE或DELETE语句中。

8. 请写出SQL中创建索引的语句。

答案:CREATE INDEX 索引名 ON 表名 (列名);9. 如何在SQL中使用事务?答案:可以使用BEGIN TRANSACTION开始事务,然后执行一系列操作,最后使用COMMIT提交事务或ROLLBACK回滚事务。

10. 请解释SQL中的主键和外键。

答案:主键是表中用来唯一标识每行数据的列或列组合,而外键是一个表中的列或列组合,它在另一个表中作为主键。

11. SQL中如何进行数据排序?答案:使用ORDER BY子句,如SELECT * FROM 表名 ORDER BY 列名ASC 或 DESC。

12. 如何在SQL中使用聚合函数?答案:聚合函数如SUM、COUNT、AVG等,可以与GROUP BY子句一起使用,对数据进行汇总。

13. 请写出SQL中插入数据的语句。

答案:INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);14. 请解释SQL中的视图。

sql数据库试题及答案

sql数据库试题及答案

sql数据库试题及答案# SQL数据库试题及答案一、选择题1. SQL代表什么?- A. Structured Query Language- B. Simple Query Language- C. Standard Query Language- D. System Query Language答案:A2. 在SQL中,用于查询数据的语句是:- A. INSERT- B. UPDATE- C. SELECT- D. DELETE答案:C3. 下列哪个不是SQL的数据类型?- A. INT- B. FLOAT- C. CHAR- D. TEXT答案:D二、填空题4. SQL中的主键(_______)是用来唯一标识表中每一行数据的字段。

答案:PRIMARY KEY5. 在SQL中,使用(_______)语句可以增加新的数据记录到表中。

答案:INSERT INTO6. SQL中的(_______)用于删除表中的记录。

答案:DELETE三、简答题7. 简述SQL中的事务是什么,并说明其四个基本特性。

答案:事务是SQL中用来保证数据一致性的操作序列。

事务具有以下四个基本特性:- 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个点。

- 一致性(Consistency):事务必须保证数据库从一个一致的状态转移到另一个一致的状态。

- 隔离性(Isolation):并发执行的事务之间不会互相影响。

- 持久性(Durability):一旦事务提交,它对数据库的改变就是永久性的,即使系统发生故障也不会丢失。

8. 解释什么是SQL的联接(JOIN)操作,并给出内联接(INNER JOIN)的例子。

答案:联接操作是SQL中用于结合两个或多个表中的行的一种操作。

内联接根据两个表中的共同字段来选择记录。

例如:```sqlSELECT Orders.OrderID, Customers.CustomerNameFROM OrdersINNER JOIN Customers ON Orders.CustomerID =Customers.CustomerID;```这个例子中,`Orders` 表和 `Customers` 表通过 `CustomerID` 字段进行内联接。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

S Q L语言习题
1. 关系数据模型如下:
学生S(SNO,SN,SEX,AGE)
课程C(CNO,CN,PCNO) PCNO为直接先行课号
选课SC(SNO,CNO,GR) GR为课程考试成绩
用SQL写出查询程序:
选修课程“DB”的学生姓名SN。

方法1.
SELECT SN
FROM S
WHERE SNO IN ( SELECT SNO
FROM SC
WHERE CNO IN( SELECT CNO /* = */
FROM C
WHERE CN = ‘DB’ ) );
方法2.
SELECT SN
FROM S, SC, C
WHERE S.SNO=SC.SNO
AND O=O
AND CN = “DB”;
2. 关系数据模型如下:
学生S(SNO,SN,SEX,AGE)
课程C(CNO,CN,PCNO) PCNO为直接先行课号
选课SC(SNO,CNO,GR) GR为课程考试成绩
用SQL写出查询程序:
查询课程名和它的直接先行课的课程名以及它的间接先行课的课程名。

SELECT CN, ,
FROM C,C CX,C CY
WHERE C.PCNO=O
AND CX.PCNO=O
[例41]找出每个学生超过他选修课程平均成绩的课程号。

SELECT Sno,Cno
FROM SC x
WHERE Grade>= ( SELECT AVG(Grade)
FROM SC y
WHERE y.Sno=x.Sno );
3. 关系数据模型如下P84 例
4.26
学生S(SNO,SN,SEX,AGE)
课程C(CNO,CN,PCNO) PCNO为直接先行课号
选课SC(SNO,CNO,GR) GR为课程考试成绩
用SQL写出查询程序:
所有学生都选修的课程名CN。

方法1.
SELECT CN
FROM C
WHERE NOT EXISTS
( SELECT *
FROM S
WHERE NOT EXISTS
( SELECT *
FROM SC
WHERE SNO=S.SNO
AND CNO=O);
变换后语义:不存在这样的学生x,该学生没有选修P。

(x)P ≡( x( P))
方法2.
SELECT CN
FROM C
WHERE CNO IN( SELECT CNO
FROM SC
GROUP BY CNO
HAVING COUNT(*) = ( SELECT COUNT(*)
FROM S ));
[例46] 查询选修了全部课程的学生姓名。

SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM Course
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno= Student.Sno
AND Cno= o

);
变换后语义:不存在这样的课程x,该学生没有选修P。

4. 假设学生一课程数据库关系模式如下:
Student(Sno,Sname,Sage,Ssex);
Course(Cno,Cname,Teacher);
SC(Sno,Cno,Grade)。

用SQL语句表达下列查询:
(1)找出刘老师所授课程的课程号和课程名;
(2)找出年龄小于22岁的女学生的学号和姓名。

1. SELECT Cno,Cname
FROM Course
WHERE Teacher LIKE “刘%”/* % _ */ 2.SELECT SNO, SNAME
FROM Student
WHERE SAGE<22 AND SSEX =’女’
5. 假设学生一课程数据库关系模式如下:
Student(Sno,Sname,Sage,Ssex);
Course(Cno,Cname,Teacher);
SC(Sno,Cno,Grade)。

用SQL语句表达下列查询:
(1)找出至少选修刘老师讲的一门课的学生姓名;
(2)找出“程序设计”课成绩在90分以上的学生的姓名;
(3) 检索至少选修了课程号为‘C1和‘C3’的学生号。

答案
1. SELECT SNAME
FROM STUDENT, SC, COURSE
WHERE STUDENT.SNO=O AND O=O
AND TEACHER LIKE “刘%”
2. SELECT SNAME
FROM STUDENT, SC, COURSE
WHERE STUDENT.SNO=SC.SNO
AND O=O
AND CNAME =”程序设计” AND GRADE > 90
3.SELECT Sno 教科书:P80*** 例4.18
FROM SC SC1, SC SC2
WHERE SC1.Sno=SC2.Sno
AND o=’C1’
AND o=’C3’
[例51] 查询既选修了课程1又选修了课程2的学生
SELECT Sno
FROM SC
WHERE Cno=' 1 ' AND Sno IN (SELECT Sno
FROM SC
WHERE Cno=' 2 ');
SELECT Sno
FROM SC
WHERE Cno=’C1’OR Cno=’C3’/* AND */
6. 假设学生一课程数据库关系模式如下:
Student(Sno,Sname,Sage,Ssex);
Course(Cno,Cname,Teacher);
SC(Sno,Cno,Grade)。

用SQL语句表达下列查询:
(1)求孙老师讲的每门课的学生平均成绩;
(2)统计选修各门课的学生人数。

输出课程号和人数。

查询结果按人数降序排列,若人数相同,则按课程升序排列
答案
1. SELECT CNO, AVG(GRADE) !!!!!!!!!
FROM SC, COURSE
WHERE O=O AND TEACHER LIKE “孙老师”
GROUP BY CNO
2. SELECT CNO, COUNT(*)
FROM SC
GROUP BY CNO
OREDR BY COUNT(*)DESC, CNO
7. 假设学生一课程数据库关系模式如下:
Student(Sno,Sname,Sage,Ssex);
Course(Cno,Cname,Teacher);
SC(Sno,Cno,Grade)。

用SQL的更新语句表达对数据库的下列更新操作:
(1)向学生关系Student中插入一个学生元组(990012,梅立松,20,女)。

(2)从学生选课关系SC中删除夏春秋同学的所有元组。

(3)在学生选课关系SC中,把英语课的成绩提高10%。

答案
1. INSERT INTO STUDENT
VALUES (990012,梅立松,20,女)
插入:子查询
2. DELETE FROM SC
WHERE SNO IN /* = */
( SELECT SNO
FROM STUDENT
WHERE SNAME = “夏春秋”);
3. UPDATE SC
SET GRADE =1.1*GRADE
WHERE CNO IN
( SELECT CNO
FROM COURSE
WHERE CNAME = “英语”);
[例7] 将计算机科学系全体学生的成绩置零。

UPDATE SC
SET Grade=0
WHERE 'CS'= (SELETE Sdept
FROM Student
WHERE Student.Sno = SC.Sno);
UPDATE SC
SET Grade = 0
WHERE SNO IN ( SELECT SNO
FROM Student
WHERE Sdept = 'CS' );
例41 找出每个学生超过他选修课程平均成绩的课程号。

SELECT Sno,Cno
FROM SC x
WHERE Grade >= ( SELECT AVG(Grade)
FROM SC y
WHERE y.Sno=x.Sno);。

相关文档
最新文档