第一篇:北工大 数据库实验报告
数据库实验报告
专业:电子信息工程 学号:14020019 姓名:康文杰
一,实验内容:
本章介绍关系数据库标准语言SQL。主要内容包括:1数据定义、2数据操纵、3数据控制和数据约束等。
实验目标:
(1)SQL数据库的体系结构,SQL的组成。
(2)SQL的数据定义:SQL模式、基本表和索引的创建和撤销。(3)SQL的数据查询:
SELECT语句的句法,SELECT语句的几种形式及各种限定,基本表的联接操作。
(4)SQL的数据更新:插入、删除和修改语句。
(5)视图的创建和撤消,对视图更新操作的限制。(6)嵌入式SQL: 预处理方式,使用规定,使用技术,卷游标,动态SQL语句。
上课内容: 1)SQL的发展历程
SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统System R上实现。
1986年10月,经美国国家标准局(ANSI)的数据库委员会批准了SQL作为关系数据库语言的美国标准,并公布了标准SQL文本。
1987年6月国际标准化组织(ISO)将其采纳为国际标准,称为“SQL86”。相继出现了“SQL89”、“SQL2(SQL92)”、“SQL3”。2)SQL已成为关系数据库领域中的一个主流语言:
首先,各个数据库产品厂家纷纷推出了自己的支持SQL的软件或与SQL接口的软件。
其次,SQL在数据库以外的其他领域也受到了重视。不少软件产品将SQL的数据检索功能与面向对象技术、图形技术、软件工程工具、软件开发工具、人工智能语言等相结合,开发出功能更强的软件产品。
3)SQL数据库的体系结构的特征:
一个SQL模式是表和约束的集合。
一个表(TABLE)是行的集合。每行是列的序列,每列对应一个数据项。一个表可以是一个基本表,也可以是一个视图。一个基本表可以跨一个或多个存储文件,一个存储文件也可存储一个或多个基本表。
用户可以用SQL语句对视图和基本表进行查询等操作。SQL用户可以是应用程序,也可以是终端用户。4)SQL的组成
(1)数据定义语言(Data Definition Language,简称DDL)用于定义SQL模式、基本表、视图和索引。(2)查询语言(Query Language,简称QL)用于数据查询。
(3)数据操纵语言(Data Manipulation Language,简称DML)用于数据的增、删、修改。
(4)数据控制语言(Data Control Language,简称DCL)用于数据访问权限的控制。
二,实验过程:
1)定义基本表 : CREATE TABLE<表名>(<属性名1 ><类型1>[NOT NULL] [UNIQUE]
[,<属性名2><类型2+ *NOT NULL+ *UNIQUE+ +…)
[其他参数];
一个关系的主关键字由一个或几个属性构成,在CREATE TABLE中使用保留字PRIMARY KEY声明主关键字:
(1)在列出关系模式的属性时,在属性及其类型后加上保留字PRIMARY KEY,表示该属性是主关键字;
(2)在列出关系模式的所有属性后,再附加一个声明:
PRIMARY KEY(<属性1>[,<属性2>…+)如果关键字由多个属性构成,则必须使用方法(2)
2)基本表的修改和删除 1 增加新的属性
ALTER TABLE [<表的创建者名.>] <表名>
ADD<属性名><类型>; 2基本表的删除
在SQL中删除一个无用表的操作是非常简单的,其语句格式为:
DROP TABLE <表名>;
3)查询语句格式
查询语句的基本部分:
SELECT <属性列表>
FROM <基本表>(或视图)
[WHERE <条件表达式>];
4)元组插入,修改和删除
1元组插入语句的一般格式是:
INSERT INTO <表名>[(<属性名1> [,<属性名2>,…+)+
VALUES(<常量1>[,<常量2>,…]);
2删除元组的语句格式是:
DELETE
FROM <表名>
[WHERE <条件>]; SQL中用数据修改(UPDATE)来修改元组的值。其语句格式是:
UPDATE <表名>
SET <属性1>=<表达式1>[,<属性2>=<表达式2>,…]
[WHERE <条件>];
5)简单查询
最简单的SQL查询只涉及到一个关系,类似于关系代数中的选择运算。
三,实验感悟
总结:1SQL是关系数据库的标准语言,已广泛应用在商用系统中。
2SQL的数据定义部分包括对SQL模式、基本表、视图、索引的创建和撤消。
3SQL的数据操纵分成数据查询和数据更新两部分。4SQL的数据查询是用SELECT语句实现,兼有关系代数和元组演算的特点。5SQL的数据更新包括插入、删除和修改等三种操作,在视图中只有行列子集视图是可以更新的。
6嵌入式SQL涉及到SQL语句的宿主语言程序中的使用规定,以解决两种语言的不一致和相互联系的问题。
通过本次实验基本掌握了数据库的结构化查询语言SQL,为接下来数据库大作业打了基础,在本次实验中通过对SQL语言的学习,我们组对数据库大作业有了更清晰的规划。
第二篇:数据库实验报告
实验报告
1.实验内容与实验性质
实验内容:数据库实例设计
实验性质:专业基础综合设计性实验
2.实验目的与要求
实验目的:深化“数据库设计”一章的课堂教学,借助数据库实例设计过程,掌握数据库设计中需求分析的实现方法、数据库概念结构设计、数据库逻辑结构设计及优化过程、数据库物理设计与数据库运行和维护过程。
实验要求:按数据库原理与技术课程实验指导(数据库设计部分).doc完成实验任务,演示成果和递交设计报告与实验报告。
1.数据库概念结构设计,画ER图
2.数据库逻辑结构设计,关系模式设计与优化。
3.SQL Server关系数据库的建立,包括数据安全性与完整性设计及模拟数据的输入。
4.自行设计和定义应用视图并输出结果。
5.数据库试运行与数据查询界面设计。
3.实验设备
装有Microsoft SQL Server、Office2000的计算机1人/台
4.实验时数6学时
5.注意事项
按课堂要求进行个人上机操作练习为主,同组可互相交流。
6.实验过程与结果(包括E-R模型与描述、逻辑结构设计与物理设计描述与有关的界面、用户视图定义及其结果、查询界面等内容)
7.实验总结与体会
附件:各次实验规定提交的结果文件。
请同学们将需要提交的实验报告、实验结果文件按“数据库原理与技术+班级+姓名”的形
式打包成一个压缩文件于第10周星期五前交到z-yhongstu@163.com信箱。
第三篇:数据库实验报告
南华大学
计算机科学与技术学院
实验报告
(202_ ~202_ 学
第二学期)
课程名称 实验名称
数据库原理与技术
姓名 张涛 学号 20124350230
专业 软件工程
班级 02班
地点
教师 刘征海 实验1 认识DBMS 一.实验题目
认识DBMS 二.实验要求
1.利用管理工具创建数据库、表和表间关系。
实验目的和注意事项 基本操作,进一步理解数 据库、表、表间关系的概念。
注意事项:创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。三.实验代码(内容)
(1)利用SQL Server Management Studio 创建数据库,名称为【学生选课
YYXXXX】。其中YY为专业代号,计算机为JS,软件工程为RJ,网络为WL,数媒为
SM;XXXX为各位同学的学号中的最后四位 实验目的:熟悉SQL Server Management Studio
(2)在【学生选课YYXXXX】中建立数据表,表的定义如下所示。
学生YYXXXX(学号,姓名,性别,出生日期,院系名称,备注);
课程YYXXXX(课程号,课程名,先行课,学分); 选修YYXXXX(学号,课程号,分数)。
要求定义每张表的主码,为属性选择合适的数据类型,决定是否允许为空,为【性别】和【学分】属性定义默认值。
(3)定义表之间的关系。
(4)分别为表录入几行数据记录,同时练习数据的修改和删除操作
2.利用SQL 语句创建数据库、表和表间关系 实验目的和注意事项
实验目的:熟悉创建数据库和数据表的SQL 语句。
注意事项:输入SQL 语句时应注意,语句中均使用西文操作符号。
实验内容
在SQL Server Management Studio 中新建查询,实现以下操作。(1)用SQL 语句创建数据库,名称为“StudentCourseYYXXXX”。其中YYXXXX 为各位同学的学号中的最后四位。
(2)用SQL 语句创建StudentCourseYYXXXX 中的3 张表,同时指定主码、外 码、默认值等。
(3)直接在表数据窗口中录入表数据记录。
实验 2 交互式 SQL(1)
一、数据库单表查询 实验目的和注意事项
实验目的:掌握单表查询SELECT、FROM、WHERE 的用法,特别要掌握比较运 算符、逻辑运算符的使用。注意事项:子句WHERE<条件>表示元组筛选条件;子句HAVING<条件>表示元
组选择条件;子句HAVING<条件>必须和GROUP BY 子句配合使用;注意输入SQL语句时均应使用西文操作符号。实验内容
(1)创建查询窗口,设置查询环境。(2)单表查询 实验步骤
(1)选择要查询的数据库,右击【新建查询】,或者选择系统菜单中的【文
件】|【新建】|【使用当前连接查询】命令,或者单击标准工具栏中的【新建查
询】按钮,即可新建一个查询窗口。如果查询数据库不是StudentCourseYYXXXX,则可在可用数据库下拉列表中进行选择,或用USE 语句调用。
(2)在查询窗口中输入SELECT 查询语句,对StudentCourseYYXXXX 数据库 进行查询操作。
① 查询计算机系全体学生的信息
② 查询姓“李”的学生的学号和姓名。
③ 查询课程表中先行课为空的课程名。
④ 查询考试成绩有不及格的学生的学号。
⑤ 求选修了C1 课程或C2 课程的学生的学号及成绩。
⑥ 查询全体计算机系学生的姓名及其年龄。
⑦ 查询计算机系在1986-1987 年之间出生的学生的姓名。
⑧ 查询姓“李”的前两个学生的学号和姓名。
⑨ 查询选修了两门以上课程的学生学号与课程数。
⑩ 查询选修课程数大于等于2 的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。
二、数据库多表连接查询 实验目的和注意事项
实验目的:理解多表查询的概念;掌握多表查询的SELECT、FROM、WHERE、JOIN子句的用法,特别要求比较内连接、外连接的结果。
注意事项:内连接、左外连接和右外连接的含义及表达方法;注意输入SQL 语 句时均应使用西文操作符号。实验内容
(1)创建查询窗口,设置查询环境。(2)多表复杂查询。实验步骤
新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行多表连接查询操作。(1)查询选修了【数据库原理】的计算机系的学生学号和姓名。
(2)查询每一门课的间接先行课(即先行课的先行课)。
(3)查询学生的学号、姓名、选修课程的名称和成绩。
(4)查询选修了课程的学生姓名。
(5)查询所有学生的信息和所选修的课程。
(6)查询已被选修的课程的情况和所有课程的名字。
(7)列出学生所有可能的选修情况。
(8)查找计算机系的学生选修课程数大于2 的学生的姓名、平均成绩和选课 门数,并按平均成绩降序排列。
实验 3 交互式 SQL(2)数据库嵌套查询和组合查询 实验目的和注意事项
实验目的:掌握查询中嵌套查询和组合查询的操作方法,进一步加深对 SELECT 语句的理解。
注意事项:子句的使用;注意语句的层次嵌套关系和括号的配对使用问题;
注意输入SQL 语句时均应使用西文操作符号。实验内容(1)创建查询窗口,设置查询环境。(2)分组查询。(3)统计查询。(4)嵌套查询。实验步骤
新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行嵌套查询和组合查询操作。
(1)统计选修了【数据库原理】课程的学生人数。
(2)查询没有选修【数据库原理】课程的学生信息。
(3)查询其他系中比计算机系学生年龄都小的学生。
(4)查询被0602001 学生或0602002 学生所选修的课程的课程号(用UNION 组合查询与IN 条件查询两种方法实现)。
(5)查询0602001 学生和0602002 学生同时选修的课程的课程号(用
INTERSECT 组合查询与EXISTS 嵌套子查询两种方法实现)。
(6)查询被0602001 学生选修,但没有被0602002 学生所选修的课程的课程
号(用EXCEPT 组合查询与NOT EXISTS 嵌套子查询两种方法实现)。
实验 4 交互式 SQL(3)数据的更新 实验目的和注意事项
实验目的:熟悉插入、修改和删除SQL 语句的用法。注意事项:对于INSERT 语句,要求理解默认值约束、空值约束在插入时所 起的作用。实验内容
(1)使用INSERT 语句在数据库的表中插入几行记录。(2)使用UPDATA 语句修改某个数据。(3)使用DELETE 语句删除某行记录。实验步骤
(1)新建查询窗口,选择StudentCourseYYXXXX 为当前数据库。
(2)在已建立StudentCourseYYXXXX 数据库和StudentsYYXXXX、CoursesYYXXXX、SCYYXXXX 3 个表的基础上,向StudentCourseYYXXXX数据库中 的表更新数据。
① 向表StudentsYYXXXX 中插入(0601001,赵林, 男,1985-09-08,计算机)的记录。
② 向SCYYXXXX 表中添加一个学生的选课记录,学号为0601001,所选的课
程号为C2。SC表中有Sno、Cno、Grade 这3 个列。这里只知道学号和课程号,不知道成绩值。
③ 向表StudentsYYXXXX 中插入(0601002,张修雨,default)记录,该记录 的数据中default 表示默认值‘男’,其他数据表示空值。
④ 用CREATE 语句建立表StudentBAK1YYXXXX,包含(与Students 的Sno、Sname、Sdept 相同)3 个字段,然后用INSERT SELECT 语句实现向
StudentBAK1YYXXXX 添加StudentsYYXXXX 表中的计算机系学生的学号、姓名、所在系的信息。
⑤ 用 SELECT...INTO 语句实现把StudentsYYXXXX 表中1986 年后(包含
1986 年)出生的学生的学号、姓名存储到一个新表StudentBAK2YYXXXX。
⑥ 将姓名为【赵林】的同学的所在系改为【机电系】,爱好改为【足球】。
⑦ 将选修了课程名为【数据库原理】的学生成绩加5 分。⑧ 将StudentCourseYYXXXX
数据库的StudentBAK1YYXXXX 表中所有姓赵的 同学删除。
⑨ 删除计算机系选修成绩不及格的学生选修记录。⑩ 将除。StudentCourseYYXXXX
数据库的StudentBAK2YYXXXX 表中的所有行删
四.实验总结
实验一要注意创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。输入SQL 语句时应注意,语句中均使用西文操作符号;实验二应注意注意group和having以及where的搭配使用的情况;实验三注意注意输入SQL 语句时均应使用西文操作符号,子句的使用,注意语句的层次嵌套关系和括号的配对使用问题;实验四注意输入SQL 语句时均应使用西文操作符号,对于INSERT 语句,要求理解默认值约束、空值约束在插入时所起的作用。注意插入,修改,新建表,删除语句的写法,并且掌握把原表中的数据转存到新表中的语句写法。
第四篇:数据库实验报告
实验4SQL高级应用
【实验目的】
1、掌握在SQL SERVER 202_下进行数据还原的方法。
2、掌握SQL语句的查询统计功能和数据更改功能。
【实验内容】
1.还原factory数据库。
2.在factory数据库上,完成如下各题。
(1)删除factory数据库上各个表之间建立的关系。(2)*显示各职工的工资记录和相应的工资小计。
(3)*按性别和部门名的所有组合方式列出相应的平均工资。
(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。
在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。
(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。(6)显示最高工资的职工所在的部门名。
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。(8)*采用游标方式实现(6)小题的功能。(9)*采用游标方式实现(7)小题的功能。
(10)*先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。
【实验报告要求】
1.第(1)写出操作步骤。
2.其他各题写出实现要求的命令/程序,并列出执行结果。
【操作步骤】
1.还原factory数据库。
2.在factory基础上,有
(1)删除factory数据库上各个表之间建立的关系。
(2)*显示各职工的工资记录和相应的工资小计。
Select 职工号,姓名,工资from salary Order by 职工号
Compute sum(工资)by 职工号
(3)*按性别和部门名的所有组合方式列出相应的平均工资。
select worker.职工号,worker.性别,depart.部门名,avg(工资)as'平均工资' from worker inner join depart on worker.部门号=depart.部门号 inner join salary on worker.职工号=salary.职工号
group by worker.职工号,worker.性别,depart.部门名
order by worker.职工号
(4)在worker表中使用以下语句插入一个职工记录。职工号:20;姓名:陈立;性别:女;出生日期:55/03/08;党员否: 1;参加工作:75/10/10;部门号:4。
insert into worker values('20','陈立','女','1955-03-08','1','1975-10-10',4)
在depart表中使用以下语句插入一个部门记录。部门号:5;部门名:设备处。
Insert into depart Values('5','设备处')对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。
use factory Select b.部门号,c.姓名
from salary a,departb,worker c delete from worker where 职工号=20 delete from depart where 部门号=5(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。
Use factory Select b.部门名,c.职工号,c.姓名,b.部门名,a.日期,a.工资 from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and a.职工号=c.职工号and b.部门号=c.部门号(6)显示最高工资的职工所在的部门名。
Use factory Select b.部门名from salary a,departb,worker c Where 工资in(select max(a.工资)from salary a)and c.部门号=b.部门号and a.职工号=c.职工号
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。
Use factory Select a.职工号,a.姓名,avg(b.工资)as平均工资from worker a,salary b where a.职工号=b.职工号 group by a.职工号,a.姓名
having avg(工资)<(select avg(工资)from salary)
第五篇:数据库实验报告
数据库实验报告
一、题目要求
某银行准备开发一个银行业务管理系统,通过调查,得到以下的主要需求:
银行有多个支行。各个支行位于某个城市,每个支行有唯一的名字。银行要监控每个支行的资产。银行的客户通过其身份证号来标识。银行存储每个客户的姓名及其居住的街道和城市。客户可以有帐户,并且可以贷款。客户可能和某个银行员工发生联系,该员工是此客户的贷款负责人或银行帐户负责人。银行员工也通过身份证号来标识。员工分为部门经理和普通员工,每个部门经理都负责领导其所在部门的员工,并且每个员工只允许在一个部门内工作。每个支行的管理机构存储每个员工的姓名、电话号码、家庭地址及其经理的身份证号。银行还需知道每个员工开始工作的日期,由此日期可以推知员工的雇佣期。银行提供两类帐户——储蓄帐户和支票帐户。帐户可以由2个或2个以上客户所共有,一个客户也可有两个或两个以上的帐户。每个帐户被赋以唯一的帐户号。银行记录每个帐户的余额、开户的支行以及每个帐户所有者访问该帐户的最近日期。另外,每个储蓄帐户有其利率,且每个支票帐户有其透支额。每笔贷款由某个分支机构发放,能被一个或多个客户所共有。每笔贷款用唯一的贷款号标识。银行需要知道每笔贷款所贷金额以及逐次支付的情况(银行将贷款分几次付给客户)。虽然贷款号不能唯一标识银行所有为贷款所付的款项,但可以唯一标识为某贷款所付的款项。对每次的付款需要记录日期和金额。
二、需求分析
这一部分主要是根据实验需求对银行系统需求中的实体、实体属性以及实体之间的关联进行确认,以便画出正确的概念模型。
2.1 实体确认
根据需求分析确认实体:银行员工、银行支行、客户、账户(其中:储蓄账户、支票账户是继承实体账户而来)、贷款、支付(弱实体)。
2.2 实体属性确认
银行员工:身份证号(pi)、姓名、电话号码、家庭地址、开始工作日期 银行支行:支行名、资产、城市
客户:身份证号、姓名、街道、所在城市 账户:账户号、余额、最近访问日期 支票账户:透支额 储蓄账户:利率 2.3 实体关系确认
账户和支行:N:1定义关系为Relationship_accout_bank 客户和贷款:M:N定义关系为Relationship_client_loan 客户和员工:M:1 定义关系为 Relation_client_staff 贷款和支行:1:N 定义关系为 Relationship_loan_bank 客户和账户:M:N 定义关系为 client__accout 贷款发放信息和贷款:N:1 定义关系为 Relationship_loan_pay 支行和员工:1:N 定义关系为Relationship_staff_bank
员工和员工:1:N 定义关系为 Relationship_lead
三、概念模型(CDM)
根据sybase power designer画出概念模型(CDM),如下图所示:
四、物理模型(PDM)
根据概念模型转化成物理模型(PDM),如下图所示: