数据库实验5答案
数据库实验内容-答案
实验内容:实验一:数据库的操作使用Management Studio和sql语句分别完成以下操作:1.创建一个名为“SM”的数据库,数据文件初始大小为3MB,最大为50MB,数据库自动增长,增长方式按10%;日志文件初始大小为2MB,数据大小不受限制,按1MB增长。
create database smon(name='smdata',filename='e:\smdata.mdf',size=3,maxsize=50,filegrowth=10%)log on(name='smlog',filename='e:\smlog.ldf',size=2,maxsize=unlimited,filegrowth=1)2.修改数据库“SM”,将数据文件名改成“sm_data”,初始大小改成5MBalter database smmodify file( name='smdata',newname='sm_data',size=5)3.分别查看数据库“SM”,该数据库中的文件和文件组。
exec sp_helpfile smexec sp_helpfilegroup sm4.删除数据库“SM”。
drop database sm实验二:创建表1. 在数据库SM中创建学生表student,课程表course,选课表scstudent(sid,sno,clno,sname,ssex,sage,sbir)说明:sid int identity(1,1) 序号sno 为主关系键,为字符类型学号clno 字符类型,班级号sname 字符类型,并不为空ssex 字符类型,check的值的范围为男女sbir 日期类型出生日期sage int;use smcreate table student( sid int identity(1,1),sno char(10) constraint pk_st primary key,clno char(10),sname varchar(20) not null,ssex char(2) constraint ck_ssex check(ssex in('男','女')),sbir datetime,sage int)course(cno,cname,ccredits,ctno,cpno,ctime)说明:cno 字符类型,主关系键cname 字符类型,唯一键ccredits 学分,精确数值型,精确长度为2,小数位为1ctno ,cpno 字符类型ctime 整型create table course(cno char(4) constraint pk_c primary key,cname varchar(20) constaint uk_cname unique,ccredit decimal(2,1),ctno char(2),cpno char(4),ctime tinyint)sc(sno,cno,score)说明:sno+cno为主键,并且sno是student的外部键,cno是course的外部键。
大学 mysql实验报告(五)附答案
实验报告(五)专业:班级:学号:姓名:实验名称:数据库的子查询、组合查询实验报告内容:1、写出习题3第75页第6题的2)3)5)6)小题的SQL语句2)查询读者的读者号、姓名、借阅的图书名、借出日期、归还日期。
SELECT 读者.读者号,姓名,书名,借出日期,归还日期FROM 读者, 图书,借阅WHERE 读者.读者号= 借阅.读者号AND 图书.图书号=借阅.图书号3)查询借阅了机械工业出版社出版,并且书名中包含’数据库’三个字的图书的读者,显示读者号、姓名、书名、出版社,借出日期、归还日期。
SELECT 读者.读者号,姓名,书名,出版社,借出日期,归还日期FROM 读者,图书,借阅WHERE 读者.读者号= 借阅.读者号AND 图书.图书号=借阅.图书号AND 出版社=‘机械工业出版社’ AND 书名LIKE’%数据库%’5)查询与’王平’的办公电话相同的读者的姓名。
SELECT R2.姓名FROM 读者R1, 读者R2where R1.办公电话= R2.办公电话AND R1.姓名='王小平'此语句等价与:SELECT 姓名FROM 读者WHERE 办公电话=(SELECT 办公电话FROM 读者WHERE 姓名='王小平')6)查询办公电话为’88320701’的所有读者的借阅情况,要求包括借阅了书籍的读者和没有借阅的读者,显示他们的读者号、姓名、书名、借阅日期。
SELECT 读者.读者号,姓名,图书号,借出日期FROM 读者, 借阅WHERE 读者.读者号*=借阅.读者号AND 办公电话=‘88320701’上述左外连接可可以用右外连接等价表示:SELECT 读者.读者号,姓名,图书号,借出日期FROM 读者,借阅WHERE 借阅.读者号=* 读者.读者号AND 办公电话=‘88320701’在SQLSERVER2000中,以上左外连接还可等价表示为:SELECT 读者.读者号,姓名,图书号,借出日期FROM 读者LEFT JOIN 借阅ON 读者.读者号= 借阅.读者号WHERE 办公电话=‘88320701’或者用右连接表示为:SELECT 读者.读者号,姓名,图书号,借出日期FROM 借阅RIGHT JOIN 读者ON 借阅.读者号= 读者.读者号WHERE 办公电话=‘88320701’2、写出习题3第75页第7题的1)2)4)8)小题的SQL语句1)查询所有单价小于平均单价的图书号、书名、出版社SELECT 图书号,书名,出版社FROM 图书WHERE 单价< (SELECT A VG(单价)’平均单价’ FROM 图书)2)查询’科学出版社’的图书中单价比’机械工业出版社’最高单价还高的的图书书名、单价。
参考答案数据库技术实验指导
《数据库技术(SQL Server 2005)》实验指导 / 学年第学期姓名:______________学号:______________班级:______________指导教师:______________计算机科学与工程学院2010目录目录 2实验一 SQl Server 2005常用工具使用 3实验二数据的简单查询 6实验三数据的复杂查询12实验四管理数据库和表错误!未定义书签。
实验五操纵表中数据错误!未定义书签。
实验六 SQL Server程序设计错误!未定义书签。
实验七存储过程和自定义函数错误!未定义书签。
实验八视图和索引错误!未定义书签。
实验九触发器错误!未定义书签。
实验十数据库设计错误!未定义书签。
实验一SQl Server 2005常用工具使用一、实验目的1 . 了解SQl Server 2005包含的主要组件及其功能;2 .了解SQl Server 2005的配置管理工具;3 .熟悉SQl Server管理工作室的界面及基本使用方法;4 .了解联机帮助文档的使用,熟悉示例数据库adventureworks;5. 掌握select语句实现简单查询。
二、实验预习1 .SQL Server 各组件的主要功能是什么?2、如何安装SQL Server 2005?三、实验内容和要求1 .通过“开始”→“程序”→Microsoft SQL Server2005→“配置工具”→SQL Server Configuration Manager,打开“SQL Server配置管理工具”窗口,选择SQL Server 服务.并且通过该窗口“启动”和“停止” SQL Server 服务。
2 .通过“开始”→“程序”→Microsoft SQL Server2005→“SQL Server Management Studio”打开管理工作室窗口。
3 .打开本地服务器的属性对话框,在常规中查看以下信息:产品名称、主机操作系统、产品的版本、操作平台、主机内存等.4 .利用管理工作室访问系统自带的示例数据库adventureworks。
实验5数据库的安全性控制(含答案)
实验五数据库的安全性控制一、实验目的:1. 通过实验加深对数据安全性的理解,并掌握SQL Server中有关用户登录的认证以及管理办法;2. 通过实验加深对数据库存储控制机制的理解,通过自主存取控制进行权限管理,熟悉SQL Server中角色管理;3.通过实验加深对数据安全性的理解,熟悉视图机制在自主存取控制上的应用。
二、实验内容1.设置SQL Server的混合安全认证模式。
在SQL Server中的对象资源管理器中设置安全认证模式。
2.在SQL Server中,利用“对象资源管理器”创建一个名为“U1”的登录用户和数据库用户,密码为111,并允许其登录S-T数据库。
3.在SQL Server中,利用代码创建一个名为“U2”的登录用户,密码为111;其相应的数据库用户名为lucky,并允许其登录S-T数据库。
4.用“u1”用户名登录后,执行对students表的查询操作,说明执行结果,并分析原因(建议:在启动一个SQL Server 2008窗口)。
分析:没有对u1进行其他操作的授权,只能登录而不能进行插入,修改等操作5.将students表的操作权限select和insert赋予数据库用户u1,并允许其向其它用户授权。
6.以“u1”用户名登录,执行对students和teacher表的查询操作,将该运行结果进行分析。
分析:对比第4题,对U1进行授权后可以进行相应的操作7.执行下列代码后,分析用户u2能否对s_t数据库的student表进行select 和update操作,为什么?并用相应的语句验证。
分析:首先grant给public组赋予了查询,插入,更新权限,然后给lucky用户赋予了对S表的所有权限,然后又revoke收回了lucky的权限,但并没有收回public组的权限,而deny却收回了lucky的更新权限,故查询可实现,而更新不可实现8.以sa登录数据库,在s_t数据库的stc表上创建选修了课程B001的视图st_view。
数据库实验五答案
数据库实验五答案1.创建一个存储过程,查看001号课程的选修情况,包括学生学号、姓名和成绩,然后执行该过程;create procedure s11asselect student.sno,sname,scorefrom student join sc on student.sno=sc.snowhere cno='001'goexecute s112.创建一个存储过程,通过学生学号来查询学生选修情况,包括学生学号、姓名和成绩,然后执行该过程;create procedure s12 @cnumber char(5)asselect student.sno,sname,scorefrom student join sc on student.sno=sc.snowhere student.sno= @cnumbergoexecute s12 '00001'3.创建一个存储过程,通过学生学号来查询学生选修情况,默认查询学号为00001的选修情况,包括学生学号、姓名和成绩,然后执行该过程;create procedure s13 @cnumber char(5)='00001'asselect student.sno,sname,scorefrom student join sc on student.sno=sc.snowhere student.sno= @cnumbergoexecute s13 '00005'execute s134.创建一个存储过程,获得选修某门课程的总人数,然后在执行该过程后把总人数显示出来;create procedure s14 @cnumber char(5),@ccount int outputasselect @ccount=count(*) from sc where o=@cnumbergodeclare @ccount intexecute s14 '001' ,@ccount outputselect @ccount5.创建一个存储过程,通过学号和课程号进行成绩查询,如果查询结果为空,则显示“该学生没有选这门课”,返回0,如果查询结果低于60分,则显示“该学生考试成绩不及格”,返回1,如果查询结果在60-85之间,则显示“该学生考试成绩为良”,返回2,如果查询结果大于85,则显示“该学生考试成绩为优秀”,返回3,然后执行该过程查询学号00001的选课成绩,并把返回结果显示出来。
数据库原理及应用实验指导书答案
数据库原理及应用实验指导书 - 答案实验一:数据库管理系统的安装与配置问题一数据库管理系统(DBMS)是一种软件,用于管理和组织数据库。
它允许用户创建,读取,更新和删除数据库中的数据。
常见的数据库管理系统有MySQL,Oracle,SQL Server等。
问题二在实验室环境中,我们将使用MySQL作为我们的数据库管理系统。
以下是MySQL的一些常见特点: - 开源免费 - 跨平台支持 - 可扩展性强 - 有大型的用户社区和丰富的资源支持问题三MySQL的安装步骤如下: 1. 下载MySQL安装文件,可以从MySQL官方网站或者其他可信的下载源获取。
2. 运行安装程序,按照向导的指示进行安装。
3. 选择是否要安装MySQL 服务器和MySQL工具。
4. 设置密码以保护数据库的安全。
5. 完成安装程序并启动MySQL服务。
数据库是一个组织和存储数据的容器。
在关系型数据库中,数据以表的形式存储,每个表包含多个行和列。
每行代表一个记录,每列代表一个字段。
问题五关系型数据库管理系统(RDBMS)是一种DBMS,它使用结构化查询语言(SQL)来操作和处理数据。
常见的关系型数据库管理系统有MySQL,Oracle,SQL Server等。
问题六开放数据库连接(ODBC)是一种标准的数据库访问方法,它允许不同的应用程序通过统一的接口访问不同的数据库管理系统。
ODBC驱动程序充当应用程序和数据库之间的翻译器。
问题七在Windows系统中,ODBC数据源可以通过控制面板的“管理工具”来配置。
在数据源配置对话框中,可以添加,编辑和删除ODBC数据源。
在Windows系统中,可以使用ODBC接口库和ODBC驱动程序来连接和操作数据库。
具体步骤如下: 1. 加载ODBC接口库。
2. 初始化ODBC环境。
3. 建立数据库连接。
4. 执行SQL语句。
5. 关闭数据库连接。
6. 释放ODBC环境。
问题九ODBC接口库是一组API函数,用于连接和操作数据库。
数据库技术实验报告的答案
数据库技术实验报告的答案实验目的:本次实验旨在加深对数据库管理系统(DBMS)的理解,掌握数据库设计、实现和查询的基本技能,并通过实际操作来熟悉SQL语言的运用。
实验环境:1. 操作系统:Windows 102. 数据库管理系统:MySQL 8.03. 开发工具:Visual Studio Code实验内容:1. 数据库的创建与设计2. 数据表的创建与数据类型选择3. 数据的插入、更新与删除4. SQL查询语句的编写与执行5. 数据库的备份与恢复实验步骤与结果:1. 数据库的创建与设计:- 使用MySQL命令行工具创建名为“StudentsDB”的数据库。
- 设计了三个表:Students(学生信息),Courses(课程信息),Enrollments(选课信息)。
2. 数据表的创建与数据类型选择:- 为Students表创建字段:StudentID(INT,主键),Name (VARCHAR(50)),Age(INT),Gender(CHAR(1))。
- 为Courses表创建字段:CourseID(INT,主键),CourseName (VARCHAR(100)),Credits(INT)。
- 为Enrollments表创建字段:EnrollmentID(INT,主键),StudentID(INT),CourseID(INT),Grade(CHAR(2)),并设置StudentID和CourseID为外键。
3. 数据的插入、更新与删除:- 向Students表插入了10条学生记录。
- 向Courses表插入了5门课程记录。
- 通过Enrollments表记录了学生的选课情况,包括成绩。
- 使用UPDATE语句更新了学生的选课成绩。
- 使用DELETE语句删除了某些学生的选课记录。
4. SQL查询语句的编写与执行:- 编写了多条SELECT语句,查询了学生信息、课程信息以及学生的选课情况。
- 使用了JOIN操作查询了学生与其选修课程的关联信息。
数据库上机实验答案5
数据库上机实验答案 5学号:姓名:日期:年月日实验目的:综合练习所学的SQL语言。
学习日期函数。
实验内容:基于提供的食堂交易记录trans表,进行查询,记录SQL语句及查询结果。
食堂交易记录表trans的数据说明如下:trans食堂交易记录(stuID,学生学号posID,刷卡机编号transTime,交易时间transValue,交易金额)1 食物销量大比拼创建一张表格posSummary,表格内容如下: pos机编号,就餐人数,刷卡次数,销售金额,平均每次刷卡金额。
以pos机编号为主键。
利用insert语句填充数据。
选择并展示posSummary中销售金额前10的pos机。
2 评选食堂忠实粉丝创建一个视图stuSummary,视图内容如下:学生ID,刷卡次数,刷卡总金额,刷卡平均金额。
基于创建的视图,分别找出刷卡次数最多、刷卡总金额最多、刷卡平均金额最多的同学。
3 学习日期函数datepart执行如下语句。
将执行结果复制到excel中,绘制散点图。
解释图的意思。
select datepart(hour,transtime)*60+datepart(minute,transtime)as minuteOfDay,count(*) as freq from trans group by datepart(hour,transtime)*60+datepart(minute,transtime) order by datepart(hour,transtime)*60+datepart(minute,transtime)其中,日期函数datepart(hour,transtime)的意思是将transtime中小时的部分取出来。
4 就餐规律研究计算某一天是星期几的方法如下:datepart(weekday,transtime),其计算结果周日为1,周一为2,周六为7。
基于题3中的方法,绘制上课日(周一到周五)学生的就餐规律和休息日(周六、周日)学生的就餐规律图。
数据库原理与应用实验作业参考答案
数据库原理与应用实验报告参考答案实验1 数据库的建立修改与删除实验2 表结构的建立修改删除及完整性约束条件定义实验3 数据查询与更新完成以下实验报告:《数据库原理与应用》实验报告一、实验题目实验3 数据查询与更新二、实验环境操作系统:Windows XP。
数据库管理系统:MS SQL Server 2000或MS SQL Server 2008。
三、实验目的1.掌握SELECT语句的语法、语义及语用。
2.掌握基于单表的查询方法。
3.掌握基于多表的查询方法。
4.掌握相关与不相关的嵌套查询。
5.掌握集合查询。
6.掌握插入(INSERT)、修改(UPDATE)和删除(DELETE)语句的使用。
四、实验内容(一) 规定内容1. 单表查询USE ST--[3_1]查询全体学生的详细记录。
select * from student--[3_2]查询选修了课程的学生学号。
SELECT DISTINCT sno FROM sc--[3_3]将“学生”表中的sno、sname这2列合并为1列snosname输出(不改变表中存储的内容),其余列不变。
select sno+sname snosname,ssex,sage,sdeptfrom student--[3_4]查询年龄不在20~23岁之间的学生姓名、系别和年龄。
方法1:SELECT sname,sdept,sageFROM studentWHERE sage NOT BETWEEN 20 AND 23;方法2:SELECT sname,sdept,sageFROM studentWHERE sage<20 or sage>23;--[3_5] 查询计算机科学系(cs)、数学系(ma)和信息系(is)学生的姓名和性别。
SELECT sname,ssexFROM studentWHERE sdept IN ( 'cs','ma','is' );--[3_6]查询所有姓“刘”学生的姓名、学号和性别。
数据库及应用实训答案第五版
数据库及应用实训答案第五版1.下列各运算符中()不属于逻辑运算符. [单选题] *A. &(正确答案)B. notC. andD. or2.聚合函数不可以用在下列哪个语句中(). [单选题] *A. SELECT子句B. HAVING子句C. WHERE子句D. 子查询(正确答案)3.主数据文件的默认扩展名为(). [单选题] *A. MDF(正确答案)B. NDFC. LDFD. DBF4.在T-SQL语法中,用来插入的命令是(). [单选题] *A. UPDATEB. DELECTC. CREATED. INSERT(正确答案)5.在SQL语言中,授权的操作是通过()语句实现. [单选题] *A. CREATEB. REVOKEC. GRANT(正确答案)D. INSERT6.删除一个名为“XS”的数据表,使用命令:(). [单选题] *A. DELETE VIEW XSB. ALTER VIEW XSC. DELETE TABLE XSD. DROP TABLE XS(正确答案)7.在查询分析器窗口的“选项”对话框中的“常规”选项卡中,“查询文件扩展名”的默认扩展名是(). [单选题] *A. rptB. sql(正确答案)C. tqlD. trc8.以下哪一个是删除查询结果重复行的关键词(). [单选题] *A. havingB. unionC. distinct(正确答案)D. exists9.在“连接”组中有两种连接认证方式,其中在()方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码. [单选题] *A. Windows身份验证B. SQL Server 身份验证(正确答案)C. 以超级用户身份登录时D. 其他方式登录时10.SQL Server的主数据库是(). [单选题] *A. MASTER(正确答案)B. TEMPDBC. MODEL DD. MSDB11.主键约束用来强制数据的()完整性. [单选题] *A. 域B. 实体(正确答案)C. 参照D. ABC都可以12.一个仓库可以存放多种产品,一种产品只能存放于一个仓库中.仓库与产品之间的联系类型是(). [单选题] *A. 一对一的联系B. 多对一的联系C. 一对多的联系(正确答案)D. 多对多的联系13.()是长期存储在计算机内的有组织,可共享的数据集合. [单选题] *A. 数据库管理系统B. 数据库系统C. 数据库(正确答案)D. 文件组织14.数据库中只存放视图的(). [单选题] *A. 操作B. 对应的数据C. 定义(正确答案)D. 限制15.触发器可以创建在()中. [单选题] *A. 表(正确答案)B. 视图C. 数据库D. 查询16.要删除一个名为A1的过程,用命令:()Procedure A1. [单选题] *A. DeleteB. AlterC. Drop(正确答案)D. Execute17.触发器可引用视图或临时表,并产生两个特殊的表()和(). [单选题] *A. Deleted ,Inserted(正确答案)B. Delete,InsertC. View,TableD. View1,table118.当删除()时,与它关联的触发器也同时被删除. [单选题] *A. 视图B. 临时表C. 过程D. 表(正确答案)19.数据库设计中的概念结构设计的主要工具是(). [单选题] *A. 数据模型B. E—R模型(正确答案)C. 新奥尔良模型D. 概念模型20.数据库应用系统是由数据库.数据库管理系统(及其开发工具).应用系统.()和用户构成. [单选题] *A. DBMSB. DBC. DBSD. DBA(正确答案)21、E-R模型的三要素分别是______、______、实体间的联系。
数据库实验五题目答案
数据库实验五题目答案实验五实验数据查询1)要求以School数据库为例,在该数据库中存在四张表格,分别为:表STUDENTS(sid, sname, email, grade);表TEACHERS(tid, tname, email, salary);表COURSES(cid, cname, hour);表CHOICES(no, sid, tid, cid, score)在数据库中,存在这样的关系:学生可以选择课程,一个课程对应一个教师。
在表CHOICES 中保存学生的选课记录。
按以下要求对数据库进行查询操作:(1)查询年级为2001的所有学生的名称并按编号升序排列。
程序:Select snamefrom studentswhere grade='2001'order by sid asc;(2)查询学生的选课成绩合格的课程成绩。
程序:Select scorefrom choiceswhere score>'59';(3)查询课时是48或60的课程的名称。
程序:select cnamefrom courseswhere hour='48'or hour='60';(4)查询所有课程名称中含有data的课程编号。
程序:select cidfrom courseswhere cname like'%data%';(5)查询所有选课记录的课程号(不重复显示)。
程序:select distinct cidfrom choices;(6)统计所有教师的平均工资。
程序:select avg(salary)from teachers;(7)查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列。
程序:select tid,avg(score)from choicesGROUP BY tidorder by avg(score)desc;(8)统计各个课程的选课人数和平均成绩。
实验5-数据库的简单查询操作答案
实验5 数据库的高级查询操作(一)一、实验目的1.掌握使用查询分析器的使用方法。
2.掌握使用SELECT语句进行数据库单表的高级查询。
3.掌握使用SELECT语句的GROUP BY子句的使用方法。
4.掌握使用SELECT 语句的嵌套查询方法。
5.掌握使用SELECT语句的UNION 合并查询方法。
一、实验内容从查询分析器中导入实验文件夹中的“实验5 数据库的简单查询操作初始化数据.sql ”文件并运行,然后完成下面题目:(提示:学生信息表(Students):属性:学号(Sno),姓名(Sname),性别(Ssex),系别(Sdept),年龄(Sage)。
其中学号设为主键,学号和姓名不能为空,性别取值只能是F或M,系别缺省值为“计算机”。
选课信息表(Enrollment)。
属性:学号(Sno),课程名(Cno),成绩(Grade)。
其中课程号设为主键,课程号和课程名不能为空.。
课程信息表(Course)。
属性:课程号(Cno),课程名称(Cname),学分(Credits)。
)(1)从学生信息表中查询所有学生的所有信息。
SQL代码如下:SELECT *FROM Students(2)从学生信息表中查询所有学生的姓名和学号信息并分别赋予一个中文列名。
SQL代码如下:SELECT Sname AS '姓名', Sno AS '学号'FROM Students(3)从学生信息表中查询姓名是‘Allen’的学生的所有信息。
SQL代码如下:SELECT *FROM StudentsWHERE Sname = 'Allen'(4)从学生信息表中查询学号在1101到1199之间的所有学生的信息SQL代码如下:SELECT *FROM StudentsWHERE Sno BETWEEN 1101 AND 1199(5)从学生信息表中查询年龄小于在18和大于20的所有学生的学号和姓名。
山东大学2012年数据库实验5答案
1.首先开两个不同的浏览器,我用的是safari和opera(chrome / IE什么的只要能登录都可以)safari登录名userb2011……,作为备用账户;opera登录名user2011……,作为主账户。
两个用户都关闭自动提交。
//2011……是自己的学号2.备用账户:CREATE TABLE test5_00 ASSELECT * FROM pub.teacherupdate test5_00 set age=age+1Rollbackselect * from test5_00grant all on userb2011…….test5_00 to user2011……主账户:select * from userb2011…….test5_00备用账户:Update test5_00 set age=age-2select * from test5_00主账户:select * from userb2011…….test5_00commit备用账户:select * from test5_00主账户:SELECT * FROM userb2011…….test5_00备用账户:Commitselect * from test5_00主账户:SELECT * FROM userb201100130078.test5_00Rollback备用账户:select * from test5_00主账户:SELECT * FROM userb201100130078.test5_003.主账户:(勾选上自动提交)create table test5_10(test varchar(20),age numeric (3))insert into test5_10 values ('结果1',88)insert into test5_10 values ('结果2',88)insert into test5_10 values ('结果3',86)insert into test5_10 values ('结果4',88)insert into test5_10 values ('结果5',86)insert into test5_10 values ('结果6',88)insert into test5_10 values ('结果7',86)insert into test5_10 values ('结果8',86)insert into test5_10 values ('结果9',86)insert into test5_10 values ('结果10',86)ps1:其实只要有第三步就可以了ps2:数据库实验指导书的答案有问题。
实验5 sql语句练习——图书馆数据库答案
实验5sql语句练习——图书馆数据库实验5sql语句练习——图书馆数据库实验目得(1)了解SQLServer数据库得逻辑结构与物理结构;(2)了解表得结构特点;(3)了解SQL Server得基本数据类型;(4)了解空值概念;(5)学会在企业管理器中创建数据库与表;(6)学会使用T—SQL语句创建数据库与表。
(7)学会使用T-SQL语句更新数据。
(7)学会使用T—SQL语句创建多种查询.实验准备首先要明确,能够创建数据库得用户必须就是系统管理员,或就是被授权使用CREATE DA TABASE语句得用户。
其次创建数据库必须要确定数据库名、数据库大小(最初得大小、最大得大小、就是否允许增长及增长方式)与存储数据库得文件.然后,确定数据库包含哪些表,以及所包含得各表得结构,还要了解SQL Server得常用数据类型,以创建数据库得表。
此外还要了解两种常用得创建数据库、表得方法,即在企业管理器中创建与使用T-SQL得CREATE DAT ABASE语句.实验内容假设有5本书设有一图书馆数据库,其中包括3个表,即图书表、读者表与借阅表。
三个表得结构如图:图书表结构列名说明数据类型约束说明书号图书唯一得编号定长字符串,长度为10 主键书名图书得名称定长字符串,长度为50 空值作者图书得编著者名定长字符串,长度为30 空值出版社图书得出版社定长字符串,长度为30 空值单价出版社确定得图书得单价浮点型,Float 空值读者表结构列名说明数据类型约束说明读者号读者唯一得编号定长字符串,长度为10 主键(1)用Sql语句创建图书馆数据库Create databaseLab05(2)用Sql语句创建上述3个表createtable book(ﻩbookId char(10)primary key,ﻩbookNamevarchar(50),ﻩbookWritervarchar(30),bookPublishvarchar(30),ﻩbookPricefloat)create tablereader(readerId char(10)primarykey,readerName varchar(8)notnull,readerSex char(2)not null,ﻩreaderOfficeTel char(8),readerDepartment varchar(30))create table借阅表(readerIdchar(10),bookIdchar(10),checkOutTime char(8),checkInTime char(8),primarykey(readerId,bookId),ﻩforeignkey (readerId) references reader(readerId),foreignkey (bookId)references book(bookId),)(3)基于图书馆数据库得3个表,用sql语言完成一下操作:1)为图书表增加一列“ISBN”,数据类型为CHAR(10)alter table book add ISBN char(10)2)为刚添加得ISBN列增加缺省值约束,约束名为ISBNDEF,缺省值为‘7111085949'ALTER TABLE bookADDCONSTRAINT ISBNDEFDEFAULT ('7111085949’) FORISBN3)删除图书表中ISBN列增加得缺省值约束alter table bookdrop ISBNDEF4)删除图书表中新增得ISBN列ALTER TABLE book DROPCOLUMNISBN5)查询全体图书得图书号、书名、作者、出版社与单价select bookId,bookName,bookWriter,bookPublish,bookPricefrom book6)查询全体图书得信息,其中单价打8折,并设置该列得别名为‘打折价’select bookId,bookName,bookWriter,bookPublish,(bookPrice*0、8)as打折价from book7)显示所有借阅者得读者号,并去掉重复行selectdistinct readerIdfrom 借阅表8)查询所有单价在20-30元之间得图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPrice between 20and309)查询机械工业出版社、科学出版社、人民邮电出版社得图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwherebookPublish in('机械工业出版社’, '科学出版社',’人民邮电出版社’)10)查询既不就是机械工业出版社、人民邮电出版社、也不就是科学出版社出版得图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish not in(’机械工业出版社’, '科学出版社','人民邮电出版社’)11)查询姓名得第二个字符就是'建’,并且只有2个字得读者得读者号及姓名select readerId,readerNamefromreaderwhere readerName like’_建'12)查询姓名不就是以‘王’、‘张'或‘李’开头得所有读者得读者号及姓名【方式一】查询出来得结果有问题!select readerId,readerNamefrom readerwhere readerName not in('王%','张%','李%')【方式二】select readerId,readerNamefrom readerwhere readerName not in(selectreaderNameﻩfromreaderwhere readerName like’王%’or readerName like'张%’orreaderNamelike'李%')13)查询无归还日期得借阅信息selectﻩbook、bookId,book、bookName,reader、readerId,reader、readerName,借阅表、checkOutTime as 借书时间,ﻩ借阅表、checkInTimeas 还书时间from借阅表,book,readerwhereﻩ借阅表、bookId = book、bookIdand借阅表、readerId=reader、readerIdand ﻩﻩ借阅表、checkInTimeisnull14)查询机械工业出版社图书得平均价格、最高价、最低价select avg(bookPrice)as 平均价格,max(bookPrice)as 最高价,min(bookPrice)as 最低价from bookwhere bookPublish =’机械工业出版社图书’15)查询读者得基本信息及借阅情况ﻩﻩselect reader、readerId,reader、readerName ,借阅表、bookId,book、bookName,book、bookPublishfrom reader ,借阅表,bookwherereader、readerId = 借阅表、readerIdﻩﻩﻩﻩandbook、bookId = 借阅表、bookIdﻩﻩand 借阅表、readerId='1000000007'16)查询至少借阅过1本机械工业出版社出版得图书得读者得读者号、姓名、书名及借阅本数,并按借阅本书多少降序排列selectr、Rno,Rname,count(borrow、Bno)借阅册数from borrow,b,rwhere b、bno=borrow、bnoand press='机械工业出版社' and borrow、rno=r、rnogroup by r、rno,Rnameorderbycount(borrow、Bno) desc17)查询与‘王小平'得办公电话相同得读者得姓名/* 使用“自连接方式”求解*/ﻩﻩselect b、readerName,b、readerId,a、readerOfficeTelfrom readera,reader bwhere a、readerName like ’王小平'anda、readerOfficeTel=b、readerOfficeTel/*18)查询所有单价小于平均单价得图书得书号、书名及出版社select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(ﻩselectavg(bookPrice)as averagePriceﻩfrom book)19)查询‘科学出版社’得图书单价比‘机械工业出版社’最高单价还高得图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPublish like’科学出版社’and bookPrice〉(ﻩselectmax(bookPrice)ﻩfrom bookwhere bookPublish='机械工业出版社')20)查询‘科学出版社’得图书中单价比‘机械工业出版社'最低单价高得图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice 〈(ﻩselect max(bookPrice)ﻩfrom bookﻩwhere bookPublish ='机械工业出版社’ﻩ)and bookPublish like’科学出版社'21)创建机械工业出版社图书得视图CREATE VIEW 机械工业出版社ViewASSELECT bookId,bookName,bookPriceFROM bookWHERE bookPublish=’机械工业出版社'22)创建一个借阅统计视图,名为CountView,包含读者得读者号与总借阅本数CREATEVIEW CountViewASSELECT readerId as读者号,count(*) as 总借阅本数FROM借阅表GROUPBY readerId23)创建一个借阅统计视图,名为CountView10,包含借阅总本数打于2得读者号与总借阅本数CREATE VIEW借阅统计视图ViewASSELECT readerIdas读者号,count(*) as总借阅本数FROM 借阅表GROUP BY readerIdHAVINGCOUNT(*)〉2。
数据库实验5答案
实验五:数据库综合查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件种类和表示方法;3.掌握连接查询的表示及使用;4.掌握嵌套查询的表示及使用;5.了解集合查询的表示及使用。
二、实验环境已安装SQL Server企业版的计算机(120台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.了解连接查询的表示及使用;3.了解嵌套查询的表示及使用;4.了解集合查询的表示及使用;5.完成实验报告;五、实验内容及步骤1.利用Transact-SQL嵌套语句实现下列数据查询操作。
1) 查询选修了计算机体系结构的学生的基本信息。
select*from studentwhere Sno in(select Sno from coursewhere Cno in(select Cno from sc where Cname='计算机体系结构'))2) 查询年龄比李勇小的学生的学号和成绩。
select a.sno,grade from student a,coursewhere a.sno=course.sno and sage<(select sage from student where sname='李勇')3) 查询其他系中比系编号为‘D1’的学生中年龄最小者要大的学生的信息。
select*from student where dnum<>'D1'AND SAGE>(select min(sage)from student where dnum='D1')4) 查询其他系中比系编号为‘D3’的学生年龄都大的学生的姓名。
select*from student where dnum<>'D3'AND SAGE>all(selectsage from student where dnum='D3')5) 查询‘C1’课程的成绩高于70的学生姓名。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五:数据库综合查询
一、实验目的
1.掌握SELECT语句的基本语法和查询条件表示方法;
2.掌握查询条件种类和表示方法;
3.掌握连接查询的表示及使用;
4.掌握嵌套查询的表示及使用;
5.了解集合查询的表示及使用。
二、实验环境
已安装SQL Server企业版的计算机(120台);
具有局域网环境,有固定IP;
三、实验学时
2学时
四、实验要求
1.了解SELECT语句的基本语法格式和执行方法;
2.了解连接查询的表示及使用;
3.了解嵌套查询的表示及使用;
4.了解集合查询的表示及使用;
5.完成实验报告;
五、实验内容及步骤
1.利用Transact-SQL嵌套语句实现下列数据查询操作。
1) 查询选修了计算机体系结构的学生的基本信息。
select*from student
where Sno in(select Sno from course
where Cno in(select Cno from sc where Cname='计算机体系结构'))
2) 查询年龄比李勇小的学生的学号和成绩。
select a.sno,grade from student a,course
where a.sno=course.sno and sage<(select sage from student where sname='李勇')
3) 查询其他系中比系编号为‘D1’的学生中年龄最小者要大的学生的信息。
select*from student where dnum<>'D1'AND SAGE>(select min(sage)from student where dnum='D1')
4) 查询其他系中比系编号为‘D3’的学生年龄都大的学生的姓名。
select*from student where dnum<>'D3'AND SAGE>all(select
sage from student where dnum='D3')
5) 查询‘C1’课程的成绩高于70的学生姓名。
select sname from student where sno in(select sno from course where cno='C1'and grade>70)
6) 查询‘C1’课程的成绩不高于70的学生姓名。
select sname from student where sno in(select sno from course where cno='C1'and grade<=70)
7) 查询没有选修的学生姓名。
select sname from student where sno not in
(select sno from course where course.sno=student.sno)
8)查询学校开设的课程总数。
select count(cno)from sc
9)查询选修两门及两门以上课程的学生姓名。
select sname from student a,course where a.sno=course.sno group by a.sno,sname having count(cno)>=2
10)查询开设的课程和选修该课程的学生的总成绩、平均成绩、最高成绩和最低成绩。
select cno,sum(grade),avg(grade),max(grade),min(grade) from course group by cno
(二)、以数据库原理实验4数据为基础,请使用T-SQL 语句实现进行以下操作(选做题):
1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;
select*from course
where Cnume like'DB\_%s__'escape'\'
2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;select Sname,student.Sno,o,ame FROM Student,course,sc
WHERE student.Sno=sc.sno and o=o and Sname LIKE '__阳%'
3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修
课程号及成绩;
SELECT student.Sno,Sname,Sdept,Cno,grade
FROM student,sc
WHERE student.sno=sc.sno and cno IN
(SELECT cno FROM course
WHERE cname='数学'OR cname='大学英语')
4.查询缺少成绩的所有学生的详细情况;
5.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;
select b.*from student a,student b where a.sname='张力'and
a.sage<>
b.sage
6.查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成
绩;
7.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。
其中已修学分为考试已经及格的课程学分之和;
8.列出只选修一门课程的学生的学号、姓名、院系及成绩;
9.查询选修“数据库”或“数据结构”课程的学生的基本信息;
10.列出所有课程被选修的详细情况,包括课程号、课程名、学号、姓名及成绩;
11.查询只被一名学生选修的课程的课程号、课程名;
12.检索所学课程包含学生‘张向东’所学课程的学生学号、姓名;★
13.检索所学课程包含学生‘张向东’所学全部课程的学生学号、姓名;★
14.使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;
select sno,sname from student where sno in(select sno from sc where cno in(select cno from course where cname='数据结构'))
15.使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和
院系;
SELECT姓名=Sname,年龄=Sage,院系=Sdept
FROM Student
WHERE Sage<
(SELECT max(Sage)
FROM Student
WHERE Sdept='CS')AND Sdept<>'CS'
16.使用ANY、ALL 查询,列出其他院系中比CS系所有学生年龄小的学生;
17.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息;SELECT*
FROM Student
WHERE Sdept=
(SELECT Sdept
FROM student
WHERE Sname='张力')
18.使用集合查询列出CS系的学生以及性别为女的学生名单;
select sname
from student
where Sdept='CS'
union
select sname
from student
where Ssex='女'
19.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;SELECT*
FROM Student
WHERE Sdept='CS'
intersect
select*
from student
where Sage<=19
20.使用集合查询列出选修课程1的学生集合与选修课程2的学生集合的交集;SELECT Sno
FROM SC
WHERE Cno='1'
intersect
SELECT Sno
FROM SC
WHERE Cno='2'。