实验一 数据库设计(答案)

合集下载

数据库实验题目及答案

数据库实验题目及答案

数据库实验
一、题目
药品(编号,名称,价格,厂商)
处方(药品编号,数量,医生编号)
医生(编号,姓名,科室,职称)
根据上面基本表的信息完成下列查询。

1 列出医生“张力”开的所有药品名称。

2 列出比“北方制药”所有药品都贵的药品信息。

3 列出内科所有处方的医生姓名、药品名称、金额
二、答案
题目一
连接查询
select 名称
from Yao ,Chu,Dr
where Yao.编号=Chu.药品编号and Chu.医生编号=Dr.编号and 姓名='张力'
嵌套查询
select 名称
from Yao
where 编号in(select 药品编号
from Chu
where 医生编号in(select 编号
from Dr
where 姓名= '李丽'))
题目二
select *
from Yao
where 价格>all(select 价格from Yao where 厂商='北方制药')
题目三
select 姓名,名称,价格
from Yao ,Chu,Dr
where Yao.编号=Chu.药品编号and Chu.医生编号=Dr.编号and 科室='内科'。

数据库实验题目和答案

数据库实验题目和答案

按照如下方式重新定义四张表:定义新的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名同学以及他们成绩,并按照从高到低排列。

数据库实验答案分析总结.doc

数据库实验答案分析总结.doc

数据库实验答案分析总结实验实验一熟悉SQLSERVER龄Sage所在系Sdept95001李勇男份。

selectsname,龄降序排列。

select*fromstudentorderbysdept,sagedesc8.计算2号课程的平均成绩。

selectA VG(grade)fromSCwherecno=2;9.查询选修了2号课程的学生的最高成绩。

selectMAX(grade)fromSCwherecno=2;10.求各个课程号及相应的选课人数。

selectcno,COUNT(distinctsno)fromSCgroupbycno11.查询至少选修了3门课程以上的学生序号。

selectsnofromSCgroupbysnohavingCOUNT(*)>=3;12.查询“数据库”的间接先行课。

selectsecond.cpnofromCourseasfirst,Courseassecondwherefirst.cpno=sec ame=数据库;13.查询其他系中比信息系某一学生年龄小的学生的姓名和年龄。

selectdistinctfirst.sname,first.sagefromStudentasfirst,Studentassecondwhe refirst.SageA VG(second.Grade);16.查询至少选修了1号课程和3号课程的学生学号。

(selectsnofromSCwhereCno=1)intersect(selectsnofromSCwhereCno=3);1 7.查询只选修了1号课程和3号课程的学生学号。

selectsnofromSCwhereCno=1andSnoin(selectSnofromSCwhereCno=2an dSnoin(selectSnofromSCgroupbySnohavingCOUNT(sno)=2));18.查询没有选修1号课程的学生姓名。

数据库实验及其答案

数据库实验及其答案

《数据库系统概论》实验报告书专业班级学号姓名指导教师安徽工业大学计算机学院实验一:数据定义/数据操纵语言[ 实验日期 ] 2011 年 4 月 10 日[ 实验目的 ]熟悉SQL SERVER上机环境;熟练掌握和使用DDL语言,建立、修改和删除数据库表;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。

[ 实验内容 ]1.先建立数据库:STUDENT用两种方式建立:在查询分析器中以DDL语言方式建立.步骤为:先在指定的地方建立放置数据库文件的文件夹(如学生数据库),然后将建立的数据库文件放到指定的文件夹中.2.SQL数据定义语句:例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。

create table Student(SNO char(5) primary key,SNAME char(8) NULL,SDEPT char(2),SCLASS char(2),SAGE smallint)create table Course(CNO char(3) primary key,CNAME char(16),CTIME smallint)create table Teach(TNAME CHAR(8),TSEX CHAR(2),CNO CHAR(3),TDATE smalldatetime,TDEPT CHAR(2)) create table Score (sno char(5),cno char(3),Score float);例1-2: (修改数据库表) 在Student表中增加SSEX(C,2) 字段。

alter table student add SSEX char(2)例1-3: (修改数据库表) 将Student表中把Sname 字段修改为Sname(C,10)且为非空。

数据库实验报告及答案

数据库实验报告及答案

实验任务书(实验一、实验二)课程名称:数据库原理与技术实验报告要求: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。

数据库实验答案实验一Sql01

数据库实验答案实验一Sql01

1、查询所有业务部门的员工姓名、职称、薪水select employeeName,headShip,salaryfrom Employeewhere department='业务科'2、查询名字中含有“有限”的客户姓名和所在地。

select customerName,addressfrom Customerwhere customerName like '%有限%'3、查询出姓“王”并且姓名的最后一个字为“成”的员工select*from Employeewhere employeeName='王%成'4、查询住址中含有上海或者南昌的女员工,并显示其姓名、所属部门、职称、住址,其中性别用“男”和“女”显示。

select employeeName,department,headShip,address,sex=case sexwhen 'M' then '男'when 'F' then '女'endfrom employeewhere (address like '%上海%'or address like'%南昌%')and sex='F'或WHERE address LIKE '上海%' AND sex='F' OR address LIKE '南昌%' AND sex='F'5、在表sales中挑出销售金额大于等于5000元的订单。

SELECT orderNo ,sum(quantity*price)sumOrderFROM OrderDetailGROUP BY orderNoHA VING sum(quantity*price)>=5000ORDER BY sumOrder DESC6、选取订单金额最高的前10%的订单数据SELECT top 10 percent orderNo ,sum(quantity*price)sumOrder FROM OrderDetailGROUP BY orderNo7、查询出职务为“职员”或职务为“科长”的女员工的信息。

数据库系统原理实验报告册(带答案)

数据库系统原理实验报告册(带答案)

河南工程学院计算机科学与工程系数据库系统原理实验报告册学期:课程:专业:班级:学号:姓名:指导教师:目录实验一 SQL Server 2000安装、数据库创建及管理 (1)一、实验学时 (1)二、实验目的 (1)三、实验内容 (1)四、实验要求 (13)五、代码清单 (13)六、实验中出现的问题及解决的方法 (15)七、思考讨论题或体会或对改进实验的建议 (16)实验二表和表数据的操作 (17)一、实验学时 (17)二、实验目的 (17)三、实验内容 (17)四、实验要求 (22)五、代码清单 (22)六、实验中出现的问题及解决的方法 (24)七、思考讨论题或体会或对改进实验的建议 (25)实验三索引和视图 (26)一、实验学时 (26)二、实验目的 (26)三、实验内容 (26)四、实验要求 (31)五、代码清单 (31)六、实验中出现的问题及解决的方法 (33)七、思考讨论题或体会或对改进实验的建议 (34)实验四 T-SQL程序设计 (35)一、实验学时 (35)二、实验目的 (35)三、实验内容 (35)四、实验要求 (39)五、代码清单 (39)六、实验中出现的问题及解决的方法 (41)七、思考讨论题或体会或对改进实验的建议 (42)实验五数据库安全性 (43)一、实验学时 (43)二、实验目的 (43)三、实验内容 (43)四、实验要求 (46)五、代码清单 (47)六、实验中出现的问题及解决的方法 (49)七、思考讨论题或体会或对改进实验的建议 (49)实验六数据库完整性 (51)一、实验学时 (51)二、实验目的 (51)三、实验内容 (51)四、实验要求 (54)五、代码清单 (54)六、实验中出现的问题及解决的方法 (56)七、思考讨论题或体会或对改进实验的建议 (57)实验一 SQL Server 2000安装、数据库创建及管理一、实验学时:2学时二、实验目的(1)了解安装SQL Server2000的硬件和软件环境。

数据库系统原理实验一参考答案

数据库系统原理实验一参考答案
VALUES ('C05'
,'C++',-,3)
INSERT
INTO Courses
VALUES ('C06'
,'网络原理’,'C07', 3)
INSERT
FILENAME='E:\ SQL_DATEBASE \',
SIZE=5MB
MAXSIZE25MB
FILEGROWT=5MB
)
GO
(2)调用(USE数据库:Students_Mis_2018
use Stude nts_Mis_2018
GO
(3)分别建立4个数据表的表结构(CREATE TABLE):系(Depts),学生(Students ),课程(Courses ),选课(Reports )
CREATETABLE Depts
(
Dno CHAR5) PRIMARYKEY
DnameCHAR20) NOTNULL
)
GO
CREATETABLE Students
(
Sno CHAR5) PRIMARYKEY
Sname CHAR20) NOTNULL,
Ssex CHAR2),
Sage INT,
Dno CHAIR5),
INSERT
INTO depts
VALUES ('D05','电子')
INSERT
INTO depts
VALUES ('D06','化学')
SELECT*
FROMDepts
INSERT
INTO Students
  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(飞翔)信息管理系统”数据库表结构。

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

相关文档
最新文档