数据库实验五六

合集下载

数据库实验五六

数据库实验五六

实验五数据查询和连接查询一.实验目的使学生熟练掌握简单表的数据查询、数据连接查询以及数据排序的操作方法,并加深对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年以前的借阅记录存入临时超期借阅表。

数据库实验五六1

数据库实验五六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)

数据库实验报告 (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图。

数据库原理及应用实验指导书答案

数据库原理及应用实验指导书答案

数据库原理及应用实验指导书 - 答案实验一:数据库管理系统的安装与配置问题一数据库管理系统(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函数,用于连接和操作数据库。

数据库 实验五

数据库 实验五

数据库实验五在学习数据库的过程中,实验是巩固理论知识、提高实践能力的重要环节。

本次实验五主要围绕数据库的某些关键操作和应用展开,通过实际动手操作,让我们对数据库的理解更加深入和全面。

本次实验的环境是常见的数据库管理系统,如 MySQL 或 SQL Server 等。

实验的目的是让我们熟练掌握数据库的查询、更新、插入和删除等基本操作,同时能够运用这些操作解决一些实际的问题。

实验的第一个任务是进行数据的查询操作。

查询是从数据库中获取所需信息的重要手段。

我们需要根据给定的条件,从数据表中筛选出符合要求的数据。

这就涉及到了使用 WHERE 子句来设定条件,以及各种运算符如等于(=)、大于(>)、小于(<)、不等于(<>)等的运用。

同时,还需要掌握连接(JOIN)操作,将多个相关的数据表连接起来,以获取更全面和准确的信息。

例如,在一个学生成绩管理系统中,要查询某个班级中数学成绩大于 80 分的学生名单,就需要先从学生表中获取班级信息,再从成绩表中筛选出数学成绩符合条件的记录,最后通过学生学号将两个表连接起来,得到最终的结果。

接下来是数据的更新操作。

这包括对已有数据的修改和删除。

在进行更新操作时,必须格外小心,因为一旦操作失误,可能会导致数据的丢失或错误。

在修改数据时,同样要使用 WHERE 子句来指定要修改的记录。

例如,要将某个学生的数学成绩从 80 分修改为 90 分,就需要明确指定该学生的学号或其他唯一标识。

而删除数据则需要更加谨慎,通常建议先进行查询,确认要删除的记录准确无误后,再执行删除操作。

数据的插入操作也是实验的重要部分。

插入新的数据可以增加数据库的信息量。

在插入数据时,需要注意数据的类型和格式要与数据表的定义相匹配。

比如,一个学生信息表中,学号是整数类型,姓名是字符串类型,出生日期是日期类型,如果插入的数据类型不正确,就会导致插入失败。

在实验过程中,我也遇到了一些问题和挑战。

比如,在进行复杂的查询操作时,由于条件设置不当,导致查询结果不准确。

数据库实验报告:实验五

数据库实验报告:实验五

数据库实验报告:实验五一、实验目的本次数据库实验五的主要目的是深入了解和掌握数据库的高级操作,包括存储过程的创建与使用、视图的定义和应用、以及事务处理的原理和实践。

通过这些实验内容,提高我们对数据库系统的综合运用能力,为解决实际的数据库管理问题打下坚实的基础。

二、实验环境本次实验使用的数据库管理系统是 MySQL 80,开发工具为 Navicat Premium 12。

操作系统为 Windows 10 专业版。

三、实验内容及步骤(一)存储过程的创建与使用1、创建一个名为`get_student_info` 的存储过程,用于根据学生学号查询学生的基本信息(包括学号、姓名、年龄、性别和专业)。

```sqlDELIMITER //CREATE PROCEDURE get_student_info(IN student_id INT)BEGINSELECT FROM students WHERE student_id = student_id;END //DELIMITER ;```2、调用上述存储过程,查询学号为 1001 的学生信息。

```sqlCALL get_student_info(1001);```(二)视图的定义和应用1、创建一个名为`student_grade_view` 的视图,用于显示学生的学号、姓名和平均成绩。

```sqlCREATE VIEW student_grade_view ASSELECT sstudent_id, sname, AVG(ggrade) AS average_gradeFROM students sJOIN grades g ON sstudent_id = gstudent_idGROUP BY sstudent_id, sname;```2、查询上述视图,获取所有学生的平均成绩信息。

```sqlSELECT FROM student_grade_view;```(三)事务处理1、开启一个事务,向学生表中插入一条新的学生记录(学号:1005,姓名:_____,年龄:20,性别:男,专业:计算机科学)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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),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年以前的借阅记录存入临时超期借阅表。

CREATE TABLE #Overdue_Borrow( cno char(7) FOREIGN KEY(CNO) REFERENCES Card(cno),bno char(8) FOREIGN KEY(BNO) REFERENCES Book(bno),borrow_date SMALLDATETIME DEFAULT GETDATE(),return_date SMALLDATETIME,CONSTRAINT CBB_PRIM PRIMARY KEY(cno,bno,borrow_date))INSERT INTO Overdue_Borrow SELECT *from Borrow WHERE YEAR(borrow_date)<2012;(3)查询发生了借阅关系的借书证号、借阅姓名等信息,并按借书证号降序排列。

SELECT DISTINCT cno,cname FROM Card where cno in (select cno from Borrow) ORDER BY cno DESC;(4)查询“清华大学出版社”出版的图书情况。

SELECT *FROM Book WHERE press='清华大学出版社';(5)查询目前被借出去的书籍的书号、借书证号以及借出日期,并按借出日期排序。

SELECT bno,cno,borrow_date FROM Borrow WHERE return_date IS NULL ORDER BY borrow_date;(6)查询“程军”老师所借阅的书籍的书名。

SELECT title FROM Book,Card,BorrowWHERE (o=o) and (Borrow.bno=Book.bno) and (name='程军')(7)查询借书者的编号、姓名、单位、所借书号、书名和借阅日期,并按读者编号排序。

SELECT o,name,department,Borrow.bno,title,borrow_date FROM Borrow,Card,Book WHERE(o=o) and (Borrow.bno=Book.bno) ORDER o操作中出现的问题:由于借书日期默认都是系统当前时间,因此不存在借书日期在2012年以前的数据,因此,我们可以尝试着插入一条数据记录INSERT INTO Borrow(cno,bno,borrow_date,return_date) V ALUES ('1008','7','2010-11-01','2018-08-25'); // 但是出现问题:存在外键约束限制。

分析:外键约束,比如B表存在一个字段b为B表的外码,有外键约束,字段B是A表的主键,那么在向B表插入数据时,字段b必须为A表中b已经存在的值,否则会报违反外键约束。

正是因为Book表不存在bno = 7的书,因此首先要添加数据。

解决方法:在前面的语句前加入:INSERT INTO Book V ALUES ('7','小说','斗破苍穹','中国文学出版社',2010,'wisdon',20.00,30);思考题:(1)请思考数据库中永久表和临时表之间的差异临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除。

临时表有两种类型:本地和全局。

它们在名称、可见性以及可用性上有区别。

本地临时表的名称以单个数字符号(#) 打头;它们仅对当前的用户连接是可见的;当用户从SQL Server 实例断开连接时被删除。

全局临时表的名称以两个数字符号(##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从SQL Server 断开连接时被删除。

(2)对于“查询程军老师所借阅的书籍的书名”的查询语句,分别使用左连接、右连接和自然连接命令,试比较所产生的结果有何不同,说明其原因,并指出对于该查询要求,哪种连接更符合实际要求。

答:程军老师的借书证号:1006使用左接: select title from book left join borrow on (book.bno=borrow.bno and cno='1006')使用右连接:select title from borrow right join book on (borrow.bno=book.bno and cno='1006')使用自然连接:select title * from borrow,book where borrow.bno=book.bno and cno='1006' 。

该查询使用自然连接更符合实际要求。

五.实验心得体会通过本实验基本学会如何进行简单表的数据查询、数据联接查询以及数据排序,并加深对SQL 和Transact-SQL语言的查询语句的理解,通过实践验证能较好地掌握书本上的知识。

实验六嵌套查询一.实验目的使学生熟练掌握数据查询中嵌套查询语句的操作方法,并加深对Transact-SQL语言的查询语句的理解。

二.实验软件环境Microsoft SQL Server 20012三.实验内容要求完成以下查询要求:1)查询哪一年的图书最多。

2)查询每本借书证的借书册数。

3)今年未借过书的借书证4)哪个系的同学借书最多。

5)今年哪种类别的书借出最多。

四.实验的结果及分析根据实验内容,利用SQL语句在查询分析器中输入如下代码并可得相应输出结果,/*查询哪一年的图书最多*/use Liabery_3115001482;select book_year from book group by book_year;having sum(book_total)>=all(select sum(book_total) from book group by book_year);/*查询每本借书证的借书册数*/use Liabery_3115001482;select cno,count(cno)as count_borrow from borrow group by cno;/*今年未借过书的借书证*/use Liabery_3115001482;select * from card where not exists (select * from borrow where cno=o );/*哪个系的同学借书最多*/use Liabery_3115001482;select department from Card, Borrowwhere o = ogroup by departmenthaving count(o)>=all(select count(o)from Card, Borrowwhere o = o group by department)/*今年哪种类型的书借出最多*/use Liabery_3115001482;select category from Book, Borrowwhere Book.bno = Borrow.bnogroup by categoryhaving count(Borrow.bno)>=all(select count(Borrow.bno)from Book, Borrowwhere Book.bno = Borrow.bno group by category)——这里是并列一样多。

五.实验心得体会通过实验,对嵌套查询进行实质性的操作,在实践的基础上,更是懂得了其理论原理,表明对老师及书本上的知识更进一步的了解,对数据库的学习又迈出了新的一步。

相关文档
最新文档