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课后习题答案
大三sql课后习题答案第二章3.上机练习题02 程序代码如下:STUDENT1 DATABASE CREATE ON PRIMARY (NAME= STUDENT1_data, FILENAME='E:\DATA\', SIZE=3,MAXSIZE=unlimited, FILEGROWTH=15%)LOG ON(NAME= STUDENT1_log, FILENAME='E:\DATA\', SIZE=2,MAXSIZE=30, FILEGROWTH=2)03 程序代码如下:create database studentson primary(name=students1,filename='E:\DATA\',size=5,maxsize=75,filegrowth=10%),(name= students12,filename='E:\DATA\',size=10,maxsize=75,filegrowth=1)log on(name=studentslog1, filename='E:\DATA\',size=5,maxsize=30,filegrowth=1),(name=studentslog2, filename='E:\DATA\',,5=sizemaxsize=30,filegrowth=1)第三章:3 上机练习题01 程序代码如下:--创建表book的Transact-SQL语句:USE test01GOCREATE TABLE book(book_id nchar(6)NOT NULL,book_name nchar(30 )NULL,price numeric(10, 2)NULL,CONSTRAINT PK_book PRIMARY KEY CLUSTERED(book_id ASC))ON PRIMARY--创建表uthor的Transact-SQL语句:CREATE TABLE(anthor_name nchar(4)NOT NULL,book_id nchar(6)NOT NULL,address nchar(30)NOT NULL)ON [PRIMARY]--设置book中的book_id为主键,author表中的book_id为外键ALTER TABLE WITH CHECKADD CONSTRAINT FK_ book_author FOREIGN KEY(book_id) REFERENCES(book_id)02 程序代码如下:--利用Transact-SQL语句创建表booksales的代码。
数据库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课后答案(从光碟中复制)
第一章1.数据库技术的发展经历了人工管理、文件系统、数据库系统3个阶段。
2.数据模型通常是由数据结构、数据操作和完整性约束3部分组成3.(1)Access (2)SQL Server (3)Oracle第二章1.SQL Server 2008的版本有:SQL Server 2008分为SQL Server 2008企业版、标准版、工作组版、Web版、开发者版、Express版、Compact 3.5版。
SQL Server 2008的主要特点为:可信任、高效、智能。
在安装SQL Server 2008时,可以选择:Windows身份验证模式、混合模式(SQL Server身份验证和Windows身份验证)第三章1.启动SQL Server 2008服务的两种方式分别是:后台启动SQL Server 2008服务和通过SQL Server配置管理器启动SQL Server2011。
后台启动SQL Server 2008服务步骤:选择“开始”/“控制面板”/“控制面板”/“系统和安全”/“管理工具”/“服务”命令,打开“服务”窗口。
在“服务”窗口中找到需要启动的SQL Server 2008服务,单击鼠标右键在弹出的快捷菜单中选择“启动”命令,等待Windows启动SQL Server 2008的服务。
通过SQL Server配置管理器启动SQL Server2011的步骤:首先打开“SQL Server Configuration Manager”管理工具。
在“SQL Server Configuration Manager”管理工具中左边树型结构下选择“SQL Server服务”,在“SQL Server Configuration Manager”管理工具右边列出的SQL Server服务中选择需要启动的服务,单击鼠标右键,在弹出的快捷菜单中选择“启动”命令,启动所选中的服务。
2.步骤:(1)打开“SQL Server Management Studio”工具。
SQL课后作业10题参考答案
假设每个职工可以在多个公司工作,检索每个职工的兼职公司数目和工资总数,显示E#,MUM,SUM_SALARY分别表示工号、公司数目和工资总数。
分析:涉及到表为works表;按照职工来统计公司的数目和工资总额select E#,count(c#) NUM,sum(salary) SUM_SALARY from works group by E#检索”联华公司”中低于本公司平均公司的职工工号和姓名.(10题2小题)(1)查找联华公司职工的平均工资。
方法一:连接查询实现select avg(salary) from works,comp where works.c#=comp.c# and cname='联华公司'方法二:嵌套查询实现Select avg(salary) from works Where c#=(select c# from comp Where cname='联华公司')------------------------------------5799.5(2)查找联华公司工资低于(1)的职工工号和姓名。
方法一:连接查询实现外层查询select emp.e#,enamefrom emp,works,compwhere emp.e#=works.e#and works.c#=comp.c#and cname='联华公司'and salary<(Select avg(salary) from worksWhere c#=(select c# from compWhere cname='联华公司'))方法二:嵌套查询实现外层查询(自己思考)3、检索工资高于其所在公司职工平均工资的所有职工的工号和姓名。
(1)先查找各公司的平均工资select c#,avg(salary) avg_salfrom worksgroup by c#(2) 检索所有职工的工号、姓名、公司,工资select emp.e#,ename,works.c#,salary,from emp,workswhere emp.e#=works.e#(3) 检索所有职工的工号、姓名、公司,工资,所在公司和平均工资select emp.e#,ename,works.c#,salary,a.c#,a.avg_salfrom emp,works,(select c#,avg(salary) avg_salfrom works group by c#) awhere emp.e#=works.e#and works.c#=a.c#and salary>avg_sal4、检索职工人数最多的公司的编号和名称(10题的4小题).(1)按照公司来统计公司的人数(涉及到works)select c#,count(e#) from worksgroup by c#(2) 从(1)的结果中查找人数最多的公司的人数select max(cont) from (select c#,count(e#) cont from worksgroup by c#) a(3) 根据(2)查询的结果,从(1)的结果中查找人数最多的公司的编号.select c# from (select c#,count(e#) cont from works group by c#) awhere cont=(select max(cont) from (select c#,count(e#) contfrom worksgroup by c#) a)(4)已知公司编号,在COMP表中查找公司编号和名称select c#,cname from compwhere c# in(select c# from (select c#,count(e#) cont from works group by c#) a where cont=(select max(cont) from (select c#,count(e#) contfrom worksgroup by c#) a))5、检索工资总额最小的公司的编号和名称。
SQL习题参考答案
8. 数据库设计过程包括几个主要阶段?这里只概要列出数据库设计过程的六个阶段:( l )需求分析;( 2 )概念结构设计;( 3 )逻辑结构设计;( 4 )数据库物理设计;( 5 )数据库实施;( 6 )数据库运行和维护。
这是一个完整的实际数据库及其应用系统的设计过程。
不仅包括设计数据库本身,还包括数据库的实施、运行和维护。
设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
二、选择题1. 在下面所列出的条目中,哪些是数据库管理系统的基本功能__ ABC ____。
A. 数据库定义B. 数据库的建立和维护C. 数据库存取D. 数据库和网络中其他软件系统的通信2. 在数据库的三级模式结构中,内模式有___ A ___。
A. 1个B. 2个C. 3个D. 任意多个3. 下面列出的条目中,哪些是数据库技术的主要特点___ ABC ___。
A. 数据的结构化B. 数据的冗余度小C. 较高的数据独立性D. 程序的标准化4. __ B ___是按照一定的数据模型组织的,长期储存在计算机内,可为多个用户共享的数据的聚集。
A. 数据库系统B. 数据库C. 关系数据库 . 数据库管理系统5. 数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)三者之间的关系,正确的表述是__ B ____。
A. DB和DBS都是DBMS的一部分B. DBMS和DB都是DBS的一部分C. DB是DBMS的一部分D. DBMS包括数据库系统和DB6. 用于对数据库中数据的物理结构描述的是___C_____。
A. 逻辑模式B. 用户模式C. 存储模式D. 概念模式7. 用于对数据库中全体数据的逻辑结构和特征描述的是___A_____。
A. 公共数据视图B. 外部数据视图C. 内模式D. 存储模式8. 用于对数据库中数据库用户能够看得见和使用的局部数据的逻辑结构和特征描述的是____B____。
A. 逻辑模式B. 外模式C. 内模式D. 概念模式9. 数据库三级模式体系结构的划分,有利于保持数据库的___A_____。
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 FROMSPJ,P,S WHERE ='天津' AND COLOR='红' AND = AND =。
SQL查询语句学习答案
第一部分SQL查询语句的学习没有安装SQL Server,只有Access,所以就在Access中操作,Access中的SQL语句与SQL Server中有一点不一样,但是不影响总体的学习,触类旁通,共勉。
所使用的数据库数据是Northwind.mdb单表查询--查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、客户ID和雇员ID等字段的值SQL语句:select 订单ID, 客户ID, 雇员ID, 订购日期from 订单where 订购日期between #1996-07-01# and #1996-07-15#截图:--查询“Northwind”示例数据库中供应商的ID、公司名称、地区、城市和电话字段的值。
条件是“地区等于华北”并且“联系人头衔等于销售代表”。
SQL语句:select 供应商ID, 公司名称, 地区, 城市, 电话from 供应商where 地区='华北' and 联系人职务='销售代表'截图:--查询“Northwind”示例数据库中供应商的ID、公司名称、地区、城市和电话字段的值。
其中的一些供应商位于华东或华南地区,另外一些供应商所在的城市是天津SQL语句:select 供应商ID, 公司名称, 地区, 城市, 电话from 供应商where 地区in ('华北','华南') or 城市='天津'截图:--查询“Northwind”示例数据库中位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值SQL语句:select 供应商ID, 公司名称, 地区, 城市, 电话from 供应商where 地区='华东' or 地区='华南'截图:多表查询--查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、相应订单的客户公司名称、负责订单的雇员的姓氏和名字等字段的值,并将查询结果按雇员的“姓氏”和“名字”字段的升序排列,“姓氏”和“名字”值相同的记录按“订单ID”的降序排列SQL语句:select 订购日期, 订单ID, 公司名称, 姓氏, 名字from 订单, 雇员, 客户where 订购日期between #1996-07-01# and #1996-07-15#and 订单.客户ID = 客户.客户IDand 订单.雇员ID = 雇员.雇员IDorder by 姓氏, 名字ASC, 订单ID DESC截图:--查询“10248”和“10254”号订单的订单ID、运货商的公司名称、订单上所订购的产品的名称SQL语句:select 订单.订单ID, 公司名称, 产品名称from 订单, 运货商, 产品, 订单明细where 订单.订单ID in (10248,10254)and 订单.运货商= 运货商.运货商IDand 订单.订单ID = 订单明细.订单IDand 订单明细.产品ID = 产品.产品ID截图:--查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称、数量、单价和折扣SQL语句:select 订单.订单ID, 产品名称, 数量, 订单明细.单价, 折扣from 订单, 产品, 订单明细where 订单.订单ID in (10248, 10254)and 订单.订单ID = 订单明细.订单IDand 订单明细.产品ID = 产品.产品ID截图:--查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称及其销售金额SQL语句:select 订单.订单ID, 产品名称, 数量*订单明细.单价*(1-折扣) as 销售金额from 订单, 订单明细, 产品where 订单.订单ID in (10248, 10254)and 订单.订单ID = 订单明细.订单IDand 订单明细.产品ID = 产品.产品ID截图:综合查询--查询所有运货商的公司名称和电话SQL语句:select 公司名称, 电话from 运货商截图:--查询所有客户的公司名称、电话、传真、地址、联系人姓名和联系人头衔SQL语句:select 公司名称, 电话, 传真, 地址, 联系人姓名, 联系人职务from 客户截图:--查询单价介于10至30元的所有产品的产品ID、产品名称和库存量SQL语句:select 产品ID, 产品名称, 库存量from 产品where 单价between 10 and 30截图:--查询单价大于20元的所有产品的产品名称、单价以及供应商的公司名称、电话SQL语句:select 产品名称, 单价, 公司名称, 电话from 产品, 供应商where 单价>20and 产品.供应商ID = 供应商.供应商ID截图:--查询上海和北京的客户在1996年订购的所有订单的订单ID、所订购的产品名称和数量SQL语句:Select 订单.订单ID, 产品名称, 数量From 订单, 客户, 产品, 订单明细Where 城市in (‘上海’, ‘北京’)And 订单.客户ID = 客户.客户IDAnd 订单.订单ID = 订单明细.订单IDAnd 订单明细.产品ID = 产品.产品ID截图:--查询华北客户的每份订单的订单ID、产品名称和销售金额SQL语句:Select 订单.订单ID, 产品名称, 产品.单价*(1-折扣)*数量as 销售金额From 订单, 产品, 订单明细, 客户Where 地区= '华北'And 订单.客户ID = 客户.客户IDAnd 订单.订单ID = 订单明细.订单IDAnd 订单明细.产品ID = 产品.产品ID截图:--按运货商公司名称,统计1997年由各个运货商承运的订单的总数量SQL语句:Select 公司名称, count(订单ID) as 订单总数量From 订单, 运货商Where year(发货日期) = 1997And 订单.运货商= 运货商.运货商IDGroup by 公司名称截图:--统计1997年上半年的每份订单上所订购的产品的总数量SQL语句:Select 订单.订单ID, sum(数量) as 总数量From 订单, 订单明细Where 订购日期between #1997-01-01# and #1997-06-30# And 订单.订单ID = 订单明细.订单IDGroup by 订单.订单ID截图:--统计各类产品的平均价格SQL语句:Select 类别名称, sum(单价*库存量)/sum(库存量) as 平均价格From 类别, 产品Where 类别.类别ID = 产品.类别IDGroup by 类别名称截图:--统计各地区客户的总数量SQL语句:Select 地区, count(客户ID) as 总数量From 客户Group by 地区截图:。
sql课后《习题》答案
第1章 SQL Server概述1、有个用户的计算机不能连接到中心机房的SQL Server 2000上。
你在调试过程中发现这个用户的计算机的网络功能是正常的,而且其他用户都能正常地连接到SQL Server 2000。
下面的哪些工具有助于你诊断和解决该问题?(多选)A.Enterprise ManagerB.Server Network UtilityC.ProfilerD.Query AnalyzerE.Client Network Utility答:B和E2、你在SQL Server 2000创建了酒店管理系统的数据库HotelDB,并创建了表CustInfo。
当下面的哪些数据库被删除的情况下,仍能正确地执行“SELECT * FROM CustInfo?A.ModelB.TempdbC.MsdbD.MasterE.Pubs答:A、C、E3、你正在使用SQL Server 2000开发银行交易系统,为了保证商业数据在网络传输(用TCP/IP协议)时不会被窃取,你在SQL Server 2000中启用了网络加密功能。
请问该功能在哪一层被实现?A.TCP/IP协议软件B.超级套接字层C.开放式数据服务D.关系引擎E.存储引擎答:B4、你正在使用SQL Server 2000开发超市收银系统。
在客户端编写软件时使用SQL语句“SELECT * FROM Products”来查询商品的信息,但是不小心把Products输入成Product。
请问该错误在哪一层被发现?A.客户端的数据库APIB.客户端的NET-LIBRARYC.服务器端的开放式数据服务D.服务器端的关系引擎E.服务器端的存储引擎答:D5、你要为中小型商场开发一个商场收银软件,该软件由多个收银员在各自的收银台使用。
后端数据库是SQL Server 2000,所有收银员的收银信息集中存放在几个表内。
在采用两层架构(2-Tier)的软件开发时,商场收银软件需要数据库的帐号和密码(SQL Server认证)或Windows认证才能连接和访问数据库,就象SQL Server 2000的查询分析器在刚运行的时候要求你输入帐号和密码或使用Windows认证才能访问数据库。
(完整版)SQL答案
1.查询客户表中的所有记录; 2.从订购单表中查询客户号信息(哪些客户有订购单)。
3.查询单价在X 元以上(含)的产品信息。
4.查询单价在X 元以上(不含)的某产品(按产品名称查询)信息。
5.查询单价在X 元以上(不含)的某两种产品(按产品名称查询)信息。
6.查询有某年某月订购单的客户名称、联系人、电话号码和订单号信息。
7.查询有某产品(按产品名称查询)订货的客户的名称、联系人和电话号码信息。
8.查询有某产品(按产品名称查询)订购需求的订购单明细记录。
9. 查询所有订购数量(即订购明细中每个订购项目的数量)都在X 元以上的订购单的信息。
10. 找出和某产品(按产品名称查询)同等价位的所有产品信息。
11. 查询单价范围在X 元到Y 元范围内的产品信息。
12. 从客户表 中查询出客户名称中有“XX‘二字的客户信息(使用LIKE 运算符)。
13. 从客户表 中查询出客户名称中没有“XX‘二字的客户信息(使用NOT LIKE 运算符)。
14. 按产品的单价升序列出全部产品信息。
15. 先按产品名称排序,在按单价排序列出全部产品信息。
16. 从产品表中查出共有几种产品。
17. 从订购明细表中查询某产品(按产品名称)的订购总数。
18. 计算某产品(按产品名称)所有订购的总金额。
19. 求所有订购单的平均金额,在查询结果中列出订购单的个数和平均金额。
20. 求每个订购单订购的项目数和总金额。
21. 求每个客户包含了某产品(按产品名称)订购的订单号及其最高金额和最低金额。
22. 求至少有两个订购项目的订购单的平均金额。
23. 找出尚未最后确定订购单(即订购日期为空值的记录)的有关客户信息(客户的名称、联系人和电话号码)和订单号。
24. 找出在某年某月某日之后签定的订购单的客户信息(客户名称、联系人和电话号码)、订单号和订购日期。
25. 列出每类产品(相同名称)具有最高单价的产品信息(产品号,名称,规格说明和单价),提示:使用内外层互相关嵌套查询。
sql课后习题答案
sql课后习题答案SQL课后习题答案随着信息技术的快速发展,数据库管理系统(DBMS)在各行各业中扮演着重要的角色。
而SQL(Structured Query Language)作为一种用于管理和操作关系型数据库的语言,被广泛应用于企业和组织的数据管理和分析中。
在学习SQL的过程中,课后习题是巩固知识的重要环节。
下面将为大家提供一些常见SQL课后习题的答案,希望对大家的学习有所帮助。
1. 查询所有学生的姓名和年龄。
答案:SELECT name, age FROM students;2. 查询所有学生的姓名和年龄,并按照年龄降序排列。
答案:SELECT name, age FROM students ORDER BY age DESC;3. 查询学生表中年龄大于20岁的学生信息。
答案:SELECT * FROM students WHERE age > 20;4. 查询学生表中年龄大于20岁并且性别为男的学生信息。
答案:SELECT * FROM students WHERE age > 20 AND gender = '男';5. 查询学生表中年龄大于20岁或者性别为女的学生信息。
答案:SELECT * FROM students WHERE age > 20 OR gender = '女';6. 查询学生表中的学生总数。
答案:SELECT COUNT(*) FROM students;7. 查询学生表中不重复的年龄。
答案:SELECT DISTINCT age FROM students;8. 查询学生表中年龄在20岁到25岁之间的学生信息。
答案:SELECT * FROM students WHERE age BETWEEN 20 AND 25;9. 查询学生表中每个班级的学生数量。
答案:SELECT class, COUNT(*) FROM students GROUP BY class;10. 查询学生表中每个班级的平均年龄。
数据库SQL习题答案
第1章数据库系统概述二.1.答:该学校的教学管理E-R模型有以下实体:系、教师、学生、项目、课程。
各实体属性如下:系(系编号,系名,系主任)教师(教师编号,教师姓名,职称)学生(学号,姓名,性别,班号)项目(项目编号,名称,负责人)课程(课程编号,课程名,学分)各实体之间的联系如下:教师担任课程的1:n“任课”联系教师参加项目的n:m“参加”联系学生选修课程的n:m“选修”联系系、教师和学生之间的所属关系的1:m:n“领导”联系对应的E-R模型如图1.1所示。
图1.1 E-R图2.答:计算结果如下:R∪S R∩S R-S R╳T3.答:计算结果如下:R SσA=C (R S) A B C a b c A R.B S.B C a b d a b b c A R.B S.B C c b c a b b d a b e a c b d c b b c c b b c de acbbddebd4. 答:(1)它是2NF 。
因为R 的候选关键字为课程名,而“课程名→教师名”,“教师名→课程名”不成立,教师名→教师地址,所以课程名 t 教师地址,即存在非主属性教师地址对候选关键字课程名的传递函数依赖,因此R 不是3NF 。
又因为不存在非主属性对候选关键字的部分函数依赖,所以R 是2NF 。
(2)存在删除操作异常。
当删除某门课程时会删除不该删除的教师的有关信息。
(3)分解为高一级范式如下:R 1课程名 教师名 R2 W1 任我行 教师名 教师地址 W2 张三丰 任我行 D1 W3 郭靖 张三丰 D1 W4张三丰郭靖D2分解后,若删除课程数据时,仅对关系R1操作,教师地址信息在关系R2中仍然保留,不会丢失教师方面的信息。
5.答: 令X=D ,X(0)=D 。
在F 中找出左边是D 子集的函数依赖,其结果是D →HG ,所以X(1)=X(0)HG=DGH ,显然有X(1)≠X(0)。
在F 中找出左边是DGH 子集的函数依赖,未找到,则X(2)=DGH 。
SQL数据库完整版答案.docx
1、T-SQL语言中,用什么关键字定义局部变量,用什么关键字给变量赋值。
(p52)答:使用DECLARE/declare关键字来定义局部变量;用SET/set和SELECT/select语句给变量赋值;2、自定义函数有几种?(p211)答:自定义函数有3种:标量值、内嵌表值、多语句表值3、局部变量以什么开头?全局变量以开头?答:局部变量是以@开头,全局变量是以@@开头;4、数据完整性包括哪几种?(pl79)答:数据完整性包括二种:完体完整性、域完整性、参照完整性;5、MS-SQL数据库中通常包含哪三类文件?(pll6)答:MS-SQL数据库通常包含着:主数据文件(.mdf) >次耍数据文件(・ndf)、事务日志文件(.ldf);6、MS-SQL数据控制语言中,使用什么关键字授予权限,使用什么关键字撤销权限?(p95)答:使用GRANT/grant关键字授予权限,使用REVOKE/revoke关键字撤销权限,使用DENY/deny关键字拒绝用户访问;7、DML触发器中,AFTER触发器和INSTEAD OF触发器有什么区别?(p235)答:(1) AFTER触发器只能在表上定义该类的触发器,并且只有执行INSERT,UPDATE和DELETE操作Z后,才会触发;(2) INSTEAD OF触发器该类型触发器不执行INSERT, UPDATE 和DELETE操作,而只是执行触发器木身;而且还可以在基于一个或多个基表的视图上定义;8、S QL SERVER中聚焦索引和非聚焦索引有什么区别?(pl69)答:聚集索引:该索引中键值的逻辑顺序决定了表中和应行的物理顺序,一个表中只能有一个聚集索引非聚集索引:该索引是数据表中行的物理顺序与索引键值的逻辑顺序不相同,仅指向表中数据,可以在表中定义,但其检测效率较低。
作为和数据表分离的对象操作,表中的每一列都有自己的自己的索引。
9、能够激活DML触发器的数据修改语句是使用INSERT\UPDATE\DELETE\SELECT 中明B个选项? UPDATE10、数据库备份的类型有哪几种?能够将数据恢复到某个时间点的备份设置是哪个?(P131)答:(1)数据库备份的类型有四种:完整数据备份、差异数据库备份、事务日志备份、文件和文件组备份;(2)能将数据库恢复到某个吋间点的备份设置是:事务日志备份;11 > SQL SERVER的登录账户信息保存在哪个系统数据库中?(pll7) 答:用户登录账户信息保存在master系统数据库中;12、语句INSERT SELECT语句有什么作用?(p92)答:(1) INSERT SELECT语句可以完成一次插入一个数据块的功能;(2)INSERT SELECT语句叮以把其他数据源的行添加到现有表中;复制表13、T-SQL语言的字符串常量是使用什么符号当作定界符?M答:字符串常量是使用’’单引号符号当作定界符;14、FOREIGN KEY约束定义了表之间的什么?(pl85)答:FOREIGN KEY约束定义对同一个表或另一个表屮具有PRIMARY KEY或UNIQUE约束的列的引用;(另一个答案):FOREIGN KEY约束定义了表之间的•个列或多列组合.15、域约束有哪几种?(pl79)答:域约束有:CHECK约束、DEFAULT约束。
sql课后《习题》答案
第1章 SQL Server概述1、有个用户的计算机不能连接到中心机房的SQL Server 2000上。
你在调试过程中发现这个用户的计算机的网络功能是正常的,而且其他用户都能正常地连接到SQL Server 2000。
下面的哪些工具有助于你诊断和解决该问题?(多选)A.Enterprise ManagerB.Server Network UtilityC.ProfilerD.Query AnalyzerE.Client Network Utility答:B和E2、你在SQL Server 2000创建了酒店管理系统的数据库HotelDB,并创建了表CustInfo。
当下面的哪些数据库被删除的情况下,仍能正确地执行“SELECT * FROM CustInfo?A.ModelB.TempdbC.MsdbD.MasterE.Pubs答:A、C、E3、你正在使用SQL Server 2000开发银行交易系统,为了保证商业数据在网络传输(用TCP/IP协议)时不会被窃取,你在SQL Server 2000中启用了网络加密功能。
请问该功能在哪一层被实现?A.TCP/IP协议软件B.超级套接字层C.开放式数据服务D.关系引擎E.存储引擎答:B4、你正在使用SQL Server 2000开发超市收银系统。
在客户端编写软件时使用SQL语句“SELECT * FROM Products”来查询商品的信息,但是不小心把Products输入成Product。
请问该错误在哪一层被发现?A.客户端的数据库APIB.客户端的NET-LIBRARYC.服务器端的开放式数据服务D.服务器端的关系引擎E.服务器端的存储引擎答:D5、你要为中小型商场开发一个商场收银软件,该软件由多个收银员在各自的收银台使用。
后端数据库是SQL Server 2000,所有收银员的收银信息集中存放在几个表内。
在采用两层架构(2-Tier)的软件开发时,商场收银软件需要数据库的帐号和密码(SQL Server认证)或Windows认证才能连接和访问数据库,就象SQL Server 2000的查询分析器在刚运行的时候要求你输入帐号和密码或使用Windows认证才能访问数据库。
数据库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课后习题答案在学习SQL课程时,课后习题是非常重要的一部分。
通过完成这些习题,我们可以加深对SQL语言的理解,提高自己的实际操作能力。
下面是一些SQL课后习题的答案,希望对大家的学习有所帮助。
1. 查询所有员工的信息```sqlSELECT * FROM employees;```2. 查询员工编号为1001的员工信息```sqlSELECT * FROM employees WHERE employee_id = 1001;```3. 查询员工表中的员工数量```sqlSELECT COUNT(*) FROM employees;```4. 查询员工表中的员工姓名和薪水```sqlSELECT employee_name, salary FROM employees;```5. 查询员工表中薪水大于5000的员工信息```sqlSELECT * FROM employees WHERE salary > 5000;```通过以上的习题答案,我们可以看到SQL语言的基本操作,包括查询、条件筛选、统计等。
这些都是我们在日常工作中经常会用到的操作,对于掌握SQL语言非常重要。
除了以上的习题,我们还可以通过实际的项目案例来练习SQL语言的应用。
例如,可以通过查询销售数据、客户信息等来加深对SQL语言的理解和掌握。
总的来说,通过课后习题的答案,我们可以更好地掌握SQL语言的基本操作,提高自己的实际操作能力,为以后的工作做好准备。
希望大家在学习SQL语言的过程中能够多加练习,不断提升自己的技能水平。
SQL课后练习题(1-9章答案)
第一章1、数据完整性是指( D )A.数据库存中的数据不存在重复B.数据库中所有的数据格式是一样的C.所有的数据全部保存在数据库中D.数据库中的数据能够正确反映情况2、SQL中pubs数据库属于(A )A.用户数据库B.系统数据库C.数据库模板D.数据库管理系统3、数据冗余指的是( D )A.数据与数据之间没有联系B.数据有丢失C.数据量太大D.存在重复的数据4、SQL Server数据库的主数据文件的扩展名为( B )A. .sqlB. .mdfC. .mdbD. .ldf5、下列关于关系数据库叙述错误的是(B )A.关系数据库的结构一般保持不变,但也可根据需要进行改变B.一个数据表组成一个关系数据库,多种不同数据则需要创建多个数据库C. 关系数据库表中的所有记录的关键字字段的值互不相同D. 关系数据库表中的外部关键字不能用于区别该表中的记录6、创建数据库时,需要指定( C )属性。
A.数据库初始大小B.数据库的存放位置C.数据库的物理名和逻辑名D.数据库的访问权限7、以下说法正确的是( A )A.通过SQL Server服务器对SQL Server的启动、停止和通过服务管理器对SQL Server的启动、停止是同等功效B.必须先启动服务管理器中的SQL Server服务之后才能通过SQL Server服务管理器启动SQL ServerC.必须先通过SQL Server服务管理器启动SQL Server之后才能启动服务管理器中的SQL Server服务D.只能通过服务管理器对SQL S erver进行启动和停止8、SQL Server提供的4个系统数据库,以下说法正确的是( D )A.tempdb数据库是一个空数据库,完全可以删除B.adventure works是用来做模板的一个数据库C.msdb数据库是用来做例子的数据库D.创建新的空白数据库时,将使用Model数据库所规定的默认值9、以下说法错误的是(C)A.数据完整性是指存储在数据库中数据的准确性B.SQL Server是一个DBMSC.ERP、CRM、MIS等都是DBMSD.设计数据库时允许必要的冗余第二章1、创建银行的贷款情况表时,“还款日期”默认为当天,且必须晚于“借款日期”,应采用(A)约束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章关系型数据库—基本概念和操作课后习题:========【注意:每一章后面的课后习题,是作业,也是期末考试主要的题源,期末试卷中约50分的试题就从这些题目中选取】1.各用一句话说明以下概念关系数据库,实例,属性,域,记录(元组),候选键,主键,外键1)一个关系数据库是由若干二维表和表之间的关联组成,这个库也叫一个“实例(instance)”。
2)表的第一行是“表头”,它并不是数据,而是说明每一列的数据应该“是什么”,以及取值范围和其它约束条件,“表头”的每个字段叫属性(attribute),属性的取值范围及其他约束条件叫域(field)。
属性是描述数据的数据,叫元数据。
3)每个表的各个属性不能重名,不同表的属性可以重名。
一个表也可以叫一个关系,表中的数据,有的是本表实体的数据,有的是与其它表的联系,比如“表8:选课表”,“课程号”和“学号”列是联系。
4)每张表从第二行往后是数据部分、每一行叫一条记录,或一个元组。
记录中的每一列可以叫一个字段。
6.每张表至少应该有一个,也可以有多个属性,可以唯一的确定一条记录,这种属性叫候选键(candidate key),比如,表5:“学生表”的“学号”肯定是候选键,而“姓名”如果加上不允许重复的约束条件,也是候选键,否则不是。
5)当一个表中有多个候选键,可以从中任选一个作为主键(prime key) ,当一个表只有一个候选键,它自然就是主键。
主键可以是数值,可以是字符串或其它类型,但无论如何主键的值不能为空,不同记录的主键值也不能重复。
6)外键(foreign key):在本表中是主键,而在其它表中可能不是主键,叫外键。
比如,“表8:选课表”的“课程号”和“学号”在该表中都不是主键,是可以重复的。
而在“表7:课程表”和“表5:学生表”中,却是各自的主键。
外键说明了一个表和另一个表的关联,是关系数据库中重要的键。
第二章关系型数据库—SQL语言本章习题(1)本章“8 小结”表中提到的重点关键词、谓词、句型、概念。
(2)本章所有例题(结合上机)阅读理解。
实验2:SQL语言(使用MS SQL Server)要求重复本章所有例题,并能加以适当变化,主要是谓词的变化。
分类基本句型和关键字其它重要关键字和谓词重要概念数据定义DDL CREATE DADABASE 数据库名;CREATE TABLE 表名(列名类型,…表级约束)NCHAR和CHAR的区别;数据库主文件,次文件,日志文件的概念及其扩展名数据操作DML INSERT INTO 表名(属性列表)VALUES(值列表); UPDATE表名SET 列名=表达式,WHERE行选择条件数据查询DQL SELECT *|列名,…FROM 表名|视图名,…WHERE 行选择条件;例31-33内连接查询句法;LIKE和 _, % ;SELECT 聚集函数名(形参) AS 别名FROM 表名 WHRER行选择条件;列的别名的用途;结果集;脏数据;外键的必要性视图CREATE VIEW视图名AS SELECT 语句; 视图;视图最重要的作用索引CREATE INDEX索引名ON 表名|视图名(列名,…); 索引,索引的优点和缺点第二章【附录】关系代数理论本章习题:1 用100字左右简述关系数据的三层模型2 本章“2.3 关系代数的原始运算”“选择”、“投影”、“笛卡尔积”、“并集”、“差集”和“重命名”。
请根据课件第二章的例题,猜测一下,这六个原始运算对应SQL语言的那个主句、子句或谓词。
3本章“2.4连接和类似连接的运算”给出了几个链接查询结果集的表格样例(比如部门表和雇员表的自然连接),写出相应的SQL语句。
1.外模式比如SQL的视图,用户完全可见向上映射概念模式:主要描述数据、类型、关系、约束、用户操作等。
比如SQL语句,用户部分可见向上映射内模式:描述数据库的物理存储用户看不到操作系统的文件系统,向上映射有些数据库有独立的文件系统2.“选择”:select “投影”:SELECT test FROM A“笛卡尔积”:SELECT选课表.*,学生表.*,课程表.*“并集”:WHERE ...OR...“差集”:WHERE...AND...“重命名”:EXEC sp_rename '表名.原列名', '新列名';3.自然连接 (⋈)自然连接是写为 (R⋈S) 的二元运算(相当于C语言的双目运算),这里的R和S是关系。
自然连接的结果是在R和S中公共属性名字上相等的所有元组的组合。
例如下面是表格“雇员”和“部门”和它们的自然连接:雇员Name EmpIdDeptNameHarry 3415 财务Sally 2241 销售George 3401 财务Harrie t 2202 销售部门DeptNameManager财务George销售Harriet生产Charles雇员⋈部门NameEmpIdDeptNameManagerHarry 3415 财务GeorgeSally 2241 销售HarrietGeorge 3401 财务GeorgeHarrit2202 销售HarrietSELECT 雇员.*,部门.* from 雇员,部门WHERE 雇员.DeptName =部门.DeptName;或是SELECT * from 雇员 NATURAL JOIN 部门;(SQL SERVER2005不能用)θ-连接(内连接)考虑分别列出车模和船模的价格的表“车”和“船”。
假设一个顾客要购买一个车模和一个船模,要求船模比车模便宜。
在关系上的θ-连接CarPrice≥BoatPrice生成所有可能选项的一个表,提供给顾客几种购买选择。
(请试写出下表的SQL语句)车CarMod el CarPri ceCarA 20'000 CarB 30'000 CarC 50'000船BoatModelBoatPriceBoat1 10'000Boat2 40'000Boat3 60'000车船CarModelCarPriceBoatModelBoatPriceCarA 20'000 Boat1 10'000CarB 30'000 Boat1 10'000CarC 50'000 Boat1 10'000CarC 50'000 Boat2 40'000SELECT * from 车,船车.CarPrice > 船.BoatPrice 除法 (÷)除法是写为R÷S的二元关系。
其结果是由只在R表的属性列中而不在S表中的属性列的构成,并且S中的元组的所有组合都存在于R中。
例如下面的“完成”(R)和“DB项目”(S)和它们的除法:完成Student TaskFred Database1 Fred Database2 Fred Compiler1 Eugene Database1 Eugene Compiler1 Sara Database1 Sara Database2DB项目TaskDatabase1Database2完成÷ DB项目StudentFredSaraselect 完成.Student from 完成,DB项目where 完成.Task=DB项目.Task第三章关系型数据库----设计理论及设计方法本章习题1 跟文科同学解释什么是关系型数据库,不能用数学术语,也不能举例说明。
解释不能超出100字。
2 跟文科同学,假定他知道什么是关系数据库,知道表、列、行、主键、外键等概念,解释什么是第一范式、第二范式、第三范式,不能用数学术语,也不能举例说明。
解释不能超出100字。
1.关系数据库的基本内容是若干张二维表格,以及表格之间的关联。
表及其关联关系。
便构成了一个关系型数据库的模型,将其输入到某种关系数据库系统中,便是个关系型数据库。
2.第一范式:表中所有列名(属性)的字段不可以再分。
第二范式:第二范式满足第一范式,表的非主键列依赖主键;非主键列之间不能相互依赖;一个表只说明一个事物。
第三范式:第三范式满足第二范式且数据库中可变的数据只在一处做修改更新而不波及其它第四章 T-SQL 程序控制语句本章习题1 概念和简答(每个问题的答案不得超出100字,课件全部章节的全部概念和简答题都做如此要求)1)什么是PL\SQL?什么是T-SQL?上网查查它们各自的英文全称。
2)对象的完全名字空间有什么用处?3)什么是对象的同义词?4)T-SQL用户自定义类型的特点?5)什么是局部变量?什么是全局变量?6)为什么要分页查询?7)为什么GOTO语句不推荐使用?2本章所有例题(结合上机)阅读理解。
1)SQL:Structured Query LanguagePL\SQL(Procedural Language/SQL)过程化SQL语言:Oracle数据库对SQL语句的扩展。
T-SQL (Transact-SQL)是:SQL 在Microsoft SQL Server 上的增强版2)用“..”隔开的对象完全名字空间,可以唯一确定一个对象的名字,不会出现不同的对象重名现象。
3)对象的简化引用时的另一个名字4)不仅允许自定义类型,而且允许将其加到数据库内置的完整性约束里。
5)局部变量是用户可自定义的变量,其作用范围仅在定义它的程序内有效。
局部变量名字前面必需要有@符号,局部变量要先声明后使用,T-SQL的全局变量是系统预定义好的,不允许用户自定义。
全局变量名字前面是@@。
用户可以在任何时间、用任何程序访问全局变量,直到数据库系统关闭。
6)“多批次,小批量”查询,每次只消耗很少的数据库和网络资源,比一次性返回大量结果集优越得多。
7)无条件跳转会产生难以阅读和维护的“面条代码”第五章并发和事务本章习题:=========1什么是并发程序?什么是异步并发程序?什么是同步并发程序?2当同步并发程序(1)同时写(2)同时读写(3)同时读共享数据时,那种情况有极小概率发生脏数据(脏读或脏写)?3什么是原子操作?对并发数据为什么要使用原子操作?4 什么是事务?5 事务的缺点是什么?6 GO命令有什么用?7 能够读懂本章的例题。
本章实验:=========无要求。
【本章所有的例题,仅仅为了便于同学们理解相关的概念。
期末考试时,不要求写本章例题相关的SQL程序题,只要求读懂例题。
】1.在同一个系统下“同时”运行的多个进(线)程,叫并发程序。
这些并发程序,有的是相互无关的,这种并发程序叫异步并发程序。
但是当并发程序之间有相互关联,比如多个进(线)程有共享数据的时候,这种并发程序叫同步并发程序。