数据库实验五六
数据库实验五六

实验五数据查询和连接查询一.实验目的使学生熟练掌握简单表的数据查询、数据连接查询以及数据排序的操作方法,并加深对Transact-SQL语言的查询语句的理解。
二.实验软件环境SQL Server2012三.实验内容(一) 实验要求:在SQL Server 2012查询设计器中,并用SELECT语句及WHERE查询条件进行简单查询及连接查询实验,其次使用ORDER BY排序子句实现输出结果的排序。
主要内容包括:1)简单查询操作包括投影、选择条件、数据排序等。
2)连接查询操作包括等值连接、自然连接、外连接、内连接、左连接和右连接等。
(二) 要求完成以下查询要求:1)将清华大学出版社的书存入永久计算机图书表。
2)将借书日期在2012年以前的借阅记录存入临时超期借阅表。
3)查询发生了借阅关系的借书证号、借阅姓名等信息,并按借书证号降序排列。
4)查询“清华大学出版社”出版的图书情况。
5)查询目前被借出去的书籍的书号、借书证号以及借出日期,并按借出日期降序排序。
6)查询“程军”老师所借阅的书籍的书名。
7)查询借书者的编号、姓名、单位、所借书号、书名和借阅日期,并按读者编号排序。
四.实验的结果及分析(1)将计算机类的书存入永久计算机图书表CREATE TABLE Computer_Book(bno char(8) PRIMARY KEY,category varchar(10),title varchar(40) NOT NULL,press varchar(30) NOT NULL,book_year Int NOT NULL,author varchar(20),price decimal(7,2) NOT NULL,book_total Int NOT NULL)INSERT INTO Computer_Book SELECT *FROM Book WHERE press='清华大学出版社';select *from Computer_Book; 【查看表】(2)将借书日期在2012年以前的借阅记录存入临时超期借阅表。
数据库实验内容-答案

实验内容:实验一:数据库的操作使用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的外部键。
数据库原理实验5指导书

一实验题目:视图的定义和使用二实验目的:加深对视图的理解,熟练视图的定义、查看、修改等操作三实验内容及要求:(从下面10个题目中选一个)题目一:学生(学号,年龄,性别,系名)课程(课号,课名,学分,学时)选课(学号,课号,成绩)1 根据上面基本表的信息定义视图显示每门课的课名、选课人数、平均成绩2 观察基本表数据变化时,视图中数据的变化。
3 利用视图,查询平均成绩最高的学生。
题目二:图书(书号,书名,价格,出版社)读者(卡号,姓名,年龄,所属单位)借阅(书号,卡号,借阅日期)1 根据上面基本表的信息定义视图显示每本书的书名、借阅次数2 观察基本表数据变化时,视图中数据的变化。
3利用视图,查询借阅次数最多的书。
题目三:商品(编号,品名,进价,库存,售价,厂商编号)顾客(卡号,姓名,电话,积分)厂商(编号,厂址,名称、电话)销售(顾客卡号,商品编号,数量,日期)1 根据上面基本表的信息定义视图显示每种商品的品名、销售数量2 观察基本表数据变化时,视图中数据的变化。
3利用视图,查询销售数量最高的商品。
题目四:图书(书号,书名,作者编号,价格,出版社编号)作者(编号,姓名,电话)出版社(编号,出版社名称,地址)1 根据上面基本表的信息定义视图显示每个出版社的名称、出版书的数量2 观察基本表数据变化时,视图中数据的变化。
3利用视图,查询出版书最多的出版社题目五:零件(编号,名称,颜色,生产车间号)车间(编号,名称,人数,主任)产品(编号,名称,类型)生产(产品编号,生产车间编号)使用(产品编号,使用零件编号,个数)1 根据上面基本表的信息定义视图显示每个产品的编号,使用零件的编号,生产零件的车间号,车间主任2 观察基本表数据变化时,视图中数据的变化。
3利用视图,查询使用零件最多的产品。
题目六:药品(编号,名称,价格,厂商)处方(药品编号,数量,医生编号)医生(编号,姓名,科室,职称)1 根据上面基本表的信息定义视图显示每种药品的品名、销售金额2 观察基本表数据变化时,视图中数据的变化。
数据库实验五六1

实验五视图、索引及数据更新一、实验目的:熟练掌握索引的建立与删除的方法,熟练掌握SQL的应用,熟练掌握数据插入、修改和删除的使用,为后继学习作准备。
二、实验属性(验证性)1.了解并掌握SQL查询分析器及企业管理器的使用;2.掌握基本表的定义、删除与修改。
三、实验原理SQL语言应用。
四、实验步骤:(1) 启动Oracle的SQL Developer或者SQL Plus,或者SQL Server 查询分析器;(2) 对于Oracle11g的SQL Plus需要进行登录,对于Oracle11g的SQL Developer需要进行建立连接。
1 建立索引建立唯一索引:例3.1 为学生选课数据库中的Students,Courses,SC三个表建立索引。
其中Students表按Sname升序建唯一索引,Courses表按Cname升序建唯一索引,SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。
查看自己建立的索引:2 删除索引例3.2 删除基本表SC上的Rep_SCno索引。
然后查询看索引是否还存在。
理解索引的意义。
例3.3 删除基本表student上的Rep_Sno索引。
3 建立视图例3.4 建立数学系学生的视图C_Student,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。
例3.5 建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图Student_CR。
例 3.6定义一个反映学生出生年份的视图student_birth(sno,sname,s_birth,ssex,sdept)。
视图建立后,使用命令查询自己创建的视图:4 查询视图例3.7 在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄(Sage)。
例3.8 在Student_CR视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称(Cname)。
数据库实验报告 (5)

实验一创建数据库及关系表一、实验目的1. 掌握SQL Server数据库管理系统的使用,能够中该环境中进行日常数据库操作;2. 掌握在SQL Server中使用图形化工具创建数据库的方法;3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句;4.掌握修改表结构的语句。
二、实验要求1.了解SQL Server数据库的组成,会使用图形化工具创建数据库。
2.编写建立表及主、外码约束的T-SQL语句,并执行这些语句,在数据库中建立符合要求的关系表。
3.编写修改表结构的语句。
三、实验内容和步骤1.创建符合如下条件的数据库:数据库的名字为:Students数据文件的逻辑文件名为:Students_dat,存放在D:\Test录下(若D:盘中无此子目录,可先建立此目录,然后再创建数据库。
);文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB。
日志文件的逻辑文件名字为:Students_log,也存放在D:\Test目录下;日志文件的初始大小为:2MB;日志文件的增长方式为自动增长,每次增加10%。
2.在已建立的Students数据库中,写出创建满足下述条件的四张表的SQL 语句,并查看执行结果。
Teacher表结构Sno char(7)primary key,Sname nchar(10)not null,Ssex nchar(2),Sage tinyint,Sdept nvarchar(20),Spec char(10))create table course(Cno char(10),Cname nvarchar(20)not null,Credit int,Semester tinyint,Primary key(Cno))create table sc(Sno char(7)not null,Cno char(10)not null,Grade tinyint,primary key(Sno,Cno),foreign key(Sno )references Student(Sno), foreign key(Cno )references Course(Cno), )create table teacher(Tno char(8)not null,Tname char(10)not null,Dept nvarchar(20),Salary numeric(6,2),Birthery smalldatetime)执行结果:2.写出实现如下操作的SQL语句,并查看执行结果:(1)在SC表中添加一个新的修课类别列:列名为:XKLB,类型为char(4)。
数据库实验报告五

数据库实验报告五一、实验目的本次数据库实验的目的在于深入了解和掌握数据库的相关操作和应用,通过实际操作提高对数据库原理的理解和运用能力,培养解决实际问题的思维和方法。
二、实验环境本次实验使用的数据库管理系统为_____,操作系统为_____,实验所使用的计算机配置为_____。
三、实验内容1、数据库的创建使用相应的命令和工具创建了一个名为_____的数据库,并设置了合适的字符集和校对规则,以满足数据存储和处理的需求。
2、表的设计与创建在创建的数据库中,设计并创建了多个表,包括_____表、_____表和_____表等。
在表的设计过程中,仔细考虑了字段的数据类型、长度、是否允许为空等属性,以确保数据的完整性和准确性。
例如,在_____表中,设置了_____字段为整数类型,用于存储_____信息;_____字段为字符串类型,长度为_____,用于存储_____信息。
同时,为了保证数据的一致性,设置了主键和外键约束。
3、数据的插入通过编写 SQL 语句,向创建的表中插入了大量的测试数据。
在数据插入过程中,注意了数据的合法性和有效性,避免了插入错误或不完整的数据。
4、数据的查询使用各种查询语句对插入的数据进行查询操作,包括简单查询、条件查询、连接查询、分组查询和排序查询等。
通过这些查询操作,熟练掌握了 SQL 语言中查询语句的语法和用法,能够根据不同的需求准确地获取所需的数据。
例如,使用简单查询语句获取了_____表中所有的记录;使用条件查询语句获取了满足特定条件(如_____)的记录;使用连接查询语句将多个表中的相关数据进行关联查询,获取了更全面的信息。
5、数据的更新与删除对表中的数据进行了更新和删除操作,以模拟实际应用中的数据修改和清理需求。
在更新和删除数据时,特别注意了操作的条件和范围,避免了误操作导致数据的丢失或错误。
四、实验中遇到的问题及解决方法1、数据类型不匹配问题在插入数据时,由于对某些字段的数据类型理解不准确,导致出现数据类型不匹配的错误。
数据库原理综合实验报告

实验六数据库原理综合实验1实验目的(1)运用所学的数据库设计技术,针对一个具体的应用系统,完成系统数据库的概念模型、逻辑模型和物理模型的设计。
以巩固理论课程上所学的知识,更好地掌握数据库设计技术方法。
(2)对前面章节所学的知识加以综合应用。
2实验内容给定一个应用环境,如学生选课系统、超市管理系统、某企业库存管理系统、学校图书管理系统、学校综合积分管理系统等等。
(同学们课从上述选定一个题目,也可以选取一个自己较熟悉的应用环境)。
完成下面的工作2.1 数据库概念模型设计(1)进行需求分析。
-对系统的语义进行描述(包括功能、所需的数据及他们之间的关系和处理方法)(2)识别系统中的实体及实体的属性,分析实体之间的联系。
(3)设计数据库概念模型,画出E-R图。
2.2 数据库逻辑模型设计(1)根据数据库概念模型设计数据库的逻辑模型。
-将E-R模型转化到逻辑模型(2)根据应用需要和规范化理论对逻辑模型进行优化。
2.3 数据库物理模型设计(1)针对某种DBMS,设计数据库物理模型,包括表空间、表和索引等于物理存储有关的设计。
(2)优化物理模型(3)生成某种DBMS的SQL语句,创建数据库及其表。
2.4 装载数据(1)收集真实数据或者生成模拟数据。
(2)批量加载数据到数据库中。
(3)设计一系列SQL语句,尤其是连接查询、嵌套查询等SQL语句,以测试数据库性能。
3实验要求(1)可以借助POWERDESIGNER等系统分析与设计辅助工具进行数据库设计,也可以使用WORD文件直接生成各种设计文档。
(2)选择的数据库应用系统应该规模适中,不宜太大太复杂,可能做不完;也不宜太小太简单,甚至仅有三两个表组成。
(3)要设计良好的数据库完整性约束。
(4)思考题:数据库设计通常由哪些辅助工具?各有哪些优缺点?4实验步骤4.1 数据库概念模型设计(1)进行需求分析。
学生需要有学号、姓名、性别、年龄、专业等信息。
选课需要有学号、课号、成绩等信息课程需要有课程号、课程名、先修课、学分等信息(2)设计数据库概念模型,画出E-R图。
数据库实验报告(全)

实验报告学院:计算机与信息学院专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发(订正、重做)实验一数据库的定义实验1、实验目的熟练掌握和使用SQL Server企业管理器创建数据库、表、索引和修改表结构,并学会使用SQL Server 查询分析器接收Transact-SQL语句和进行结果分析。
2、实验仪器(环境):计算机及SQL Server 20003、实验操作方法:依照实验指导书的内容进行实验。
4、报告内容:(1)通过企业管理器,建立图书借阅数据库;(2)在建好的图书借阅数据库中建立图书、读者和借阅3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价,作者)读者(编号,姓名,单位,性别,电话)借阅(书号,读者编号,借阅日期)要求为属性选择合适的数据类型,定义每个表的主码,是否允许空值和默认值等列级数据约束。
;(3)指出图书读者数据库各表的主码、外码和数据约束;(4)实验操作步骤和实验结果用截图显示出来。
实验报告学院:计算机与信息学院专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发(订正、重做)实验二数据库的建立和维护实验1、实验目的熟练掌握使用SQL、Transact-SQL和SQL Server企业管理器向数据库输入数据、修改数据和删除数据的操作。
2、实验仪器(环境):计算机及SQL Server 20003、实验操作方法:依照实验指导书的内容进行实验。
4、报告内容:(1)以一条记录为例,写出用SQL表示的向图书表中插入、修改和删除数据的语句。
(2)用SQL实现在读者表中增加“借书册数”字段,统计借书者在1998年~1999年间所借书的册数,并将结果送入读者表中的借书册数字段的操作语句。
(3)写出操作的过程和操作结果(数据库中各表的数据)并用截图表示出来。
实验报告学院:计算机与信息学院专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发(订正、重做)实验三数据库的简单查询和连接查询实验1、实验目的掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五数据查询和连接查询一. 实验目的使学生熟练掌握简单表的数据查询、数据连接查询以及数据排序的操作方法,并加深对Transact-SQL语言的查询语句的理解。
二. 实验软件环境SQL Server2012三. 实验内容(一)实验要求:在SQL Server 2012查询设计器中,并用SELECT语句及WHERE查询条件进行简单查询及连接查询实验,其次使用ORDER BY排序子句实现输出结果的排序。
主要内容包括:1)简单查询操作包括投影、选择条件、数据排序等。
2)连接查询操作包括等值连接、自然连接、外连接、内连接、左连接和右连接等。
(二)要求完成以下查询要求:1)将清华大学出版社的书存入永久计算机图书表。
2)将借书日期在2012年以前的借阅记录存入临时超期借阅表。
3)查询发生了借阅关系的借书证号、借阅姓名等信息,并按借书证号降序排列。
4)查询“清华大学出版社”出版的图书情况。
5)查询目前被借出去的书籍的书号、借书证号以及借出日期,并按借出日期降序排序。
6)查询“程军”老师所借阅的书籍的书名。
7)查询借书者的编号、姓名、单位、所借书号、书名和借阅日期,并按读者编号排序。
四. 实验的结果及分析(1)将计算机类的书存入永久计算机图书表CREATE TABLE Computer_Book(bno char(8) PRIMARY KEY,category varchar (10),title varchar(40) NOT NULL, press varchar(30) NOT NULL, book_year Int NOT NULL, author varchar(20),pricedecimal(7,2) NOT NULL, book_totalInt NOT NULL)INSERT INTO Computer_Book SELECT *FROM Book WHERE press='清华大学出版社select *from Computer_Book;【查看表】[3结果缶消息bao flats gorytitle4uth4r pri1 门 ! ]计算机科学 严瞬设H淸华尢学出版社 3033J 容。
口 30.00 125 210计尊机科学 pythanAll青华大学出饭社 2C10 Flying 4S.00 120 3 □人文社科思考的技术淸华大学岀販社 ?035Jerry43.00120(2) 将借书日期在2012年以前的借阅记录存入临时超期借阅表。
CREATE TABLE #Overdue_Borrow ( enochar(7) FOREIGN KEY(CNO) REFERENCES Card(c no), bnochar(8) FOREIGN KEY(BNO) REFERENCES Book(b no),borrow_date SMALLDATETIME DEFAULT GETDATE(), return_date SMALLDATETIME, CONSTRAINT CBB_PRIM PRIMARY KEY(c no,b no,borrow_date))INSERT INTO Overdue_Borrow SELECT *from Borrow WHERE YEAR(borrow_date)<2012;(3) 查询发生了借阅关系的借书证号、借阅姓名等信息,并按借书证号降序排列。
SELECT DISTINCT cn o,c name FROM Card where cn o in (select cno from Borrow) ORDER BY eno DESC;(4) 查询“清华大学出版社”出版的图书情况。
SELECT *FROM Book WHERE press='清华大学出版社';210 计尊机科学pythm人门看华長学出版社2010 3 5 人文社科思誉的技术肓华大学出版社2015Flying43.00 12048. 00 LEO(5)查询目前被借出去的书籍的书号、借书证号以及借出日期,并按借出日期排序。
SELECT bn o,cno,borrow_date FROM Borrow WHERE return_date IS NULL ORDER BY borrow_date;(6)查询“程军”老师所借阅的书籍的书名。
SELECT title FROM Book,Card,BorrowWHERE (Card.c no=Borrow.c no) and (Borrow.b no=Book.b no) and (n ame=S 军')(7)查询借书者的编号、姓名、单位、所借书号、书名和借阅日期,并按读者编号排序。
SELECT Borrow.c no,n ame,departme nt,Borrow.b no,title,borrow_date FROM Borrow,Card,BookWHERE(o=o) and (Borrow.b no=Book.b no) ORDER Borrow.c no操作中出现的问题:由于借书日期默认都是系统当前时间,因此不存在借书日期在2012年以前的数据,因此,我们可以尝试着插入一条数据记录INSERT INTO Borrow(cno,b no,borrow_date,return_date) VALUES ('1008',7','2010-11-01','2018-08-25');//但是出现问题:存在外键约束限制。
分析:外键约束,比如B表存在一个字段b为B表的外码,有外键约束,字段B是A表的主键,那么在向B 表插入数据时,字段b必须为A表中b已经存在的值,否则会报违反外键约束。
正是因为Book表不存在bno = 7的书,因此首先要添加数据。
解决方法:在前面的语句前加入:INSERT INTO Book VALUES ('7','小说','斗破苍穹','中国文学出版社',2010,'wisdo n',20.00,30);思考题:(1)请思考数据库中永久表和临时表之间的差异临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除。
临时表有两种类型:本地和全局。
它们在名称、可见性以及可用性上有区别。
本地临时表的名称以单个数字符号倂)打头;它们仅对当前的用户连接是可见的;当用户从SQL Server实例断开连接时被删除。
全局临时表的名称以两个数字符号(##)打头,创建后对任何用户都是可见的,当所有引用该表的用户从SQL Server断开连接时被删除。
(2)对于“查询程军老师所借阅的书籍的书名”的查询语句,分别使用左连接、右连接和自然连接命令,试比较所产生的结果有何不同,说明其原因,并指出对于该查询要求,哪种连接更符合实际要求。
答:程军老师的借书证号:1006使用左select title from book left join borrow on (book.b no=borrow.b no and eno='1006')使用右连接:select title from borrow right join book on (borrow.bno=book.bno and eno='1006') 使用自然连接:select title * from borrow,book where borrow.bno=book.bno and eno='1006'。
该查询使用自然连接更符合实际要求。
五. 实验心得体会通过本实验基本学会如何进行简单表的数据查询、数据联接查询以及数据排序,并加深对SQL 和Transaet-SQL语言的查询语句的理解,通过实践验证能较好地掌握书本上的知识。
实验六嵌套查询一. 实验目的使学生熟练掌握数据查询中嵌套查询语句的操作方法,并加深对Transaet-SQL语言的查询语句的理解。
二. 实验软件环境Microsoft SQL Server 20012.实验内容要求完成以下查询要求:1)查询哪一年的图书最多2)查询每本借书证的借书册数。
3)今年未借过书的借书证4) 哪个系的同学借书最多。
5) 今年哪种类别的书借出最多。
四.实验的结果及分析根据实验内容,利用SQL 语句在查询分析器中输入如下代码并可得相应输出结果,/*查询哪一年的图书最多*/ use Liabery_3115001482;select book_year from book group by book_year;hav ing sum(book_total)>=all(select sum(book_total) from book group by book_year);口结果Lj :肯息1boo]c_year pniirMimraviiiimii irMii■>2015/*查询每本借书证的借书册数*/ use Liabery_3115001482;select eno ,co un t(c no )as coun t_borrow from borrow group by eno;口鉅貝jIQD.D1 LiiKM L2 LCHE 13 LOd3 14 LOCH I5 LCDF5L g L 财 t 7 LOB ILlWt/*今年未借过书的借书证*/ use Liabery_3115001482;select * from card where not exists (select * from borrow where eno=card.c no );/*哪个系的同学借书最多*/use Liabery_3115001482;select departme nt from Card, Borrowwhere Card.c no = Borrow.c no group by departme nt hav ing coun t(Borrow.c no) >=all(select coun t(Borrow.c no)from Card, Borrow where Card.c no = Borrow.c no group by departme nt)园结果匕消息/*今年哪种类型的书借出最多*/ use Liabery_3115001482;select category from Book, Borrow where Book.b no = Borrow.b no group by categoryhav ing coun t(Borrow.b no) >=all(select coun t(Borrow.b no)from Book, Borrow where Book.b no = Borrow.b no group by category)O 结果衍消息五.实验心得体会通过实验,对嵌套查询进行实质性的操作,在实践的基础上,更是懂得了其理论原理, 老师及书本上的知识更进一步的了解,对数据库的学习又迈出了新的一步。