实验一 数据库设计参考答案

合集下载

数据库实验题目和答案

数据库实验题目和答案

按照如下方式重新定义四张表:定义新的books表,其所拥有的属性与属性类型与原有的books表一致以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供约束名定义属性category为”非空” ,同时在定义的时候必须提供约束名create table Books(bookId number(9,0)constraint BooksKey primary key,title varchar(80),author varchar(40),year integer,category varchar(15)constraint B1 not null);commit;定义新的customers表,其所拥有的属性与属性类型与原有的customers表一致以表级完整性的方式定义属性cid为主码以列级完整性的方式定义属性cname为”唯一”,同时在定义的时候必须提供约束名create table Customers (cid number(9,0),cname char(40)constraint C1 unique,age integer,primary key(cid));commit;定义新的purchases表,其所拥有的属性与属性类型与原有的purchases表一致定义属性cid与bookId为主码,同时在定义的时候必须提供约束名以列级完整性的方式定义属性bookId为外码,它参照Books表的主码,同时在定义的时候必须提供约束名。

当删除Books表中的某一本书时,级联删除与它相关的购买记录以表级完整性的方式定义属性cid为外码,它参照customers表,同时在定义的时候必须提供约束名。

当删除customers表中的某个顾客时,如果存在与该客户相关的购买记录,拒绝删除。

create table Purchases(cid number(9,0),bookId number(9,0)constraint bookidFKey references Books(bookid)on delete cascade,pdate date,pprice number(8,2),constraint PurchasesKey primary key(cid,bookid),constraint cidFKey foreign key(cid) references customers(cid));commit;定义新的pricing表,其所拥有的属性与属性类型与原有的pricing表一致以列级完整性的方式定义属性booId为主码,同时在定义的时候必须提供约束名定义约束,要求当书的format是‘paperback’时,当前价格不能超过50create table Pricing(bookId number(9,0)constraint PricingKey primary key,format varchar(15),price number(9,2),constraint P1 check (format <>'paperback' OR price<=50));commit;创建如下的触发器:定义一个AFTER行级触发器,当修改books表的bookid后,自动修改purchases和pricing表中与它相关记录中的bookid(只允许使用一个触发器) create trigger alter_bookidafter update on booksfor each rowbeginif(:new.bookid<>:old.bookid)then update purchasesset bookid = :new.bookidwhere bookid = :old.bookid;update pricingset bookid = :new.bookidwhere bookid = :old.bookid;end if;end;定义如下的一张表:Score(Sno, Chinese, Math, English, Total)Sno是主码Chinese, Math, English分别表示三门课成绩,并且三门课的成绩取值范围是0-100且均不能为空值Total的取值需要正好是三门课成绩总和定义一个AFTER行级触发器,当修改Score表中某门课的成绩后,自动修改Totalcreate table Score(Sno number(9,0)constraint SnoKey primary key,Chinese number(9,2)constraint S1 check(Chinese BETWEEN 0 and 100)constraint S2 not null,Math number(9,2)constraint S3 check(Math BETWEEN 0 and 100)constraint S4 not null,English number(9,2)constraint S5 check(English BETWEEN 0 and 100)constraint S6 not null,Total number(9,2),constraint S7 check (total = chinese+math+english));定义触发器create trigger update_scorebefore update on scorefor each rowbegin:new.total := :new.chinese+:new.math+:new.english;end;利用书本上的3张表:student, course, sc问题1:对各门课程成绩进行分段统计,并有类似如下的输出结果课程: 数据库0<成绩<60 0人课程: 数据库60<成绩<80 0人课程: 数据库81<成绩<100 1人课程: 数学0<成绩<60 0人课程: 数学60<成绩<80 1人课程: 数学81<成绩<100 2人课程: 数据结构0<成绩<60 0人课程: 数据结构60<成绩<80 1人课程: 数据结构81<成绩<100 1人解答set serveroutput ondeclarea number; --0-60分人数b number; --61-80分人数c number; --81-100分人数cname ame%type; --临时存储课程名o游标,遍历sc表中的每一门课,得到课程号cnocursor cur_sc_cno isselect DISTINCT cnofrom sc;--sc.grade游标,根据cur_sc_cno游标中的课程号遍历成绩gradecursor cur_sc_grade(var_cno in o%type) isselect gradefrom scwhere cno = var_cno;ame游标,根据cur_sc_cno游标中的课程号遍历课程名cnamecursor cur_course_cname(var_cno in o%type) isselect cnamefrom coursewhere cno = var_cno;begin--遍历sc表的cnofor record_sc_cno in cur_sc_cnoloopa:=0; --初始化a,b,cb:=0;c:=0;--根据record_sc_o遍历sc表的gradefor record_sc_grade in cur_sc_grade(record_sc_o)loopif record_sc_grade.grade > 0 and record_sc_grade.grade < 61 then a:=a+1;end if;if record_sc_grade.grade > 60 and record_sc_grade.grade < 81 then b:=b+1;end if;if record_sc_grade.grade > 80 and record_sc_grade.grade < 101 then c:=c+1;end if;end loop;--根据record_sc_cno得到当前课程名for record_course_cname in cur_course_cname(record_sc_o)loopcname:=record_course_ame;end loop;dbms_output.put_line('课程:'||cname||' 0<成绩<60 '||a||'人');dbms_output.put_line('课程:'||cname||' 61<成绩<80 '||b||'人');dbms_output.put_line('课程:'||cname||' 81<成绩<100 '||c||'人');end loop;end;问题2:需要找出课程a的前n名同学以及他们成绩,并按照从高到低排列。

数据库实验示例带答案

数据库实验示例带答案

示例1实验一实验名称:SQL语句的应用(6课时)一、实验目的通过使用SQL SERVER企业管理器建立表。

模式为人事表、客户表、销售表、销售明细表、产品表。

理解数据库模式的概念,理解主键约束、外键约束、UNIQUE约束和CHECK 约束。

通过SQL SERVER企业管理器建立表间的约束。

将得到的表生成脚本,保存。

二、实验环境是MS SQL SERVER 2000的中文客户端。

三、实验示例create table employee1(emp_no char(5) not null,constraint emp_nochk check(emp_no like '[E-F][0-9][0-9][0-9][0-9]'),emp_name char(10) not null,emp_sex char(1) not null,constraint emp_sexchk check(emp_sex in ('m','f')),emp_phone char (13) not null,constraint emp_phonechk check(emp_phone like '([0-9][0-9][0-9])[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'), emp_add varchar(60) not null,emp_salary char(5) not null,constraint emp_salarychk check (emp_salary between 60000 and 80000))go四、实验内容与步骤1、建立五张表,每张表至少需要20条记录。

(1)/*员工人事表employee */(2)/*客户表customer */(3)/*销售主表sales */(4)/*销货明细表sale_item */(5)/*产品名称表product */2、建立表的同时创建表的约束。

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

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

数据库原理及应用实验答案1. 数据库原理数据库原理指的是数据库系统的内部机制和运行原理。

以下是数据库原理的相关内容:- 数据库模型:定义数据的组织方式和约束条件,包括层次模型、网状模型、关系模型、面向对象模型等。

- 数据库结构:描述数据库中数据组织的方式,包括表、视图、索引、存储过程等。

- 数据操作:定义对数据库中数据进行操作的方式,包括增删改查等。

- 数据库事务:保证数据库操作的一致性和完整性的机制,包括ACID(原子性、一致性、隔离性、持久性)属性等。

- 数据库并发控制:处理多个用户同时访问数据库产生的冲突问题,包括加锁、事务隔离级别等。

- 数据库恢复与备份:保证数据库数据不丢失和可恢复的机制,包括日志、回滚、快照等。

2. 数据库应用实验答案以下是数据库应用实验中的相关问题和答案:问题1:什么是数据库?答案:数据库是存储、管理和操作结构化数据的系统。

它提供了数据的组织方式和数据操作的接口,用户可以通过数据库来存储和访问数据。

问题2:数据库的优点是什么?答案:数据库的优点包括:数据共享性高,数据冗余度低,数据一致性好,数据安全性高,数据的集中管理和维护方便等。

问题3:什么是关系数据库?答案:关系数据库是基于关系模型的数据库系统。

它使用表描述数据之间的关系,在关系数据库中,数据以行和列的形式存储,并通过主键和外键来建立关联关系。

问题4:什么是SQL语言?答案:SQL(Structured Query Language)是用于访问和操作关系数据库的标准语言。

它包括数据查询语言(SELECT)、数据定义语言(CREATE、ALTER、DROP)、数据操作语言(INSERT、UPDATE、DELETE)和数据控制语言(GRANT、REVOKE)等。

问题5:什么是数据库调优?答案:数据库调优是指对数据库系统进行性能优化的过程。

它包括优化数据库结构、调整数据库参数、优化查询语句、优化索引和表分区、优化物理存储等方法,以提高数据库的性能和响应速度。

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

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

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

数据库实验报告及答案

数据库实验报告及答案

实验任务书(实验一、实验二)课程名称:数据库原理与技术实验报告要求:1.列出所有的SQL语句和源代码;2.程序要求有适当的注释;3.对数据完整性约束实施要求给出相应的测试用例。

4.实验报告提交电子档。

实验内容:一:创建表、更新表和实施数据完整性1.运行给定的SQL Script,建立数据库GlobalToyz。

2.了解表的结构,建立所有表的关系图。

3.利用系统定义的存储过程sp_helpdb查看数据库的相关信息,例如所有者、大小、创建日期等。

4.查看所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique)5.把价格在$20以上的所有玩具的信息拷贝到称为PremiumToys的新表中。

SELECT*INTO PremiumToysFROM ToysWHERE Toys.mToyRate>20;6.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。

ALTER TABLE ToysADD CONSTRAINT C1CHECK (siToyQoh BETWEEN 0 AND 200);ALTER TABLE ToysADD CONSTRAINT C2default(1)for siLowerAge;7.给id为‘000001’玩具的价格增加$1。

update Toys set mToyRate=mToyRate+1 where cToyId='000001';8. 列出表PickofMonth中的所有记录,并显示中文列标题。

SELECT cToyId[玩具编号],siMonth[生产月份],iYear[生产年份],iTotalSold [销售总量]FROM PickofMonth;二:查询数据库1.显示属于California和Illinoi州的顾客的名、姓和emailID。

数据库技术实验报告的答案

数据库技术实验报告的答案

数据库技术实验报告的答案实验目的:本次实验旨在加深对数据库管理系统(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操作查询了学生与其选修课程的关联信息。

《数据库原理及应用》实验报告带答案

《数据库原理及应用》实验报告带答案

实验课程:数据库原理及应用学号:学生姓名:班级:年月日实验1 创建和维护数据库一、实验目的(1)掌握在Windows 平台下安装与配置MySQL 5.5 的方法。

(2)掌握启动服务并登录MySQL 5.5 数据库的方法和步骤。

(3)了解手工配置MySQL 5.5 的方法。

(4)掌握MySQL 数据库的相关概念。

(5)掌握使用Navicat 工具和SQL 语句创建数据库的方法。

(6)掌握使用Navicat 工具和SQL 语句删除数据库的方法。

二、实验要求(1)学生提前准备好实验报告,预习并熟悉实验步骤;(2)遵守实验室纪律,在规定的时间内完成要求的内容;(3)1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤(1)在Windows 平台下安装与配置MySQL 5.5.36 版。

(2)在服务对话框中,手动启动或者关闭MySQL 服务。

(3)使用Net 命令启动或关闭MySQL 服务。

开始--运行--cmd--输入“net start mysql”回车,启动成功;输入“net--stop--mysql”回车,停止。

(4)分别用Navicat 工具和命令行方式登录MySQL。

①打开Navicat for MySQL,文件--新建连接--确定。

②开始--运行--cmd,输入mysql -h hostname(如果服务器在本机,可以输入localhost或127.0.0.1)user -p 回车后,系统会提示“Enter password”,输入配置的密码就可以登录上了。

(5)创建数据库。

①使用Navicat 创建学生信息管理数据库gradem。

②使用SQL 语句创建数据库MyDB。

①打开Navicat for MySQL,文件--新建连接--常规(设置连接名MySQL,主机名localhost)。

②使用Windows命令行方式登录MySQL,然后输入CREATE DATABASE mydb;回车,显示Query OK, 1 row affected (0.00 sec)创建成功。

数据库实验答案

数据库实验答案

实验3 使用T-SQL语言完成单表查询一、实验目的掌握使用T—SQL语言完成单表查询掌握常用谓词的用法掌握where子句的用法掌握order by 子句的用法掌握group by 子句和having短语的用法二、实验环境Microsoft SQL Server 2000。

三、实验内容和要求1.查询全体学生的详细信息。

2.查询所有课程的详细信息.3.查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。

4.查询已被学生选修了的课程的编号。

5.查询系别编号为“d002”的学生的姓名和性别。

6.查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。

7.查询系别编号为d001、d002和d003的学生的学号和姓名。

8.查询课程名为“C_”开头的课程名和学分.9.某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。

10.查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。

11.查询学校所开设的总的课程数.12.计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。

13.查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分"。

14.求各个系别的编号以及各系的人数。

15.查询选课人数大于等于2人的课程编号以及选课的人数。

16.查询学生200215122选修课程的总成绩对应的列名为“总成绩”,并显示出学号。

17.查询有2门以上课程是80分以上的学生的学号及课程数。

18.查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列.实验1 使用T-SQL语言建库、建表实验2 向表中增、删、改数据四、实验目的掌握使用T-SQL建库、建表、修改表;掌握使用T-SQL对表中数据进行插入、删除和修改.五、实验环境Microsoft SQL Server 2000.六、实验内容和要求19.建立数据库STDB20.在数据库STDB中建立四个表:Student表Department表Course表21.分别向以上四个表中增加数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一数据库设计
一、实验目的
使用规范的数据库设计方法,分析并设计“FL Y(飞翔)信息管理系统”的数据库。

二、实验要求
1. 掌握数据库设计步骤。

2. 掌握数据库概念模型设计,熟练绘制E-R图。

3. 掌握数据库关系模型的设计。

三、实验内容
实验1-1 “FL Y(飞翔)信息管理系统”数据库需求分析
飞翔公司是一家大型批发连锁企业,在全国各地分布多家连锁公司,该公司为了加强信息化管理,准备开发一个信息管理系统,以便对其连锁机构、员工、订单、供应商、零售商和商品等信息进行统一管理。

经过需求调研分析,该数据库系统主要包含以下信息:
1)公司信息:主要包括公司名称、公司编号、公司地址、所属区域、公司属性等信息。


中公司属性包括三种类型:总部、直属和加盟。

2)员工信息:主要包括员工的姓名、性别、民族、出生日期、工作日期、婚否、职称、简
历、基本工资、所属公司等信息。

每个连锁公司有多名员工,每个员工只能属于一个公司。

3)商品信息:主要包括商品名称、商品编号、商品的销售价格、商品的进货价格、商品的
类型和该商品的供应商等信息。

4)订单信息:主要包括:订单编号、购买客户、送货方式、付款方式、订货日期、签订该
订单的员工,以及该订单中包含的商品、数量、价格和折扣等信息。

其中,每张订单由一名员工与一名零售商签订,送货方式包括“送货上门”和“自行提货”两种类型,付款方式包括“现金”、“支票”和“银行卡”三种类型。

5)零售商信息:主要包括零售商的编号、名称、联系人、所属城市、地址、邮编、电子邮
箱等信息。

零售商是飞翔公司批发销售商品面向的客户。

6)供应商信息:主要包括:供应商的编号、名称、地址等信息。

供应商是飞翔公司商品进
货的供货方。

实验1-2 设计“FL Y(飞翔)信息管理系统”数据库概念模型
根据前述实验的需求分析结果,设计“FL Y(飞翔)信息管理系统”数据库E-R模型,如图1.1所示。

其中包含的实体集有:“公司机构”、“员工”、“员工工资”、“订单”、“商品”、“商品类型”、“零售商”和“供应商”。

各实体集之间的联系如图1.1所示。

各实体集的实体型如下(其中带下划线的是码):
公司机构(机构编号,连锁机构名称,地址,区域,机构属性)
零售商(客户编号,客户名称,联系人,联系电话,城市,地址,邮政编码,电子邮件)订单(订单编号,订购日期,送货方式,付款方式)
员工(员工编号,姓名,出生日期,性别,民族,工作日期,职称,婚否,简历,照片)员工工资(员工编号,基本工资,任务工资,奖金,住房公积金,扣款)
商品(商品编号,商品名称,销售价格,购入价)
供应商(供应商编号,供应商名称,地址)
商品类型(商品类型编号,类型名称,商品类型说明)
提示:这里的“员工工资”实体集是指员工的基本工资情况,而不是每月的工资收入,该实体集和“员工”实体集是一对一联系。

因此,可以用“员工编号”作为“员工工资”的主属性来唯一标识实体
图1.1 系统E-R概念模型
实验1-3 设计“FL Y(飞翔)信息管理系统”数据库关系模型。

根据前述实验的概念模型,按照E-R概念模型向关系模型转换的规则,可有如下的关系模式(其中带下划线的为主键,斜体字为外键):
公司机构(机构编号,连锁机构名称,地址,区域,机构属性)
零售商(客户编号,客户名称,联系人,联系电话,城市,地址,邮政编码,电子邮件)订单(订单编号,订购日期,客户编号,员工编号,送货方式,付款方式)
员工(员工编号,姓名,出生日期,性别,机构编号,民族,工作日期,职称,婚否,简历,照片)
员工工资(员工编号,基本工资,任务工资,奖金,住房公积金,扣款)
商品(商品编号,商品名称,商品类型编号,销售价格,购入价,供应商编号)
供应商(供应商编号,供应商名称,地址)
商品类型(商品类型编号,类型名称,商品类型说明)
订单明细(订单编号,商品编号,数量,折扣)
注意:在“订单”实体集和“商品”实体集之间多对多联系向关系模型的转换中,通过新增加一个关系“订单明细”,把一个多对多联系分解为两个一对多联系。

关系“订单明细”是关系“订单”和关系“商品”的子关系,该关系以“订单编号”和“商品编号”组成一个复合主键,同时“订单编号”和“商品编号”作为外键分别对应与“订单”关系和“商品”关系。

提示:在E-R模型向关系模型转换过程中,不仅要注意实体向关系模式的转换,而且尤其要注意实体之间的联系向关系模式的转换策略。

实验1-4 设计“FL Y(飞翔)信息管理系统”数据库表结构。

根据前述实验设计的关系模型结果,设计关系数据库的数据表的逻辑结构,如附录1所示。

相关文档
最新文档