最新数据库习题答案--何玉洁
数据库课后部分习题答案(何玉洁版)
P55习题10.CREATE TABLE [Book]([bno] [nchar](6)CONSTRAINT [PK_Book] PRIMARY KEY,[bname] [nvarchar](50)NOT NULL,[author] [char](10)NOT NULL,[date] [smalldatetime],[price] [decimal](5, 1),)CREATE TABLE [Bookshop]([bsno] [nchar](6)CONSTRAINT [PK_Bookshop] PRIMARY KEY,[bsname] [nvarchar](50)NOT NULL,[tel] [char](8) CONSTRAINT [CK_Bookshop_tel]CHECK([tel] like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), [addr] [nvarchar](40),[zip] [char](6),)CREATE TABLE [Booksale]([bno] [nchar](6)NOT NULL,[bsno] [nchar](6)NOT NULL,[date] [smalldatetime] NOT NULL,[amount] [tinyint] CONSTRAINT [CK_Booksale_amount]CHECK([amount]>=1),CONSTRAINT [PK_Booksale] PRIMARY KEY([bno],[bsno],[date]),CONSTRAINT [FK_Booksale_Book] FOREIGN KEY([bno])REFERENCES [Book] ([bno]),CONSTRAINT [FK_Booksale_Bookshop] FOREIGN KEY([bsno]) REFERENCES [Bookshop] ([bsno]),)11. ALTER TABLE Book ADD amount INT CONSTRAINT CK_Book_amountCHECK(amount>=100)12. ALTER TABLE Bookshop DROP COLUMN zip13.ALTER TABLE Booksale ALTER COLUMN amount INTP89习题1.SELECT*FROM SC2.SELECT sname,sage FROM Student3.SELECT*FROM SC WHERE Grade BETWEEN 70 AND 804.SELECT sname,sage FROM Student WHERE sdept='计算机系'AND sage BETWEEN 18AND 205.SELECT MAX(grade)FROM SC WHERE CNO='c01'6.SELECT MAX(sage),MIN(sage)FROM Student WHERE sdept='计算机系'7.SELECT sdept,COUNT(*)FROM Student GROUP BY sdept8.SELECT cno,COUNT(*),MAX(grade)FROM SC GROUP BY cno9.SELECT sno,COUNT(*),SUM(grade)FROM SC GROUP BY sno ORDER BY COUNT(*)10.SELECT sno,SUM(grade)FROM SC GROUP BY sno HAVING SUM(grade)>20011.SELECT sname,sdept FROM Student JOIN SC ON Student.sno=SC.sno WHERE CNO='c01'或:SELECT sname,sdept FROM Student WHERE sno IN(SELECT sno FROM SC WHERE cno='c01')12.SELECT sname,cno,grade FROM Student JOIN SC ON Student.sno=SC.sno WHEREgrade>80 ORDER BY grade DESC13.SELECT Student.sno,sname,sdept FROM Student LEFT JOIN SC ON Student.sno=SC.snoWHERE SC.sno is NULL或:SELECT Student.sno,sname,sdept FROM Student WHERE NOT EXISTS(SELECT*FROM SC WHERE Student.sno=SC.sno )14.SELECT cname,semester FROM Course WHERE semester=(SELECT semester FROMCourse WHERE cname='VB')或:SELECT ame,C2.semester FROM Course C1 JOIN Course C2 ONC1.semester=C2.semester WHERE ame='VB'15.SELECT sname,sdept,sage FROM Student WHERE sage IN(SELECT sage FROM CourseWHERE sname='李勇')16.SELECT TOP 2 sname,sage FROM Student WHERE sdept='计算机系'ORDER BY Sage17.SELECT TOP 2 WITH TIES sname,sdept,grade FROM Student JOIN SC ONStudent.sno=SC.sno JOIN Course ON o=o WHERE cname='VB'ORDER BY grade DESC18.SELECT TOP 2 WITH TIES sno,COUNT(*)FROM SC GROUP BY sno ORDER BYCOUNT(*)DESC19.SELECT TOP1 WITH TIES sdept,COUNT(*)FROM Student GROUP BY sdept ORDERBY COUNT(*)DESC20.子查询1)SELECT sname,sdept FROM Student WHERE sno IN (SELECT sno FROM SCWHERE cno='c01')2)SELECT Student.sno,sname,cno,grade FROM Student JOIN SC ON Student.sno=SC.snoWHERE Student.sno IN(SELECT sno FROM Student WHERE sdept='数学系')AND grade>80或:SELECT Student.sno,sname,cno,grade FROM Student JOIN SC ON Student.sno=SC.snoWHERE sdept='数学系'AND grade>80错误:SELECT Student.sno,sname,cno,grade FROM Student JOIN SC ON Student.sno=SC.snoWHERE sdept='数学系'AND Student.sno IN(SELECT sno FROM SC WHEREgrade>80)或:SELECT Student.sno,sname,cno,grade FROM Student JOIN SC ON Student.sno=SC.snoWHERE Student.sno IN(SELECT sno FROM Student WHERE sdept='数学系')ANDStudent.sno IN(SELECT sno FROM SC WHERE grade>80)3)SELECT sname FROM Student WHERE sno IN(SELECT sno FROM SC WHEREgrade=(SELECT MAX(grade)FROM SC WHERE sno IN(SELECT sno FROM StudentWHERE sdept='计算机系')))4)SELECT sname,sdept,ssex,grade FROM Student JOIN SC ON Student.sno=SC.snoWHERE cno IN(SELECT cno FROM Course WHERE cname='计算机文化学') ANDgrade=(SELECT MAX(grade)FROM SC WHERE cno IN(SELECT cno FROM CourseWHERE cname='计算机文化学'))21.SELECT sname,sdept FROM Student WHERE sno NOT IN(SELECT sno FROM SCWHERE cno=(SELECT cno FROM Course WHERE cname='VB'))或:SELECT sname,sdept FROM Student WHERE NOT EXISTS(SELECT*FROM SC WHERE Student.sno=sno AND cno=(SELECT cno FROM Course WHERE cname='VB'))22.SELECT sname,ssex FROM Student WHERE NOT EXISTS(SELECT*FROM SCWHERE sno=Student.sno)或:SELECT sname,ssex FROM Student LEFT JOIN SC ON Student.sno=SC.sno WHERE cno IS NULL23.SELECT sname,cname FROM Student JOIN SC ON Student.sno=SC.sno JOIN Course ONo=o WHERE Student.sno IN(SELECT TOP 1 WITH TIES Student.sno FROM Student JOIN SC ON Student.sno=SC.sno WHERE sdept='计算机系'GROUP BY Student.sno ORDER BY AVG(grade))24.SELECT cname,semester,credit FROM Course WHERE cno IN(SELECT TOP 1 WITH TIEScno FROM SC WHERE cno IN(SELECT cno FROM Course WHERE semester BETWEEN 1 AND 5)GROUP BY cno ORDER BY COUNT(sno))错误:SELECT cname,semester,credit FROM Course WHERE semester BETWEEN 1 AND 5 AND cno IN(SELECT TOP 1 WITH TIES cno FROM SC GROUP BY cno ORDER BY COUNT(sno))25.CREATE TABLE test_t(COL1 int,COL2 char(10)NOT NULL,COL3 char(10),)INSERT test_t VALUES(NULL,'B1',NULL)INSERT test_t VALUES(1,'B2','C2')INSERT test_t(COL1,COL2)VALUES(2,'B3')26.DELETE FROM SC WHERE grade<5027.DELETE FROM Course WHERE NOT EXISTS(SELECT*FROM SC WHEREo=cno )或:DELETE Course FROM Course LEFT JOIN SC ON o=o WHERE o IS NULL28.DELETE SC FROM Student JOIN SC ON Student.sno=SC.sno JOIN Course ONo=o WHERE sdept='计算机系'AND cname='VB'AND grade<60或:DELETE SC WHERE sno IN(SELECT sno FROM Student WHERE sdept='计算机系')AND cno IN(SELECT cno FROM Course WHERE cname='VB')AND grade<6029.DELETE SC WHERE cno IN(SELECT cno FROM Course WHERE cname='VB')ANDgrade=(SELECT MIN(grade)FROM SC WHERE cno IN(SELECT cno FROM Course WHERE cname='VB'))或:DELETE SC WHERE cno IN(SELECT cno FROM Course WHERE cname='VB')AND sno IN(SELECT TOP 1 WITH TIES sno FROM Course JOIN SC ON o=oWHERE cname='VB'ORDER BY grade)30.UPDATE Course SET credit=credit+2 WHERE semester=231.UPDATE Course SET credit=3 WHERE cname='VB'32.UPDATE Student SET sage=sage+1 WHERE sdept='计算机系'33.UPDATE SC SET grade=grade+5 FROM Student JOIN SC ON Student.sno=SC.sno JOINCourse ON o=o WHERE sdept='信息系'AND cname='计算机文化学'或:UPDATE SC SET grade=grade+5 WHERE sno IN(SELECT sno FROM Student WHERE sdept='信息系')AND cno IN(SELECT cno FROM Course WHERE cname='计算机文化学') 34.UPDATE Course SET credit=credit-1WHERE cno IN(SELECT TOP 1 WITH TIESo FROM Course LEFT JOIN SC ON o=o GROUP BY o ORDER BY COUNT(sno))错误:UPDATE Course SET credit=credit-1 WHERE cno IN(SELECT TOP 1 WITH TIES cnoFROM SC GROUP BY cno ORDER BY COUNT(sno))。
何玉洁《数据库原理与应用教程》教案
何玉洁《数据库原理与应用教程》教案示例文章篇一:《我和数据库原理的奇妙之旅》嗨,大家好!我是一名小学生,今天我想给大家讲讲我和一本超级特别的书——《数据库原理与应用教程》之间发生的奇妙故事。
你可能会想,一个小学生怎么会和这么高深的书有关系呢?嘿嘿,这可就说来话长啦。
我有一个特别厉害的姐姐,她上大学了。
有一天,我在她的书桌上看到了这本《数据库原理与应用教程》。
当时我就想,这是个啥呀?书的封面看起来就很神秘,上面有好多我看不懂的字和奇怪的图案。
我就好奇地拿起来翻开看了看。
哇塞,里面全是密密麻麻的字,就像一群小蚂蚁在排队一样。
我看了几行,啥都不明白,感觉就像是在听外星人讲话。
我拿着书跑去问姐姐:“姐姐,这书讲的啥呀?我怎么都看不懂呢?”姐姐笑着说:“小笨蛋,这是关于数据库原理的书,你还小,当然不懂啦。
”我不服气地说:“哼,我虽然小,可我很聪明的。
你给我讲讲呗。
”姐姐就开始给我简单地讲数据库就像是一个超级大的仓库,不过这个仓库不是放东西的,是放数据的,就像我们把玩具放在玩具箱里一样,数据也有自己的“小房子”。
我似懂非懂地点点头,心想这还挺有趣的呢。
从那以后,我就对这本书着了迷。
我总是偷偷地跑到姐姐的房间去看这本书。
有时候我看到那些奇怪的符号和代码,就会自己在心里琢磨。
我想,这会不会是一种特别的语言呢?就像我们说的汉语、英语一样,只不过是电脑能听懂的语言。
我还会自己瞎编一些代码,然后跑去跟姐姐说:“姐姐,你看我写的这个代码对不对呀?”姐姐看了就会哈哈大笑起来,说:“你这写的啥呀,完全不对呢。
”我就会很沮丧,感觉自己像个失败的小发明家。
有一次,我在看关于数据库关系的部分。
我就想啊,这关系不就像我们人和人之间的关系一样吗?比如说我和我的小伙伴们,我们之间有好朋友关系、同学关系。
那在数据库里,数据之间也有各种各样的关系。
我就兴奋地跑去跟姐姐分享我的这个想法。
姐姐很惊讶地说:“哇,你这个想法还挺有趣的呢。
”这时候我就像得到了全世界最大的表扬一样,心里美滋滋的。
何玉洁新版《数据库原理与应用》-第1章数据库概述
难以满足不同对数据用户的需求
• 不同的用户关注的数据往往不同。 • 例如,对于学生基本信息,
• 分配学生宿舍的部门可能只关心学生 的学号、姓名、性别和班号。 • 教务部门可能关心的是学号、姓名、 所在系、专业和班号。
• 需要为每个用户建立一个文件,这势 必造成很多的数据冗余。
• 增加信息 • 删除无用信息等
• 不影响应用程序的特性。
学生数据库 学生数据库
应用程序
2013年7月14日7时43分
36
示例
应用程序 学号 S01 S02 S03 S04 姓名 张三 李四 王五 陈六 性别 男 女 女 男
学号 S01 S02 S03 S04
姓名 张三 李四 王五 陈六
性别 男 女 女 男
编写应用程序不方便
• 应用程序编写者必须清楚地了解所 用文件的逻辑及物理结构,
• 如文件中包含多少个字段, • 每个字段的数据类型, • 采用何种逻辑结构和物理存储结构。
• 对文件的查询、修改等处理都必须 在应用程序中编程实现。
2013年7月14日7时43分 17
数据冗余不可避免
• 数据冗余所带来的问题不仅仅是存储 空间的浪费,更为严重的是造成了数 据的不一致(inconsistency)。 • 如:某学生所学的专业发生了变化, 如果只在F1文件中进行修改,而忘记 在F3中应做同样的修改。则会造成同 一名学生在两个文件中的“专业”不 一样。
D B M S
2013年7月14日7时43分
28
数据具有较高的独立性
• 数据独立性是指数据的组织和存储方 法与应用程序互不依赖、彼此独立的 特性。
2013年7月14日7时43分
数据库原理与应用 何玉洁编著 上机报告2
学号: 201211041026 姓名:刘畅班级:信息12-1 成绩:上机练习一、实验目的了解SQL Sever 2012 安全管理机制,掌握SQL Sever2012 身份验证模式的创建,以及创建和删除数据库用户。
二、实验环境安装SQL Sever 2012 的计算机一台,且所在计算机用户能完整获取计算机最高权限。
三、实验内容1用SSMS工具建立SQL Sever身份验证模式的登录名:log1、log2和log3。
2利用第10章建立的students数据库以及Students、Course、SC表,用log1建立一个数据库引擎查询,在“可用数据库”下拉列表框中是否能看到并选中students数据库?为什么?3将log1、log2和log3映射为students数据库中的用户,用户名同登录名。
4再次用log1建立一个新的数据库引擎查询,这次在“可用数据库”下拉列表框中是否能看到并选中students数据库?为什么?5用log1用户在students数据库中执行下述语句,能否成功?为什么?SELECT * FROM Course6授予log1具有对Course表的查询权限,授予log2具有对Course表的插入权限。
7在SSMS中,用log2建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么? INSERT INTO Course VALUES(‘C101’ ,’数据库基础’,4,5)再执行下述语句,能否成功?为什么?SELECT * FROM Course8在SSMS中,在log1建立的数据库引擎查询中,再次执行下述语句:SELECT * FROM Course这次能否成功?但如果执行下述语句:INSERT INTO Course VALUES(‘C103’,’软件工程',4,5)能否成功?为什么?9授予log3在students数据库中具有建表权限。
10在students数据库中建立用户定义的角色:SelectRole,并授予该角色对Students、Course和SC表具有查询权。
数据库原理及应用(何玉洁)-第9章
17
“保存查询”对话框 保存查询” 保存查询
18
2000基础 第9章 SQL Server 2000基础
1
9.1 SQL Server 2000概述 概述
2000共提供了四个服务 共提供了四个服务: SQL Server 2000共提供了四个服务: 1、SQL Server 2000的最核心的服务 的最核心的服务。 是SQL Server 2000的最核心的服务。 2、SQL Server Agent 能够根据系统管理员预先设定好的计划自动执行相 应的功能。 应的功能。 Coordinator(DTC) 3、Distributed Transaction Coordinator(DTC) 分布式事务处理协调器是一个事务管理器 是一个事务管理器, 分布式事务处理协调器是一个事务管理器,在DTC 支持下, 支持下,客户可以在一个事务中访问不同服务器上的数 据库。 据库。 4、Microsoft Search 能够对字符数据进行检索。
7
8
2、查询分析器
SQL查询分析器( Analyaer) SQL查询分析器(Query Analyaer)是一个 查询分析器 图形化的查询工具, 图形化的查询工具,用于以文本的方式编辑 Transact-SQL语句,然后发送给服务器, Transact-SQL语句,然后发送给服务器,并接 语句 受执行的结果。使用这个工具, 受执行的结果。使用这个工具,用户可以交互 地设计和测试Transact-SQL语句、 地设计和测试Transact-SQL语句、批处理和脚 Transact 语句 本。
5
图9-19 连接成功后的企业管理器
6
Server数据库 SQL Server数据库 Master数据库 Master数据库 是一个非常重要的数据库, 是一个非常重要的数据库,记录了一些关于 Server系统相关信息 系统相关信息。 SQL Server系统相关信息。 注意:千万不要在master master数据库中创建用户 注意:千万不要在master数据库中创建用户 的对象 Model数据库 Model数据库 可用来作为创建系统中的所有数据库模板。 可用来作为创建系统中的所有数据库模板。 Msdb数据库 Msdb数据库 用来处理有关SQL Server代理程序内的警 用来处理有关SQL Server代理程序内的警 操作员及作业等工作, 告、操作员及作业等工作,例如当警告发生时通 知哪个操作员等相关记录。 知哪个操作员等相关记录。 Tempdb数据库 Tempdb数据库 包含所有的暂存表格与暂存存储过程。 包含所有的暂存表格与暂存存储过程。
数据库系统教程(何玉洁_李宝安_编著)第5章习题参考答案
第5章数据操作语句习题答案1.查询SC表中的全部数据select * from SC2.查询计算机系学生的姓名和年龄select Sname,Sage from Studentwhere Sdept = '计算机系'3.查询成绩在70~80分的学生的学号、课程号和成绩select Sno,Cno,Grade from SCwhere Grade between 70 and 804.查询计算机系年龄在18~20岁的男学生的姓名和年龄select Sname,Sage from Studentwhere Sdept = '计算机系' and Sage between 18 and 205.查询C001课程的最高分select max(Grade) from SCwhere Cno = 'C001'6.查询计算机系学生的最大年龄和最小年龄select max(Sage),min(Sage) from Studentwhere Sdept = '计算机系'7.统计每个系的学生人数select Sdept,count(*) from Studentgroup by Sdept8.统计每门课程的选课人数和考试最高分select Cno,count(*),max(Grade) from SCgroup by Cno9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果select sno,count(*),sum(Grade) from SCgroup by Snoorder by count(*)10.查询选修C002课程的学生的姓名和所在系select Sname,Sdept from Student S join SCon S.Sno = SC.Snowhere Cno = 'C002'11.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果select Sname,Cno,Grade from Student S join SCon S.Sno = SC.Snowhere Grade > 80order by Grade DESC12.查询选课门数最多的前2位学生,列出学号和选课门数select top 2 with ties Sno,count(*) from SCgroup by Snoorder by count(*) desc13.查询哪些课程没有学生选修,要求列出课程号和课程名select o,Cname from Course C left join SCon o = owhere o is null14.查询计算机系哪些学生没有选课,列出学生姓名select Sname from Student S left join SCon S.Sno=SC.Snowhere Cno is null15.用子查询实现如下查询:1)查询选修C001课程的学生的姓名和所在系select Sname,Sdept from Studentwhere Sno in (select Sno from SCwhere Cno = 'C001')2)查询通信工程系成绩80分以上的学生的学号和姓名select Sno,Sname from Studentwhere Sno in (select Sno from SCwhere Grade >80)3)查询计算机系考试成绩最高的学生的姓名select Sname from Studentwhere Sdept = '计算机系' and Sno in (select top 1 with ties Sno from SCorder by Grade desc)4)查询年龄最大的男学生的姓名和年龄select Sname,Sage from Studentwhere Ssex = '男' and Sno in(select top 1 with ties Sno from Studentorder by Sage desc)5)查询C001课程的考试成绩高于该课程平均成绩的学生的学号和成绩select Sno,Grade from SCwhere Cno = 'C001' and Grade > (select avg(Grade) from SCwhere Cno = 'C001')16.创建一个新表,表名为test,其结构为(COL1,COL2,COL3),其中:COL1:整形,允许空值COL2:普通编码定长字符类型,长度为10,不允许空值COL3:普通编码定长字符类型,长度为10,允许空值create table test(COL1 int,COL2 char(10) not null,COL3 char(10))insert into test values(NULL,'B1',NUll)insert into test values('1','B2','C2')insert into test values('2','B3',NUll)17.将所有选修C001课程的学生成绩加10分update SC set Grade = Grade +10where Cno = 'C001'18.将计算机系所有选修“计算机文化学”课程的学生的成绩加10分update SC set Grade = Grade +10where Cno in (select Cno from Coursewhere Cname = '计算机文化学')19.删除成绩小于50分的学生的选课记录delete from SCwhere Grade < 5020.删除计算机系VB考试成绩不及格学生的VB选课记录delete from SCwhere Cno= 'C005' and Grade < 60 and Sno in (select Sno from Studentwhere Sdept = '计算机系')21.删除没人选的课程的基本信息delete from Coursewhere Cno in(select o from Course C left join SCon o=owhere o is null)*以上内容仅供参考。
(完整word版)数据库原理与应用教程 何玉洁 五——八章课后习题部分答案
第五章一、试说明使用视图的好处。
答:1、简化数据查询语句2、使用户能从多角度看待同一数据3、提高了数据的安全性4、提供了一定程度的逻辑独立性二、使用视图可以加快数据的查询速度,这句话对吗?为什么?答:不对。
因为数据库管理系统在对视图进行查询时,首先检查要查询的视图是否存在,如果存在,则从数据字典中提取视图的定义,把视图的定义语句对视图语句结合起来,转换成等价的对基本表的查询,然后再执行转换后的查询,所以使用视图不可以加快数据的查询速度。
三、利用第3章建立的Student、Course和SC表,写出创建满足下述要求的视图的SQL语句。
(1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。
答:CREATE VIEW IS_S_CASSELECT Sno,Sname,Sdept,Cno,Cname,CreditFROM Student S JOIN SC ON S.Sno=SC.SnoJOIN Course C ON o=o四、利用第三题建立的视图,完成如下查询:(1)查询考试成绩大于等于90分的学生的姓名、课程号和成绩。
答:SELECT Sname,Cno,GradeFROM IS_SCWHERE Grade>=90五、修改第三题(4)定义的视图,使其查询每个学生的学号,总学分以及总的选课门数。
答:ALTER VIEW IS_CCASSELECT Sno,COUNT(Credit),COUNT(Cno)FROM SC JOIN Course C ON o=oGROUP BY Sno第六章一、关系规范化中的操作异常有哪些?它是由什么引起的?解决的方法是什么?答:操作异常:数据冗余问题、数据更新问题、数据插入问题和数据删除问题。
它是由关系模式中某些属性之间存在的“不良”的函数依赖关系一起的。
解决的方法是进行模式分解,即把一个关系模式分解成两个或多个关系模式,在分解的过程中消除那些“不良”的函数依赖,从而获得良好的关系模式。
数据库原理及应用(何玉洁)第二版第4章
SELECT Sname, Ssex FROM Student WHERE Sdept = '信息系' OR Sdept = '数学系' OR Sdept = '计算机系'
15
(4)字符匹配 LIKE用于查找指定列名与匹配串常量匹配的
元组。通配符用于表示任意的字符或字符串。在 LIKE运算符前边也可以使用NOT运算符,表示对 结果取反。
SELECT MAX(Grade) , MIN(Grade) FROM SC WHERE Cno='C01'
注意:计算函数不能出现在WHERE子句中。 例:查询年龄最大的学生的姓名,如下写法是 错误的:
SELECT Sname FROM Student WHERE Sage = MAX(Sage)
25
LIKE运算符的一般形式为: 列名 [NOT] LIKE <匹配串>
匹配串中可包含如下四种通配符: _:匹配任意一个字符; %:匹配0个或多个字符; [ ]:匹配[ ]中的任意一个字符; [^ ]:不匹配[ ]中的任意一个字符。
16
例.查询姓‘张’的学生的详细信息。
SELECT * FROM Student WHERE Sname LIKE '张%'
课程号 选课人数
c01
3
C02
4
c04
2
c05
3
c06
2
27
使用HAVING
HAVING子句用于对分组后的结果再进行过滤, 它的功能有点像WHERE子句,但它用于组而不是对 单个记录。在HAVING子句中可以使用计算函数,但 在WHERE子句中则不能。HAVING通常与GROUP BY子 句一起使用。 例.查询修了3门以上课程的学生的学号。
数据库原理及应用何玉洁第二版
3、联系 实体内部的联系通常是指组成实体的各属
性之间的联系,实体之间的联系通常是指不 同实体之间的联系. 联系是数据之间的关联集合,是客观存在的 应用语义链.联系用菱形框表示,框内写上 联系名,并用连线将联系框与它所关联的实 体连接起来.
12
实体型之间的联系分为三类:
✓一对一联系:如果实体A中
22
网状模型
是用以实体型为结点的有向图来表示各实体 及其之间的联系.特点:
1) 可以有一个以上的结点无父亲. 2) 至少有一个结点有多于一个的父亲. 能表示 M:N 联系. 缺点:编写应用程序复杂,模型结构复杂.
23
A
B
C
D
E
24
学生/选课/课程的网状数据模型
25
一、关系模型的数据结构
关系数据模型源于数学,它用二维表来 组织数据,而这个二维表在关系数据库中 就称为关系.关系数据库就是表或者说是 关系的集合.关系系统要求只让用户所感 觉的数据库就是一张张表.在关系系统中, 表是逻辑结构而不是物理结构.
S
ABC a1 b1 c1 a2 b2 c1 a2 b3 c2
R-S
ABC a1 b1 c2
31
(3)乘积(Cartesian Product)运算 ➢严格地讲应该是广义的笛卡尔积
➢R: n目关系,k1个元组 ➢S: m目关系,k2个元组 ➢R×S
列:(n+m)列元组的集合 元组的前n列是关系R的一个元组 后m列是关系S的一个元组
数据模型.
支持的组织模型
8
2.2 概念层数据模型
一、基本概念
实际上是现实世界到机器世界的一个中间层次. 概念层模型:是指抽象现实系统中有应用价值的
数据库原理及应用(何玉洁)第二版第3章-文档资料
11
用SQL语句创建SC表
列名
Sno Cno Grade XKLB
说明
学号 课程名 成绩 修课类别
sc表结构
数据类型
字符串,长度为7 字符串,长度为10 小整数 字符串,长度为4
约束
主码,引用Student的外码 主码,引用Course的外码
CREATE TABLE SC ( Sno char(7) NOT NULL, Cno char(10) NOT NULL, Grade smallint, XKLB char(4), PRIMARY KEY ( Sno, Cno ), FOREIGN KEY ( Sno ) REFERENCES Student ( Sno ), FOREIGN KEY ( Cno ) REFERENCES Course ( Cno ) )
ALTER TABLE 表名 ADD [ CONSTRAINT 约束名] FOREIGN KEY(<列名>) REFERENCES 引用表名(<列名>)
例3.为雇员表的工作编号添加外码引用约束, 此列引用工作表的工作编号列。
ALTER TABLE 雇员 ADD CONSTRAINT FK_job_id FOREIGN KEY (工作编号) REFERENCES 工作表 (工作编号)
第3章 SQL语言基础及数据定义功能
3.1 基本概念 3.2 SQL的数据类型 3.3 数据定义功能
1
3.1 基本概念
一、SQL语言特点
SQL语言集数据查询、数据操纵、数据 定义和数据控制功能于一身,其主要特点 包括: 一体化 高度非过程化 简洁 以多种方式使用
2
二、 SQL语言功能概述
19
作业参考答案_何玉洁_2013
第1章引言1、解释下列各词源语言:编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。
源程序: 用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译程序处理的对象。
目标程序: 目标程序是源程序经过翻译程序加工最后得到的程序。
目标程序(结果程序)一般可由计算机直接执行。
低级语言:机器语言和汇编语言。
高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。
如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。
翻译程序: 能够把某一种语言程序(源语言程序)改变成另一种语言程序(目标语言程序),后者与前者在逻辑上是等价的。
其中包括:编译程序,解释程序,汇编程序。
编译程序: 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言),然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。
解释程序: 以该语言写的源程序作为输入,但不产生目标程序。
按源程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称为解释程序。
2、什么叫“遍”?指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处理,称为一遍。
3、简述编译程序的基本过程的任务。
编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分5个阶段。
词法分析:输入源程序,进行词法分析,输出单词符号。
语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并判断输入串是否构成语法正确的“程序”。
中间代码生成:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码。
优化:对中间代码进行优化处理。
目标代码生成:把中间代码翻译成目标语言程序。
4、编译程序与解释程序的区别?编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。
数据库原理与应用 何玉洁编著 上机报告1
学号: 201211041026 姓名:刘畅班级:信息12-1 成绩:上机练习一、实验目的学会并掌握在SQL Sever2012 环境中创建用户数据库、关系表以及定义数据完整性约束的方法。
二、实验环境安装SQL Sever 2012的计算机一台。
三、实验内容1. 分别用图形化方法和CREATE DATABASE语句创建符合如下条件的数据库数据库的名字为:Students;数据文件的逻辑文件名诶:Students_dat,物理文件名为:Students.mdf,存放在“D:\Test”目录下(若D:中无此子目录,可先建立此目录,然后再创建数据库);文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB;日志文件的逻辑文件名字为:Students_log,物理文件名为:Students.ldf,也存放在“D:\Test”目录下;日志文件的初始大小为:2MB;日志文件的增长方式为自动增长,每次增加10%;2.分别用图形化方法和CREATE DATABASE 语句创建符合如下条件的数据库,次数据库包含两个数据文件和两个事务日志文件数据库的名字为:财务数据;数据文件1的逻辑文件名为:财务数据1,物理文件名为:财务数据1.mdf,存放在“D:\财务数据”目录下(若D:中无此目录,可先建立此目录,然后在创建数据库);文件的初始大小为:2MB;增长方式为自动增长,每次增加1MB;数据文件2的逻辑文件名为:财务数据2,物理文件名为:财务数据2.ndf,存放在与主数据文件相同的目录下;文件的初始大小为:3MB;增长方式为自动增长,每次增加10%。
日志文件为:日志文件1的逻辑文件名为:财务日志1,物理文件名为:财务日志1_log.ldf,存放在“D:\财务日志”目录下;初始大小为:1MB;增长方式为自动增长,每次增加10%;日志文件2的逻辑文件名为:财务日志2,物理文件名为:财物日志2_log.ldf,存放在“D:\财务日志”目录下;初始大小为2MB;增长方式为不自动增长。
数据库习题答案--何玉洁
第一部分基础理论第1章数据库概述1.试说明数据、数据库、数据库管理系统和数据库系统的概念。
数据:描述事务的符号记录数据库:存储数据的仓库数据库管理系统:用于管理和维护数据的系统软件数据库系统:计算机中引入数据库后的系统,包括数据库,数据库管理系统,应用程序,数据库管理员2.数据管理技术的发展主要经历了哪几个阶段?两个阶段,文件管理和数据库管理3.数据独立性指的是什么?应用程序不因数据的物理表示方式和访问技术改变而改变,分为逻辑独立性和物理独立性。
物理独立性是指当数据的存储结构或存储位置发生变化时,不影响应用程序的特性;逻辑独立性是指当表达现实世界的信息内容发生变化时,不影响应用程序的特性。
4.数据库系统由哪几部分组成?由数据库、数据库管理系统、应用程序、数据库管理员组成。
第2章数据模型与数据库系统的结构1.说明实体一联系模型中的实体、属性和联系的概念。
实体是具有公共性质的并可相互区分的现实世界对象的集合。
属性是实体所具有的特征或性质。
联系是实体之间的关联关系。
2.数据库系统包含哪三级模式?试分别说明每一级模式的作用。
外模式、模式和内模式。
外模式:是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同用户对数据的需求,保证数据安全。
模式:是数据库中全体数据的逻辑结构和特征的描述,它满足所有用户对数据的需求。
内模式:是对整个数据库的底层表示,它描述了数据的存储结构。
3.数据库管理系统提供的两级映像的作用是什么?它带来了哪些功能?两级映像是外模式/模式映像和模式/内模式映像。
外模式/模式映像保证了当模式发生变化时可以保证外模式不变,从而使用户的应用程序不需要修改,保证了程序与数据的逻辑独立性。
模式/内模式映像保证了当内模式发生变化,比如存储位置或存储文件名改变,可以保持模式不变,保证了程序与数据的物理独立性。
两级印象保证了应用程序的稳定性。
第3章关系数据库1.试述关系模型的三个组成部分。
数据结构、关系操作集合、关系完整性约束2.解释下列术语的含义:(1)主码当一个关系有多个候选码时,选择一个作为主码(2)候选码当一个属性或属性集的值能够唯一标识一个关系的元组,而又不包含多余的元素,则称该属性或属性集为候选码。
数据库原理与应用(何玉洁-梁琦编著)第五章课后习题答案
FROM SC2. SELECT Sname, SageFROM StudentWHERE (Sdept = '计算机系')3. SELECT Sno, Cno, GradeFROM SCWHERE (Grade BETWEEN 70 AND 80)4. SELECT Sname, SageFROM StudentWHERE (Sdept = '计算机系') AND (Ssex = '男')5. SELECT MAX(Grade) AS c01最高成绩FROM SCWHERE (Cno = 'c01')6. SELECT MAX(Sage) AS 最大年龄, MIN(Sage) AS 最小年龄FROM StudentWHERE (Sdept = '计算机系')7. SELECT Sdept, COUNT(*) AS 学生人数FROM StudentGROUP BY Sdept8. SELECT Cno, COUNT(*) AS 选课人数, MAX(Grade) AS 最高分FROM SCGROUP BY Cno9. SELECT Sno, COUNT(*) AS 选课门数, SUM(Grade) AS 总成绩FROM SCGROUP BY SnoORDER BY COUNT(*)10. SELECT Sno, SUM(Grade) AS 总成绩FROM SCGROUP BY SnoHA VING (SUM(Grade) > 200)11. SELECT Sname, SdeptWHERE (Sno IN(SELECT snoFROM scWHERE cno = 'c02'))12. SELECT s.Sname, o, SC.Grade FROM Student s INNER JOINSC ON s.Sno = SC.SnoWHERE (SC.Grade > 80)ORDER BY SC.Grade DESC13. SELECT Sno, Sname, SdeptFROM StudentWHERE (NOT EXISTS(SELECT *FROM scWHERE sc.sno = student.sno))或者 SELECT Sno, Sname, SdeptFROM StudentWHERE (Sno NOT IN(SELECT snoFROM sc))14. SELECT Cname, SemesterFROM CourseWHERE (Semester =(SELECT semesterFROM courseWHERE cname = 'VB'))或者SELECT ame, c2.SemesterFROM Course c1 INNER JOINCourse c2 ON c1.Semester = c2.Semester WHERE (ame = 'VB')15. SELECT s2.Sname, s2.Sdept, s2.Sage FROM Student s1 INNER JOINStudent s2 ON s1.Sage = s2.SageWHERE (s1.Sname = '李勇') AND (s2.Sname <> '李勇')或者SELECT Sname, Sdept, SageFROM StudentWHERE (Sage =(SELECT sageFROM studentWHERE sname = '李勇')) AND (Sname <> '李勇')16. SELECT TOP 2 WITH TIES Sname, SageFROM StudentWHERE (Sdept = '计算机系')ORDER BY Sage17. SELECT Student.Sname, Student.Sdept, SC.GradeFROM Student INNER JOINSC ON Student.Sno = SC.SnoWHERE (SC.Grade IN(SELECT TOP 2 WITH ties gradeFROM scWHERE cno =(SELECT cnoFROM courseWHERE cname = 'VB')ORDER BY grade DESC))或者SELECT TOP 2 WITH TIES Student.Sname, Student.Sdept, SC.Grade FROM Student INNER JOINSC ON Student.Sno = SC.Sno INNER JOINCourse ON o = oWHERE (ame = 'VB')ORDER BY SC.Grade DESC18. SELECT TOP 2 WITH TIES Sno, COUNT(*) AS 选课门数FROM SCGROUP BY SnoORDER BY COUNT(*) DESC19. SELECT TOP 1 WITH TIES Sdept, COUNT(*) AS 学生人数FROM StudentGROUP BY SdeptORDER BY COUNT(*) DESC20. (1)SELECT Sname, SdeptFROM StudentWHERE (Sno IN(SELECT snoFROM scWHERE cno = 'c01'))(2) SELECT Student.Sno, Student.Sname, o, SC.Grade FROM Student INNER JOINSC ON Student.Sno = SC.SnoWHERE (Student.Sno IN(SELECT snoFROM scWHERE grade > 80 AND sno IN(SELECT snoFROM studentWHERE sdept = '数学系')))(3)SELECT Student.SnameFROM Student INNER JOINSC ON Student.Sno = SC.SnoWHERE (SC.Grade =(SELECT MAX(grade)FROM scWHERE sno IN(SELECT snoFROM studentWHERE sdept = '计算机系')))(4)SELECT Student.Sname, Student.Sdept, o, SC.Grade FROM Student INNER JOINSC ON Student.Sno = SC.SnoWHERE (SC.Grade =(SELECT MAX(grade)FROM scWHERE cno =(SELECT cnoFROM courseWHERE cname = '数据结构')))21. SELECT Sname, SdeptFROM StudentWHERE (Sno NOT IN(SELECT snoFROM scWHERE cno =(SELECT cnoFROM courseWHERE cname = 'VB')))22. SELECT Sname, SsexFROM StudentWHERE (Sno NOT IN(SELECT snoFROM sc)) AND (Sdept = '计算机系')或者SELECT Sname, SsexFROM StudentWHERE (NOT EXISTS(SELECT *FROM scWHERE sno = student.sno)) AND (Sdept = '计算机系')23. SELECT Student.Sname, ameFROM Student INNER JOINSC ON Student.Sno = SC.Sno INNER JOINCourse ON o = oWHERE (Student.Sno =(SELECT TOP 1 WITH ties snoFROM scGROUP BY snoHA VING sc.sno IN(SELECT student.snoFROM studentWHERE sdept = '计算机系')ORDER BY A VG(grade) ASC))24. SELECT Cname, Semester, CreditFROM CourseWHERE (Cno IN(SELECT TOP 1 WITH ties cnoFROM scGROUP BY cnoORDER BY COUNT(*) ASC)) AND (Semester BETWEEN 1 AND 5)25. (1)INSERT INTO test_t(COL2)V ALUES ('B1')(2)INSERT INTO test_t(COL1, COL2, COL3)V ALUES (1, 'B2', 'C2')(3)INSERT INTO test_t(COL1, COL2)V ALUES (2, 'B3')26. DELETE FROM SCWHERE (Grade < 50)27. DELETE FROM CourseWHERE (Cno NOT IN(SELECT cnoFROM sc))或者DELETE FROM CourseWHERE (NOT EXISTS(SELECT *FROM scWHERE cno = o))28. DELETE FROM SCWHERE (Grade < 60) AND (Sno IN(SELECT snoFROM studentWHERE sdept = '计算机系')) AND (Cno IN (SELECT cnoFROM courseWHERE cname = 'VB'))29. DELETE FROM SCWHERE (Grade =(SELECT MIN(grade)FROM scWHERE cno =(SELECT cnoFROM courseWHERE cname = 'VB')))30. UPDA TE CourseSET Credit = Credit + 2WHERE (Semester = 2)31. UPDA TE CourseSET Credit = 3WHERE (Cname = 'VB')32. UPDA TE StudentSET Sage = Sage + 1WHERE (Sdept = '计算机系')33. UPDA TE SCSET Grade = Grade + 5WHERE (Sno IN(SELECT snoFROM studentWHERE sdept = '信息系')) AND (Cno IN (SELECT cnoFROM courseWHERE cname = '计算机文化学'))34. UPDA TE CourseSET Credit = Credit - 1WHERE (Cno =(SELECT TOP 1 oFROM scGROUP BY cnoORDER BY COUNT(*)))。
数据库习题答案--何玉洁
第一部分基础理论第1章数据库概述1.试说明数据、数据库、数据库管理系统和数据库系统的概念。
数据:描述事务的符号记录数据库:存储数据的仓库数据库管理系统:用于管理和维护数据的系统软件数据库系统:计算机中引入数据库后的系统,包括数据库,数据库管理系统,应用程序,数据库管理员2.数据管理技术的发展主要经历了哪几个阶段?两个阶段,文件管理和数据库管理3.数据独立性指的是什么?应用程序不因数据的物理表示方式和访问技术改变而改变,分为逻辑独立性和物理独立性。
物理独立性是指当数据的存储结构或存储位置发生变化时,不影响应用程序的特性;逻辑独立性是指当表达现实世界的信息内容发生变化时,不影响应用程序的特性。
4.数据库系统由哪几部分组成?由数据库、数据库管理系统、应用程序、数据库管理员组成。
第2章数据模型与数据库系统的结构1.说明实体一联系模型中的实体、属性和联系的概念。
实体是具有公共性质的并可相互区分的现实世界对象的集合。
属性是实体所具有的特征或性质。
联系是实体之间的关联关系。
2.数据库系统包含哪三级模式?试分别说明每一级模式的作用。
外模式、模式和内模式。
外模式:是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同用户对数据的需求,保证数据安全。
模式:是数据库中全体数据的逻辑结构和特征的描述,它满足所有用户对数据的需求。
内模式:是对整个数据库的底层表示,它描述了数据的存储结构。
3.数据库管理系统提供的两级映像的作用是什么?它带来了哪些功能?两级映像是外模式/模式映像和模式/内模式映像。
外模式/模式映像保证了当模式发生变化时可以保证外模式不变,从而使用户的应用程序不需要修改,保证了程序与数据的逻辑独立性。
模式/内模式映像保证了当内模式发生变化,比如存储位置或存储文件名改变,可以保持模式不变,保证了程序与数据的物理独立性。
两级印象保证了应用程序的稳定性。
第3章关系数据库1.试述关系模型的三个组成部分。
数据结构、关系操作集合、关系完整性约束2.解释下列术语的含义:(1)主码当一个关系有多个候选码时,选择一个作为主码(2)候选码当一个属性或属性集的值能够唯一标识一个关系的元组,而又不包含多余的元素,则称该属性或属性集为候选码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一部分基础理论第1章数据库概述1.试说明数据、数据库、数据库管理系统和数据库系统的概念。
数据:描述事务的符号记录数据库:存储数据的仓库数据库管理系统:用于管理和维护数据的系统软件数据库系统:计算机中引入数据库后的系统,包括数据库,数据库管理系统,应用程序,数据库管理员2.数据管理技术的发展主要经历了哪几个阶段?两个阶段,文件管理和数据库管理3.数据独立性指的是什么?应用程序不因数据的物理表示方式和访问技术改变而改变,分为逻辑独立性和物理独立性。
物理独立性是指当数据的存储结构或存储位置发生变化时,不影响应用程序的特性;逻辑独立性是指当表达现实世界的信息内容发生变化时,不影响应用程序的特性。
4.数据库系统由哪几部分组成?由数据库、数据库管理系统、应用程序、数据库管理员组成。
第2章数据模型与数据库系统的结构1.说明实体一联系模型中的实体、属性和联系的概念。
实体是具有公共性质的并可相互区分的现实世界对象的集合。
属性是实体所具有的特征或性质。
联系是实体之间的关联关系。
2.数据库系统包含哪三级模式?试分别说明每一级模式的作用。
外模式、模式和内模式。
外模式:是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同用户对数据的需求,保证数据安全。
模式:是数据库中全体数据的逻辑结构和特征的描述,它满足所有用户对数据的需求。
内模式:是对整个数据库的底层表示,它描述了数据的存储结构。
3.数据库管理系统提供的两级映像的作用是什么?它带来了哪些功能?两级映像是外模式/模式映像和模式/内模式映像。
外模式/模式映像保证了当模式发生变化时可以保证外模式不变,从而使用户的应用程序不需要修改,保证了程序与数据的逻辑独立性。
模式/内模式映像保证了当内模式发生变化,比如存储位置或存储文件名改变,可以保持模式不变,保证了程序与数据的物理独立性。
两级印象保证了应用程序的稳定性。
第3章关系数据库1.试述关系模型的三个组成部分。
数据结构、关系操作集合、关系完整性约束2.解释下列术语的含义:(1)主码当一个关系有多个候选码时,选择一个作为主码(2)候选码当一个属性或属性集的值能够唯一标识一个关系的元组,而又不包含多余的元素,则称该属性或属性集为候选码。
(3)外码设F是关系R的一个或一组属性,但不是关系R的主码,如果F与关系S的主码相对应,则称F是关系R的外码。
(4)关系(5)关系模式二维表的结构3.关系数据库的三个完整性约束是什么?各是什么含义?实体完整性:关系数据库中每个关系都必须有主码,且主码值不能为空,不能重复。
参照完整性:指多个实体或表之间的关联关系,规则是外码或者值为空,或者等于所参照关系的主码值。
用户定义完整性:指明关系中属性的取值范围。
4.连接运算有哪些?等值连接和自然连接的区别是什么?等值连接,自然连接区别:1.自然连接要求相等的分量必须有相同的属性名,等值连接不要求2.自然连接要求把重复的属性名去掉,等值连接不要求。
第4章SQL语言基础及数据定义功能1.数据完整性的含义是什么?指数据的正确性和相容性。
2.写出创建如下表的SQL语句,要求在定义表的同时定义数据的完整性约束:(1)“图书表”结构如下:书号:统一字符编码定长类型,长度为6,主码;书名:统一字符编码可变长类型,长度为30,非空;第一作者:普通编码定长字符类型,长度为10,非空;出版日期:小日期时间型,价格:定点小数,小数部分1位,整数部分3位。
Create table book(bno nchar(6) primary key,bname nvarchar(30) not null,fauther char(10) not null,date smalldatetime,price numeric(4,1))第5章数据操作语句利用定义的Student、Course和SC表结构实现如下操作,并根据表提供的数据观察各语句执行情况。
Student表:Course表SC表:1.查询学生选课表中的全部数据。
Select * from student2.查询计算机系学生的姓名、年龄。
Select sname , sage from student where sdept =’计算机系’3.查询成绩在70~80的学生的学号、课程号和成绩。
Select sno, cno, grade from sc where grade between 70 and 804.计算机系年龄在18~20的男生的姓名、年龄。
Select sname, sage from student where sdept=’计算机系’and sagebetween 18 and 20 and ssex=’男’5.查询“c01”课程的最高成绩。
Select max(grade) from sc where cno=’c01’6.查询计算机系学生的最大年龄和最小年龄。
select max(sage), min(sage) from s where sdept=’计算机系’7.统计每个系的学生人数。
select sdept, count(*) from s group by sdept8.统计每门课程的选课人数和考试最高分。
Select cno, count(sno), max(grade) from sc group by cno9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。
Select sno, count(cno) 选课门数, sum(grade) 考试总成绩from s group by snoorder by 选课门数asc10.查询总成绩超过200分的学生,要求列出学号、总成绩。
Select sno, sum(grade) from sc group by sno having sum(grade)>200 11.查询选修了“c02”课程的学生的姓名和所在系。
Select s.sname, sdept from student s join sc on s.sno=sc.sno12.查询成绩80分以上的学生的姓名、选的课程号和成绩,并按成绩降序排列结果。
Select sname, cno, grade from student s join sc on s.sno=sc.sno where grade >80 order by grade desc13.查询哪些学生没有选课,要求列出学号、姓名和所在系。
Select sno, sname, sdept from s join sc on s.sno=sc.sno where cno is null 14.查询与VB在同一学期开设的课程的课程名和开课学期。
Select ame, c2.credit from course c1 join course c2 on c1.credit=c2.credit where ame=’VB’ and ame != ’VB’15.查询与李勇年龄相同的学生的姓名、所在系和年龄。
Select s2.sname, s2.sdept, s2.sage from student s1 join student s2 on s1.sage=s2.sage where s1.sname = ’李勇’ and s2.sname != ‘李勇’16.查询计算机系年龄最小的2名学生的姓名和年龄。
Select top 2 with ties sname, sage from s where sdept = ‘计算机系’order by sage asc17.查询VB考试成绩最高的前2名学生的姓名、所在系和VB成绩,包括并列的情况。
18.查询选课门数最多的前2名学生的学号和选课门数,包括并列的情况。
19.查询学生人数最多的系,列出系名和人数。
20.用子查询实现如下查询:(l)查询选修了“c01”课程的学生姓名和所在系。
Select sname,sdept from studentWhere sno in (select sno from s c where cno = ‘C01’)(2)查询数学系成绩80分以上的学生的学号、姓名、选的课程号和成绩。
Select sno,sname,cno,grade from student join sc on s.sno=sc.sno Where sdept =‘数学系’and sno in (Select sno from sc where grade > 80)(3)查询计算机系考试成绩最高的孛学生的姓名。
Select sname from student s join sc on s.sno = sc.snoWhere sdept = ‘计算机系’and grade = (Select max(grade) from sc join student s on s.sno=sc.snoWhere sdept = ‘计算机系’)21.创建一个新表,表名为test_t,其结构为(COLI,COL2,COL3),其中:COL1:整型,允许空值。
COL2:字符型,长度为10,不允许空值。
COL3:字符型,长度为10,允许空值。
试写出按行插入如下数据的语句(空白处表示空值)。
Create table test_t(COL1 int,COL2 char(10) not null,COL3 char(10))Insert into test_t(COL2) values(’B1’)Insert into test_t(COL1,COL2) values(1,’B2’)Insert into test_t values(2,’B3’,NULL)22.删除考试成绩低于50分的学生的该门课程的选课记录。
Delete from sc where grade < 5022.删除没有人选的课程记录。
Delete from course where cno not in(Select cno from course)23.删除计算机系VB成绩不及格学生的VB选课记录。
Delete from scFrom sc join student s on s.sno = sc.snoJoin course c on o = owhere cname = ‘VB’ and grade < 60and sdept = ‘计算机系’24.删除VB考试成绩最低的学生的VB选课记录。
Delete from scFrom sc join student s on s.sno = sc.snoJoin course c on o = owhere cname = ‘VB’and grade = (select min(grade) from sc join student on sc.sno=s.snowhere cname = ‘VB’ )25.将第2学期开设的所有课程的学分增加2分。