数据库实验五答案
- 格式:doc
- 大小:300.00 KB
- 文档页数: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的外部键。
实验报告(五)专业:班级:学号:姓名:实验名称:数据库的子查询、组合查询实验报告内容: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)查询’科学出版社’的图书中单价比’机械工业出版社’最高单价还高的的图书书名、单价。
实验五查询数据库1)启动SQL Server查询分析器,打开“SQL查询分析器”窗口。
2)在“SQL查询分析器”窗口中选择要操作的数据库,如“XSCJ”数据库。
3)在KC表中查询学分低于3的课程信息,并按课程号升序排列。
select *From KCWhere 学分<=34)在XS_KC表中按学号分组汇总学生的平均分,并按平均分的降序排列。
Select学号,avg(成绩)From XS_KCGroup by学号Order by学号5)在XS_KC表中查询选修了3门以上课程的学生学号。
Select学号From XS_KCGroup by学号Having count(*)>=36)按学号对不及格的成绩记录进行明细汇总。
Select学号,成绩From XS_KCWhere成绩<607)分别用子查询和连接查询,求107号课程不及格的学生信息。
Select*From XSQKWhere学号in(select学号From XS_KCWhere课程号='107'and成绩<60 )8)用连接查询在XSQK表中查询与杨颖住在同一寝室的学生,即其联系电话相同Select*From XSQKWhere联系电话in(Select联系电话From XSQKWhere姓名='杨颖')9)查询XSQK表中所有的系名。
10)查询有多少同学选修了课程。
select count(distinct 学号)From XS_KC11)查询有多少同学没有选课。
select count(*)from xsQK left join xs_KC on xs_KC.学号=xsQK.学号where成绩is null12)查询与杨颖同一个系的同学姓名。
select 姓名From xsQKWhere13)查询选修了课程的学生的姓名、课程名与成绩。
14)统计每门课程的选课人数和最高分。
select 课程号,count(学号),max(成绩)from xs_kcgroup by 课程号15)统计每个学生的选课门数和考试总成绩,并按选课门数的降序排列。
数据库原理及应用实验指导书 - 答案实验一:数据库管理系统的安装与配置问题一数据库管理系统(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函数,用于连接和操作数据库。
实验一 SQL Server 2005 的安装和环境介绍一.实验目的与要求:1.掌握SQL Server 2005 服务器的安装方法2.了解SQL Server 2005 的环境3.了解数据库及其对象二.实验准备1.了解SQL Server 2005的版本2.了解SQL Server 2005各版本对硬件和软件的需求三.实验要求1.写出SQL SERVER 2005的功能与特点, 使用方法, 应用状况的报告2.完成SQL SERVER 2005的安装、启动、登录。
四.实验内容1.安装SQL Server 2005实验一 SQL Server 2005 的安装和环境介绍●实验指导——安装SQL Server 20051.根据安装机器软硬件的要求,选择一个合适的版本,以下以开发版为例2.将 SQL Server 2005 DVD 插入 DVD 驱动器。
如果DVD驱动器的自动运行功能无法启动安装程序无法启动安装程序,请导航到 DVD 的根目录然后启动splash.hta。
3.在自动运行的对话框中,单击“运行 SQL Server 安装向导”。
4.在“最终用户许可协议”页上,阅读许可协议,再选中相应的复选框以接受许可条款和条件。
接受许可协议后即可激活“下一步”按钮。
若要继续,请单击“下一步”若要结束安装程序,请单击“取消”。
如下图:5.在“SQL Server 组件更新”页上,安装程序将安装 SQL Server 2005 的必需软件。
有关组件要求的详细信息,请单击该页底部的“帮助”按钮。
若要开始执行组件更新,请单击“安装”。
更新完成之后若要继续,请单击“完成”。
6.在 SQL Server 安装向导的“欢迎”页上,单击“下一步”以继续安装。
7.在“系统配置检查 (SCC)”页上,将扫描安装计算机,以检查是否存在可能妨碍安装程序的条件。
8.在“注册信息”页上的“姓名”和“公司”文本框中,输入相应的信息。
实验实验 实验一实验一熟悉SQL SERVER2000 1.在“程序”菜单中寻找“Microsoft SQL Server”菜单项。
菜单项。
2.如果“Microsoft SQL Server”菜单项下有“服务管理器”,则启动服务管理器,在其界面中启动SQL SERVER 服务。
服务。
3.在“Microsoft SQL Server”菜单项下打开“企业管理器”。
4.点击工具栏上的图标,注册一个SQL SERVER 服务器。
服务器。
5.在注册向导的“可用服务器”中选择一个服务器添加到“添加的服务器”中,点击下一步。
中,点击下一步。
6.选择“系统管理员分配的SQL Server 登录信息”。
7.填写登录名和密码。
填写登录名和密码。
8.不改变默认选项,添加到现有组中。
不改变默认选项,添加到现有组中。
9.完成SQL Server 注册。
注册。
10.熟悉SQL Server 的使用环境,可以完成简单的建库、建表操作,可查看联机帮助。
的使用环境,可以完成简单的建库、建表操作,可查看联机帮助。
11.打开“工具”菜单下的“查询分析器”,可以完成SQL 语句的执行操作。
语句的执行操作。
实验二实验二实验要求:用sql 语句建立如下的表结构并输入数据:语句建立如下的表结构并输入数据: 学生表:student (主键Sno ) 课程表:Course (主键Cno )学号学号 Sno 姓名姓名 Sname 性别性别 Ssex 年龄年龄 Sage 所在系所在系 Sdept 95001 李勇 男 20 CS 95002 刘晨 女 21 IS 95003 王敏 女 18 MA 95004 张力 男19IS选课表:SC (主键Sno,Cno ,外部键Sno ,Cno ) 学号学号 Sno 课程表课程表 Cno 成绩成绩 Grade 95001 1 92 95001 2 85 95001 3 88 95002 2 90 950023856.查询选修了3号课程的学生姓名及成绩,并按成绩降序排序。
数据库及应用实训答案第五版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)统计各个课程的选课人数和平均成绩。
实验五数据库完整性与安全性实验1、实验目的1.通过对完整性规则的定义实现,熟悉了解kingbase中完整性保证的规则和实现方法,加深对数据完整性的理解。
2.通过对安全性相关内容的定义,熟悉了解kingbase中安全性的内容和实现方法,加深对数据库安全性的理解2、实验环境操作系统:Microsoft Windows 7旗舰版(32位)。
数据库版本:MySQL 6.23、实验内容3.1完整性实验:(1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;在create table 时已经定义了各个基表的主键。
因此,首先对每个基表删除主键,再添加主键。
实现实体完整性约束。
如下图。
删除主键:添加主键:sc表中的cno和sno分别是course表和student表的外关键字。
下图为给sc表添加student和course的外键,实现参照完整性约束。
alter table sc add constraint fk_student foreign key(sno) references student(sno);alter table sc add constraint fk_course foreign key(cno) references course(cno);主键和外键均添加成功,输入show create table 命令来查看各基表信息。
(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;向课程表中插入课程号为C01的课程。
向学生表中插入学号为30201的学生。
由上面两个实验来看,分别对student和course表插入具有相同学号和相同课程号的学生信息和课程信息,都显示sql语句错误信息为:Duplicate entry *** for key ‘PRIMARY’。
验证了实体完整性约束。
(3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;插入成绩信息是学号为31428(student中存在),课程号为C07(course中不存在)的学生成绩信息。
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:数据库实验指导书的答案有问题。
实验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。
实验五:数据库综合查询一、实验目的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的学生姓名。
《数据库原理与应用》课程实验指导书苏州工业职业技术学院信息工程系2008.1目录目录 (Ⅰ)前言………………………………………………………………………………………实验一初识SQL Server 2000…………………………………………………实验二数据库的创建和管理…………………………………………………实验三表的创建、管理及数据操作……………………………………………实验四单表查询……………………………………………………………实验五连接查询…………………………………………………………实验六嵌套查询……………………………………………………实验七视图的创建和管理……………………………………………………实验八游标的使用……………………………………………………实验九T-SQL语言编程基础…………………………………………………实验十函数…………………………………………………………………………实验十一索引、默认值约束和默认值对象………………………………实验十二数据完整性的实现…………………………………………………实验十三存储过程…………………………………………………实验十四触发器…………………………………………………实验十五系统安全管理…………………………………………………实验十六数据备份、恢复和导入导出………………………………………实验十七综合训练…………………………………………………前言数据库技术是计算机学科中的一个重要分支,发展迅速、应用非常广泛,几乎涉及了所有应用领域。
例如,办公系统、生产管理、财务管理、人事管理、工业管理等,都广泛应用了数据库技术。
本实验指导书是《数据库原理与应用》课程的配套实验资料。
通过安排实验及布置的任务,让学生熟练掌握使用关系数据库管理系统SQL Server 2000进行数据库及表的创建和管理、查询、Transact—SQL程序设计、各类约束的创建及使用、视图及索引的创建与管理、SQL Server 的存储过程的创建和管理、SQL Server 的触发器创建和管理、SQL Server的安全性管理、数据库的备份及恢复。
数据库系统原理及应用实验指导书(本科)福建工程学院计算机与信息科学系目录实验一数据定义语言 (2)实验二SQL Sever中的单表查询 (5)实验三SQL Serve中的连接查询 (8)实验四SQL Serve的数据更新、视图 (11)实验五数据控制(完整性与安全性) (16)实验六语法元素与流程控制 (19)实验七存储过程与用户自定义函数 (23)实验八触发器 (27)实验一数据定义语言一、实验目的1.熟悉SQL Server2000/2005查询分析器。
2.掌握SQL语言的DDL语言,在SQL Server2000/2005环境下采用Transact-SQL实现表的定义、删除与修改,掌握索引的建立与删除方法。
3.掌握SQL Server2000/2005实现完整性的六种约束。
二、实验内容1.启动SQL Server2000/2005查询分析器,并连接服务器。
2.创建数据库: (请先在D盘下创建DB文件夹)1)在SQL Server2000中建立一个StuDB数据库:有一个数据文件:逻辑名为StuData,文件名为“d:\db\StuDat.mdf”,文件初始大小为5MB,文件的最大大小不受限制,文件的增长率为2MB;有一个日志文件,逻辑名为StuLog,文件名为“d:\db\StuLog.ldf”,文件初始大小为5MB,文件的最大大小为10MB,文件的增长率为10%2)刷新管理器查看是否创建成功,右击StuDB查看它的属性。
3.设置StuDB为当前数据库。
4.在StuDB数据库中作如下操作:设有如下关系表S:S(CLASS,SNO, NAME, SEX, AGE),其中:CLASS为班号,char(5) ;SNO为座号,char(2);NAME为姓名,char(10),设姓名的取值唯一;SEX为性别,char(2) ;AGE为年龄,int,表中主码为班号+座号。
写出实现下列功能的SQL语句。
《数据库系统概论》实验报告书专业班级学号姓名指导教师安徽工业大学计算机学院实验一:数据定义语言[ 实验日期 ] 年月日[ 实验目的 ]熟悉Oracle上机环境及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引。
[ 实验内容 ]Oracle上机环境以及Oracle客户端的配置参见附录。
1. SQL数据定义语句:例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。
1,创建表StudentCREATE TABLE Student (SNO CHAR(5) ,SNAME CHAR(10) NOT NULL,SDEPT CHAR(2) NOT NULL,SCLASS CHAR(2) NOT NULL,SSEX CHAR(2),SAGE NUMBER(2),CONSTRAINT SNO_PK PRIMARY KEY(SNO))2,创建表CourseCREATE TABLE Course(CNO CHAR(3),CNAME VARCHAR2(16) ,CTIME NUMBER(3),CONSTRAINT CNO_PK PRIMARY KEY(CNO))3,创建表TeachCREATE TABLE Teach(TNAME VARCHAR(8),TSEX CHAR(2),CNO CHAR(3),TDATE DATE,TDEPT CHAR(2),CONSTRAINT TT_PK PRIMARY KEY(TNAME,CNO,TDEPT),CONSTRAINT CNO_FK FOREIGN KEY(CNO) REFERENCES Course(CNO))4,创建表ScoreCREATE TABLE Score(SNO CHAR(5),CNO CHAR(3),SCORE NUMBER(5,2),CONSTRAINT SC_PK PRIMARY KEY(SNO,CNO),CONSTRAINT SNO_FK FOREIGN KEY(SNO) REFERENCES Student(SNO), CONSTRAINT CNOM_FK FOREIGN KEY(CNO) REFERENCES Course(CNO))二、插入数据1,StudentINSERT INTO Student VALUES('96001','马小燕','CS','01',21,'女') INSERT INTO Student VALUES('96002','黎明','CS','01',18,'男') INSERT INTO Student VALUES('96003','刘东明','MA','01',18,'男') INSERT INTO Student VALUES('96004','赵志勇','IS','02',20,'男') INSERT INTO Student VALUES('97001','马蓉','MA','02',19,'女') INSERT INTO Student VALUES('97002','李成功','CS','01',20,'男') INSERT INTO Student VALUES('97003','黎明','IS','03',19,'女') INSERT INTO Student VALUES('97004','李丽','CS','02',19,'女') INSERT INTO Student VALUES('96005','司马志明','CS','02',18,'男')2,CourseINSERT INTO Course VALUES('001','数学分析',144)INSERT INTO Course VALUES('002','普通物理',144)INSERT INTO Course VALUES('003','微机原理',72)INSERT INTO Course VALUES('004','数据结构',72)INSERT INTO Course VALUES('005','操作系统',64)INSERT INTO Course VALUES('006','数据库原理',64)INSERT INTO Course VALUES('007','DB_Design',48)INSERT INTO Course VALUES('008','程序设计',56)3,TeachINSERT INTO Teach VALUES('王成钢','男','004',TO_DATE( '1999-09-05', 'YYYY-MM-DD'),'CS'); INSERT INTO Teach VALUES('李正科','男','003',TO_DATE( '1999-09-05', 'YYYY-MM-DD'),'CS') INSERT INTO Teach VALUES('严敏','女','001',TO_DATE( '1999-09-05', 'YYYY-MM-DD'),'MA') INSERT INTO Teach VALUES('赵高','男','004',TO_DATE( '1999-09-05', 'YYYY-MM-DD'),'IS') INSERT INTO Teach VALUES('李正科','男','003',TO_DATE( '2000-02-23', 'YYYY-MM-DD'),'MA') INSERT INTO Teach VALUES('李玉兰','女','006',TO_DATE( '2000-02-23', 'YYYY-MM-DD'),'CS') INSERT INTO Teach VALUES('王成钢','男','004',TO_DATE( '2000-02-23', 'YYYY-MM-DD'),'IS') INSERT INTO Teach VALUES('马悦','女','008',TO_DATE( '2000-09-06', 'YYYY-MM-DD'),'CS') INSERT INTO Teach VALUES('王成钢','男','007',TO_DATE( '1999-09-05', 'YYYY-MM-DD'),'CS') to_date( '05-09-1999', 'DD-MM-YYYY' );4,ScoreINSERT INTO Score VALUES('96001','001',77.5)INSERT INTO Score VALUES('96001','003',89)INSERT INTO Score VALUES('96001','004',86)INSERT INTO Score VALUES('96001','005',82)INSERT INTO Score VALUES('96002','001',88)INSERT INTO Score VALUES('96002','003',92.5)INSERT INTO Score VALUES('96002','006',90)INSERT INTO Score VALUES('96005','004',92)INSERT INTO Score VALUES('96005','005',90)INSERT INTO Score VALUES('96005','006',89)INSERT INTO Score VALUES('96005','007',76)INSERT INTO Score VALUES('96003','001',69)INSERT INTO Score VALUES('97001','001',96)INSERT INTO Score VALUES('97001','008',95)INSERT INTO Score VALUES('96004','001',87)INSERT INTO Score VALUES('96003','003',91)INSERT INTO Score VALUES('97002','003',91)INSERT INTO Score VALUES('97002','004','')INSERT INTO Score VALUES('97002','006',92)INSERT INTO Score VALUES('97004','005',90)INSERT INTO Score VALUES('97004','006',85)INSERT INTO Score VALUES('97004','008',75)INSERT INTO Score VALUES('97003','001',59)INSERT INTO Score VALUES('97003','003',58)例1-2: (修改数据库表) 在Student表中增加SEX(C,2) 字段。
实验三关系查询与连接首先,将sales表中tot_amt的值计算出来。
update sales set tot_amt=0goselect order_no,tot=sum(qty*unit_price)into aa1from sale_itemgroup by order_nogoselect * from aa1goupdate sales set tot_amt=totfrom sales,aa1where aa1.order_no=sales.order_nogo1、查找所有经理的姓名、职称、薪水。
select emp_name ,title,salaryfrom employeewhere title='经理'2、查找出姓“王”并且姓名的最后一个字为“功”的员工。
select *from employeewhere emp_name like '王%功'//3、添加一条记录至employee表(用INSERT…..INTO)。
insert into employee(emp_no,emp_name,sex,dept,title,date_hired,salary)values('E0025','彭江','M','业务','职员',1900/01/21,43200)//4、将每个员工的薪水上调3%。
update employeeset salary=salary*1.03select *from employee3、查找住在上海或北京的女员工,并显示其姓名、所属部门、职称、住址select emp_name,dept,title,addrfrom employeewhere (addr='上海市' or addr= '北京市')and sex='F'4、在表sales中挑出销售金额大于等于10000元订单select *from saleswhere tot_amt>=10000.005、选取订单金额最高的前10%的订单数据。
数据库实验五答案
1.创建一个存储过程,查看001号课程的选修情况,包括学生学号、姓名和成绩,然
后执行该过程;
create procedure s11
as
select student.sno,sname,score
from student join sc on student.sno=sc.sno
where cno='001'
go
execute s11
2.创建一个存储过程,通过学生学号来查询学生选修情况,包括学生学号、姓名和成
绩,然后执行该过程;
create procedure s12 @cnumber char(5)
as
select student.sno,sname,score
from student join sc on student.sno=sc.sno
where student.sno= @cnumber
go
execute s12 '00001'
3.创建一个存储过程,通过学生学号来查询学生选修情况,默认查询学号为00001的
选修情况,包括学生学号、姓名和成绩,然后执行该过程;
create procedure s13 @cnumber char(5)='00001'
as
select student.sno,sname,score
from student join sc on student.sno=sc.sno
where student.sno= @cnumber
go
execute s13 '00005'
execute s13
4.创建一个存储过程,获得选修某门课程的总人数,然后在执行该过程后把总人数显
示出来;
create procedure s14 @cnumber char(5),@ccount int output
as
select @ccount=count(*) from sc where o=@cnumber
go
declare @ccount int
execute s14 '001' ,@ccount output
select @ccount
5.创建一个存储过程,通过学号和课程号进行成绩查询,如果查询结果为空,则显示
“该学生没有选这门课”,返回0,如果查询结果低于60分,则显示“该学生考试成绩不及格”,返回1,如果查询结果在60-85之间,则显示“该学生考试成绩为良”,返回2,如果查询结果大于85,则显示“该学生考试成绩为优秀”,返回3,然后执行该过程查询学号00001的选课成绩,并把返回结果显示出来。
create procedure s16 @sno char(5),@cno char(3)
as
declare @s int
select @s=score
from sc
where cno=@cno and sno=@sno
if @s=NULL
begin
print '该学生没有选这门课'
return 0
end
else if @s<60
begin
print '该学生考试成绩不及格'
return 1
end
else if @s<85
begin
print '该学生考试成绩为良'
return 2
end
else
begin
print '该学生没考试成绩为优'
return 3
end
go
declare @result int
exec @result=s16 '00001','004'
print @result
6.通过对象资源管理器创建问题5的存储过程。
7.声明一个只读游标,数据来源是表Student的所有情况,按照名字排序,打开该游标,查看该游标一共有多少行,提取第1行数据,第2行数据,第3行数据,试试把当前行的年龄改为50看看;
declare s_sur4 cursor
for
select * from student order by sname
for read only
open s_sur4
select @@cursor_rows
fetch s_sur4
fetch next from s_sur4
fetch next from s_sur4
update student
set sage=50
where current of s_sur4
fetch last from s_sur4
出现错误,因为只是可读
8.声明一个可滚动(SCROLL)的只读游标,数据来源是选择表Student的姓名和学号,按照名字排序,提取第5行数据,并把数据的学号和姓名赋予给变量学号和姓名(对比9理解SCROLL的作用);
declare s_sur7 scroll cursor
for
select sno,sname from student order by sname
for read only
open s_sur7
declare @学号char(5),@姓名varchar(10)
fetch absolute 5 from s_sur7
into @学号, @姓名
select @学号,@姓名
fetch last from s_sur7
9.声明一个具有灵敏性(INSENSITIVE)的游标,数据来源是表Student的所有情况,按照名字排序;
declare s_sur8 insensitive cursor
for
select sno,sname from student order by sname
for read only
10.声明一个可更新的游标,数据来源是表Student的所有情况,打开该游标,提取第1行数据,并把当前行的年龄改为50,然后查看基本表看是否已经修改;
declare s_sur10 cursor
for
select* from student
for update
open s_sur10
fetch s_sur10
update student
set sage=50
where current of s_sur10
select *
from student
11.试试看能不能声明一个有SCROLL或INSENSITIVE的可更新的游标。
不能。