数据库实验习题
- 格式:doc
- 大小:5.96 MB
- 文档页数:22
数据库实验
一、题目
药品(编号,名称,价格,厂商)
处方(药品编号,数量,医生编号)
医生(编号,姓名,科室,职称)
根据上面基本表的信息完成下列查询。
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名同学以及他们成绩,并按照从高到低排列。
试用SQL的查询语句表达下列查询:1.检索王丽同学所学课程的课程号和课程名。
select Cno ,Cname from c where Cno in(select cno from sc where sno in (select sno from s where sname='王丽' ))2.检索年龄大于23岁的男学生的学号和姓名。
select sno,sname from swhere sex='男' and age>233.检索‘c01’课程中一门课程的女学生姓名select sname from swhere sex='女' and sno in(select sno from sc where cno='c01')4.检索s01同学不学的课程的课程号。
select cno from cwhere cno not in (select cno from sc where sno ='s01')5.检索至少选修两门课程的学生学号。
select sc.sno from s,scwhere s.sno=sc.snogroup by sc.snohaving count(o)>=26.每个学生选修的课程门数。
解法一:select so.sno sno,ount,s.snamefrom(select sc.sno sno,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno ) so,swhere s.sno=so.sno解法二:select sc.sno sno,s.sname,count(sc.sno) ccountfrom sc,swhere s.sno=sc.snogroup by sc.sno,sname7.求选修C4课程的学生的平均分。
数据库习题(附参考答案)一、单选题(共88题,每题1分,共88分)1.已创建的表间关系不能删除。
A、对B、错正确答案:B2.某表中有“编号”字段,该字段要求第一位字母必须是Q,第二、三位必须为字母,第4-6位必须为数字,则该字段的输入掩码应设置为()A、”Q”LL999B、”Q”??999C、”Q”LL000D、“Q”??000正确答案:C答案解析:第一位必须是字母Q,用“Q”;第二、三位必须为字母,用LL,第4-6位必须是数字用000,因此答案为“Q”LL000。
3.在“itEmployee”表中,“姓名”字段的字段大小为10,在此列输入数据时,最多可输入的汉字数和英文字符数分别是( )。
A、5 5B、5 10C、10 10D、10 20正确答案:C答案解析:一个汉字占一个字节4.Access 2010模板文件的扩展名为A、.accdtB、.mdbC、.dbfD、.adp正确答案:A5. 在关系代数的连接操作中,哪一种连接操作需要取消重复列?( )A、笛卡尔积B、等值连接C、自然连接D、θ连接正确答案:C6.一个实体相对于关系数据库中一个关系中的一个( )A、属性B、元组C、列D、字段正确答案:B答案解析:二维表中的一行称为一个元组,相当于一条记录,代表一个实体。
7. 设关系R和S具有相同的目,且它们相对应的属性的值取自同一个域,则R-(R-S)等于( )A、R∩SB、R∪SC、R÷SD、R×S正确答案:A8.将某字段设置为主键后,则该属性( ) 。
A、可以为空B、不能设置为外键C、值可以重复D、能唯一标识每行数据正确答案:D答案解析:设置为主键以后,主键的值是唯一的。
主键分为单字段主键、多字段主键和自动编号主键。
9.数据库系统是由数据库、数据库管理系统、( )、硬件系统等构成的人机系统。
A、数据库管理员B、程序员C、高级程序员D、软件开发商正确答案:A答案解析:数据库管理员,简称DBA,与DB、DBMS、硬件系统共同组成数据库系统(DBS)。
数据库原理及应用实验答案1. 数据库原理数据库原理指的是数据库系统的内部机制和运行原理。
以下是数据库原理的相关内容:- 数据库模型:定义数据的组织方式和约束条件,包括层次模型、网状模型、关系模型、面向对象模型等。
- 数据库结构:描述数据库中数据组织的方式,包括表、视图、索引、存储过程等。
- 数据操作:定义对数据库中数据进行操作的方式,包括增删改查等。
- 数据库事务:保证数据库操作的一致性和完整性的机制,包括ACID(原子性、一致性、隔离性、持久性)属性等。
- 数据库并发控制:处理多个用户同时访问数据库产生的冲突问题,包括加锁、事务隔离级别等。
- 数据库恢复与备份:保证数据库数据不丢失和可恢复的机制,包括日志、回滚、快照等。
2. 数据库应用实验答案以下是数据库应用实验中的相关问题和答案:问题1:什么是数据库?答案:数据库是存储、管理和操作结构化数据的系统。
它提供了数据的组织方式和数据操作的接口,用户可以通过数据库来存储和访问数据。
问题2:数据库的优点是什么?答案:数据库的优点包括:数据共享性高,数据冗余度低,数据一致性好,数据安全性高,数据的集中管理和维护方便等。
问题3:什么是关系数据库?答案:关系数据库是基于关系模型的数据库系统。
它使用表描述数据之间的关系,在关系数据库中,数据以行和列的形式存储,并通过主键和外键来建立关联关系。
问题4:什么是SQL语言?答案:SQL(Structured Query Language)是用于访问和操作关系数据库的标准语言。
它包括数据查询语言(SELECT)、数据定义语言(CREATE、ALTER、DROP)、数据操作语言(INSERT、UPDATE、DELETE)和数据控制语言(GRANT、REVOKE)等。
问题5:什么是数据库调优?答案:数据库调优是指对数据库系统进行性能优化的过程。
它包括优化数据库结构、调整数据库参数、优化查询语句、优化索引和表分区、优化物理存储等方法,以提高数据库的性能和响应速度。
mysql数据库实操题MySQL数据库实操题通常涉及到数据库的创建、表的设计、数据的插入、查询和更新等方面。
以下是一个MySQL数据库实操题的示例:题目:假设你是一个图书馆管理员,需要创建一个数据库来管理图书馆的图书信息。
请按照以下要求完成数据库的设计和操作:1. 创建一个名为"library"的数据库。
2. 在该数据库中创建一个名为"books"的表,包含以下字段:book_id,图书编号,为整数类型,主键。
title,图书标题,为字符串类型。
author,图书作者,为字符串类型。
publication_year,图书出版年份,为整数类型。
quantity,图书数量,为整数类型。
3. 向"books"表中插入以下数据:book_id: 1, title: "Harry Potter and the Philosopher's Stone", author: "J.K. Rowling",publication_year: 1997, quantity: 5。
book_id: 2, title: "To Kill a Mockingbird", author: "Harper Lee", publication_year: 1960, quantity: 3。
book_id: 3, title: "1984", author: "George Orwell", publication_year: 1949, quantity: 2。
4. 查询"books"表中所有图书的信息。
5. 查询"books"表中所有作者为"J.K. Rowling"的图书信息。
一、选择题
1.在关系型数据库中,主键的作用是?
A.确保表中每一行数据的唯一性(正确答案)
B.提高数据查询的速度
C.减少数据的存储空间
D.允许表中存在重复的行
2.SQL语言中的“SELECT”语句主要用于?
A.插入新数据到数据库表中
B.更新数据库表中的数据
C.从数据库表中检索数据(正确答案)
D.删除数据库表中的数据
3.在数据库设计中,外键用于实现哪种关系?
A.一对一关系
B.一对多关系(正确答案)
C.多对多关系
D.无特定关系
4.以下哪个不是数据库管理系统(DBMS)的组成部分?
A.数据定义语言(DDL)
B.数据查询语言(DQL)
C.数据操作语言(DML)
D.数据传输协议(正确答案)
5.在SQL中,使用哪个关键字可以对查询结果进行排序?
A.GROUP BY
B.ORDER BY(正确答案)
C.JOIN
D.SELECT
6.数据库事务的四个基本特性通常被简称为ACID,其中“C”代表什么?
A.原子性(Atomicity)
B.一致性(Consistency)(正确答案)
C.隔离性(Isolation)
D.持久性(Durability)
7.在关系型数据库中,表的每一行被称为一个?
A.字段
B.记录(正确答案)
C.索引
D.视图
8.SQL中的“DELETE”语句用于?
A.删除数据库中的表
B.删除表中的所有数据
C.删除表中的特定行(正确答案)
D.删除表中的特定列。
数据库练习题库(含答案)一、单选题(共98题,每题1分,共98分)1.在需求分析阶段,结构化分析和建模方法是一种较为有效的需求分析方法,下列不属于结构化分析和建模方法优点的是()。
A、可避免过早陷入具体细节B、从局部或子系统开始分析问题,便于建模人员了解业务模型C、图形对象不涉及太多技术术语,便于用户理解模型D、用图形化的模型能直观表示系统功能正确答案:B2.DBMS通过加锁机制允许用户并发访问数据库,这属于DBMS提供的()。
A、数据定义功能B、数据操纵功能C、数据库运行管理与控制功能D、数据库建立与维护功能正确答案:C3.关于数据划分策略,下述说法错误的是()。
A、散列划分釆用某种散列函数,以数据的划分属性作为函数参数,计算数据应存储的磁盘序号B、范围划分根据某个属性的取值,将数据划分为n个部分,分别存储到不同磁盘上C、范围划分有利于范围查询和点查询,但也可能会引起数据分布不均匀及并行处理能力下降问题D、轮转法划分能保证元组在多个磁盘上的平均分配,并具有较高的点查询和范围查询正确答案:D4.存取方法设计属于数据库设计的()阶段的设计任务。
A、逻辑结构设计B、概念结构设计C、系统需求分析D、物理结构设计正确答案:D5.将新插入的记录存储在文件末尾,并使记录随机地分布在文件物理存储空间中的文件结构是()。
A、散列文件B、堆文件C、索引文件D、聚集文件正确答案:B6.关于"死锁”,下列说法中正确的是()。
A、在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库B、只有出现并发操作时,才有可能出现死锁C、当两个用户竞争相同资源时不会发生死锁D、死锁是操作系统中的问题,数据库操作中不存在正确答案:B7.关于数据库应用系统的需求分析工作,下列说法正确的是()。
A、在需求分析阶段,系统需求分析员要与用户充分沟通,并做出各类用户视图B、通过需求分析过程,需要确定出整个应用系统的目标、任务和系统的范围说明C、数据操作响应时间、系统吞吐量、最大并发用户数都是性能需求分析的重要指标D、数据需求分析的主要工作是要辩识出数据处理中的数据处理流程正确答案:C8.如果一个系统定义为关系系统,则它必须( )oA、支持关系数据库B、支持选择、投影和连接运算C、A和B均成立D、A、B都不需要正确答案:C9.联机分析处理包括以下()基本分析功能。
数据库实操考试题及答案**数据库实操考试题及答案**一、单项选择题(每题2分,共20分)1. 在关系数据库中,关系至少具有以下哪种特性?A. 可变性B. 传递性C. 原子性D. 唯一性答案:D2. SQL语言中,用于查询数据的命令是:A. INSERTB. UPDATEC. DELETED. SELECT答案:D3. 在数据库设计中,将一个表中的列复制到另一个表中,这种操作称为:A. 复制B. 继承C. 派生D. 分区答案:C4. 数据库管理系统(DBMS)的主要功能不包括:A. 数据定义B. 数据操纵C. 数据存储D. 数据加密答案:D5. 在关系数据库中,以下哪个不是关系的基本操作?A. 选择B. 投影C. 连接D. 排序答案:D6. 数据库中的视图是:A. 一个虚拟表B. 一个物理存储的表C. 一个索引D. 一个数据库文件答案:A7. 数据库中的事务具有以下哪个特性?A. 一致性B. 并发性C. 持久性D. 原子性答案:D8. 在SQL中,用于定义数据库、表、视图等对象的语句是:A. DDLB. DMLC. DCLD. TCL答案:A9. 数据库中的完整性约束不包括:A. 实体完整性B. 参照完整性C. 用户定义的完整性D. 并发控制答案:D10. 数据库中的范式理论主要用于:A. 提高查询效率B. 减少数据冗余C. 提高数据安全性D. 优化数据库性能答案:B二、多项选择题(每题3分,共15分)1. 以下哪些是数据库设计过程中需要考虑的因素?A. 数据模型B. 数据存储C. 性能优化D. 用户界面设计答案:ABC2. 在数据库中,以下哪些操作可以被回滚?A. SELECTB. INSERTC. UPDATED. DELETE答案:BCD3. SQL语言中,以下哪些是数据定义语言(DDL)的命令?A. CREATEB. ALTERC. DROPD. GRANT答案:ABCD4. 数据库中的索引可以用于:A. 提高查询速度B. 保证数据的唯一性C. 减少数据冗余D. 优化数据存储答案:AD5. 数据库中的触发器可以用于:A. 数据验证B. 数据更新C. 数据备份D. 维护数据完整性答案:ABD三、简答题(每题10分,共30分)1. 简述数据库事务的ACID特性。
实验三:交互式SQL语句的使用欧阳光明(2021.03.07)1、实验目的(1)掌握数据库对象的操作过程,包括创建、修改、删除(2)熟悉表的各种操作,包括插入、修改、删除、查询(3)熟练掌握常用SQL语句的基本语法2、实验平台使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。
3 实验内容及要求选择如下一个应用背景之一:●学生选课系统●习题3、4、和5中使用的数据库●其它你熟悉的应用(1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。
(2)要求认真进行实验,记录各实验用例及执行结果。
(3)深入了解各个操作的功能。
实验要求包括如下方面的内容:3.1 数据定义1.基本表的创建、修改及删除 2.索引的创建3.视图的创建3.2 数据操作完成各类更新操作包括:1.插入数据2.修改数据3. 删除数据3.3 数据查询操作完成各类查询操作1.单表查询2.分组统计3. 连接查询4. 嵌套查询5. 集合查询3.4 数据操作1.创建视图2.视图查询参考示例:建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。
一、数据定义创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表:表1. Student表结构表2. Course表结构表3. SC表结构1.创建、修改及删除基本表(1)创建Student表CREATETABLE Student(Sno CHAR(8)PRIMARYKEY,Sname CHAR(8),Ssex CHAR(2)NOTNULL,Sage INT,Sdept CHAR(20));(2)创建Course表CREATETABLE Course(Cno CHAR(4)PRIMARYKEY,Cname CHAR(40)NOTNULL,Cpno CHAR(4),Ccredit SMALLINT,);(3)创建SC表CREATETABLE SC(Sno CHAR(8)FOREIGNKEY (Sno)REFERENCES Student(Sno), Cno CHAR(4),Grade SMALLINT,);(4)创建员工表EmployeeCREATETABLE Employee(编号CHAR(8)PRIMARYKEY,姓名VARCHAR(8)notnull部门CHR(40),工资numeric(8,2),生日datetime,职称char(20),);指出该语句中的错误并改正后执行。
数据库练习题(打印版)# 数据库练习题(打印版)## 一、选择题1. 在关系数据库中,数据表之间的关系可以是以下哪些类型?- A. 一对一- B. 一对多- C. 多对多- D. 所有以上2. SQL语言中,用于查询数据的关键字是:- A. SELECT- B. INSERT- C. UPDATE- D. DELETE3. 以下哪个不是数据库的完整性约束?- A. 主键约束- B. 外键约束- C. 检查约束- D. 索引约束## 二、填空题4. 数据库管理系统(DBMS)是位于用户和_________之间的一层数据管理软件。
5. SQL是_________查询语言,用于与数据库进行交互。
6. 在SQL中,使用_________关键字可以删除表中的数据。
## 三、简答题7. 简述数据库事务的四大特性(ACID)。
## 四、操作题8. 假设有一个学生表(Students),包含字段:学生ID (StudentID),姓名(Name),年龄(Age),专业(Major)。
编写SQL语句完成以下操作:- A. 插入一条新的学生记录。
- B. 更新学生的年龄信息。
- C. 查询所有学生的信息。
- D. 删除一个学生记录。
## 五、综合应用题9. 你是一家电子商务公司的数据库管理员,需要设计一个数据库来存储产品信息。
请列出至少五个字段,并为每个字段提供一个合理的数据类型。
## 参考答案:### 一、选择题1. D2. A3. D### 二、填空题4. 操作系统5. 结构化6. DELETE### 三、简答题7. 事务的四大特性(ACID)包括:- 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个点。
- 一致性(Consistency):事务必须保证数据库从一个一致的状态转移到另一个一致的状态。
- 隔离性(Isolation):并发执行的事务之间不会互相影响。
- 持久性(Durability):一旦事务提交,则其更改永久保存在数据库中。
数据库系统概论(第5版)实验指导与习题解析1.实验指导(1)设计及实现系统概念模型的实验实验的目的在于帮助学生掌握如何设计和实现数据库系统的概念模型,以及该模型为后续表示和实现提供必要的理论基础。
实验具体包括:(a)根据题目相关信息,分析和需求,定义需要的实体和实体的属性;(b)提出逻辑模型,包括实体间的代数关系和实体间的引用完整性约束;(c)设计抽象数据模型,定义实体、属性、关系及引用完整性约束;(d)实现模型,确定数据类型和索引,定义数据表,进行插入、更新、查询和删除操作;(e)实现联络通知,搭建应用程序与操作界面,具备账号登录验证及安全保护机制。
(2)对系统查询的实现的实验实验的目的是帮助学生了解如何使用数据库系统提供的查询和存取机制,以实现高效的代表性查询。
实验具体包括:(a)设计存取计划,检查数据库表的索引结构,提出优化查询的建议;(b)实现复杂查询,使用子查询、聚合函数、分组查询、嵌套查询等,分析数据库中的信息;(c)进行数据操纵和更新,使用insert、update、replace和truncate语句,对指定的数据库表操作;(d)实现视图联结和索引的应用,方便查询快速定位所需数据,提高查询效率;(e)设计存储过程,对常用操作进行定义和封装,简化查询,实现程序化处理。
2.习题解析(1)数据库中的实体之间的关系有哪些?数据库中实体之间的关系主要有一对一关系、一对多关系、多对多关系三种。
一对一关系指的是两个实体之间只有一种关系;一对多关系指的是一个实体可以与多个实体存在一种关系;多对多关系指的是多个实体可以彼此之间存在多种关系。
(2)为什么要在设计数据库时考虑数据完整性?考虑数据完整性的目的在于确保数据的准确性和完整性,以保证数据表中各个实体及其属性之间的准确关系,以及关系不被破坏。
通常,数据库完整性可以通过实体间的引用完整性约束来实现,从而确保存储在数据库中的数据不被破坏。
数据库练习题(含参考答案)一、单选题(共88题,每题1分,共88分)1.( )是存储在磁盘上的唯一标识。
A、表B、查询C、窗体D、报表正确答案:A答案解析:表是存储在磁盘上的唯一标识。
2.数据库是在计算机系统中按照一定的实际模型组织、存储和应用的( )A、程序的集合B、数据的集合C、文件的集合D、命令的集合正确答案:B3.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。
A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩正确答案:C答案解析:选课SC表的关键字必须是由学生表S和课程表S的关键字共同组成,如果使用任意一个建立,都不能确定SC表中每一行数据的唯一性。
4. 下面有关E-R模型向关系模型转换的叙述中,不正确的是( )。
A、一个1:1联系可以转换为一个独立的关系模式合并的关系模式,也可以与联系的任意一端实体所对应B、一个实体类型转换为一个关系模式C、一个1:n联系可以转换为一个独立的关系模式合并的关系模式,也可以与联系的任意一端实体所对应D、一个m:n联系转换为一个关系模式正确答案:C5. 下列关于OLE对象的叙述中,正确的是( )。
A、用于输入文本数据B、用于处理超级链接数据C、用于生成自动编号数据D、用于链接或内嵌WINDOWS支持的对象正确答案:D答案解析:OLE对象属性是指字段允许单独地“链接”或“嵌入”OLE对象,如WORD文当、EXCEL表格、图像、声音或其他二进制数据。
6. 退出Access数据库管理系统可以使用的快捷键是 ( )A、Alt+F4B、Alt+XC、Ctrl+CD、Ctrl+O正确答案:A答案解析:除了Alt+F4以外,也可以采用Alt+ F +X 退出Access。
7.存储在某一种媒体上能够识别的物理符号是( )A、数据B、数据处理C、数据管理D、信息处理正确答案:A答案解析:数据是存储在某一种媒体上能够识别的物理符号。
数据库练习题(含答案)一、单选题(共80题,每题1分,共80分)1、同一个数据模型的任意两个元组值()A、不能全同B、可全同C、必须全同D、以上都不是正确答案:A2、在创建主/子窗体之前,要确定主窗体与子窗体之间的数据源之间存在着的关系。
A、多对一B、多对多C、一对一D、一对多正确答案:D3、Access不能对数据类型进行排序和索引。
( )A、文本B、数字C、备注D、自动编号正确答案:D4、任何一个满足2NF但不满足3NF的关系模式都存在( )A、非主属性对候选码的传递依赖B、主属性对候选码的部分依赖C、非主属性对候选码的部分依赖D、主属性对候选码的传递依赖正确答案:A5、以下哪一条属于关系数据库的规范化理论要解决的问题?( )A、如何构造合适的应用程序界面B、如何构造合适的数据库逻辑结构C、如何控制不同用户的数据操作权限D、如何构造合适的数据库物理结构正确答案:B6、在数据管理技术发展的三个阶段中,数据独立性最好的是( )。
A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同正确答案:C答案解析:数据库系统管理阶段的独立性最高,是因为采用了数据库管理系统来管理数据,将应用程序和数据分开存储。
7、在设计表时,若输人掩码属性设置为“LL”,则能接收的输人是( )A、abBdB、aBC、AB+CD、ABa9正确答案:B答案解析:在输入掩码的格式符号中,“L”表示在该位置必须输入一个字母。
B送选项中少了一个字母,C选项中不能接受“+”,D 选项中不能接受“9”8、在下列SQL语句中,修改表结构的语句是( )。
A、ALTERB、CREATEC、UPDATED、INSERT正确答案:A9、空数据库是指()A、没有基本表的数据库B、没有任何数据库对象的数据库C、数据库中数据表记录为空的数据库D、没有窗体和报表的数据库正确答案:B答案解析:Access由六大对象组成,因此空数据库必须是没有任何对象的数据库。
上机实验题7相关知识:第14章。
目的:通过本实验,掌握使用函数和存储过程的设计和使用方法。
实验内容:编写满足如下各功能的程序:(1)在Library数据库中创建一个标量值函数Sum(n),求1+2+…+n之和。
并用相关数据进行测试。
(2)在Library数据库中创建一个内联表值函数nbook,返回指定系的学号、姓名、班号、所借图书名和借书日期。
并用相关数据进行测试。
(3)在Library数据库中创建一个多语句表值函数pbook,返回系名和该系所有学生所借图书的平均价格。
并用相关数据进行测试。
(4)设计一个存储过程,查询每种图书品种的数目。
并用相关数据进行测试。
(5)设计一个存储过程,采用模糊查询方式查找借阅指定书名的学生,输出学号、姓名、班号和书名。
并用相关数据进行测试。
设计过程:(1)对应的参考程序如下:USE LibraryGOIF EXISTS(SELECT * FROM sysobjectsWHERE name='Sum' AND type='FN') --如果存在这样的函数则删除之 DROP FUNCTION SumGOCREATE FUNCTION Sum(@n int) --输入参数RETURNS intASBEGINDECLARE @s int,@i intSET @s=0SET @i=1WHILE @i<=@nBEGINSET @s=@s+@iSET @i=@i+1ENDRETURN(@s)ENDGOPRINT '1+2+...+60='+CAST(dbo.Sum(60) AS char(10))GO(2)对应的参考程序如下:USE LibraryGOIF EXISTS(SELECT * FROM sysobjects --如果存在这样的函数则删除之WHERE name='nbook' AND (type='IF' OR type ='TF'))DROP FUNCTION nbookGOCREATE FUNCTION nbook(@dname char(16))--建立函数nbookRETURNS TABLE --返回表,没有指定表结构,这是内联表值函数的特征ASRETURN(SELECT s.学号,s.姓名,s.班号,b.图书名,bor.借书日期FROM student s,depart sc,borrow bor,book bWHERE s.班号=sc.班号 AND s.学号=bor.学号 AND b.图书编号=bor.图书编号 AND sc.系名=@dname)GOSELECT *FROM nbook('计算机系')ORDER BY 学号GO(3)对应的参考程序如下:USE LibraryGOIF EXISTS(SELECT * FROM sysobjects --如果存在这样的函数则删除之WHERE name='pbook' AND (type='IF' OR type ='TF'))DROP FUNCTION pbookGOCREATE FUNCTION pbook() --建立函数pbookRETURNS @st TABLE(系名 char(16),平均价格 decimal(4,1))ASBEGININSERT @st --向@st中插入满足条件的记录SELECT sc.系名 AS '系名',AVG(b.定价) AS '平均价格'FROM depart sc,student s,book b,borrow borWHERE s.班号=sc.班号 AND s.学号=bor.学号 AND b.图书编号=bor.图书编号GROUP BY sc.系名RETURNENDGOSELECT * FROM pbook()GO(4)对应的参考程序如下:USE LibraryGO--若存在存储过程proc1,则删除之IF EXISTS(SELECT * FROM sysobjects WHERE name='proc1'AND type='P')DROP PROCEDURE proc1GO--创建存储过程proc1CREATE PROCEDURE proc1ASSELECT 图书名 AS '书名',COUNT(*) AS '数目'FROM bookGROUP BY 图书名GOEXEC proc1(5)对应的参考程序如下:USE LibraryGO--若存在存储过程proc2,则删除之IF EXISTS(SELECT * FROM sysobjects WHERE name='proc2' AND type='P')DROP PROCEDURE proc2GO--创建存储过程proc2CREATE PROCEDURE proc2(@bn char(16))ASDECLARE @pt char(16)SET @pt='%'+RTRIM(@bn)+'%'SELECT s.学号,s.姓名,s.班号,b.图书名FROM student s,book b,borrow borWHERE s.学号=bor.学号 AND b.图书编号=bor.图书编号AND b.图书名 LIKE @ptORDER BY s.班号GOEXEC proc2 '数'上机实验题8相关知识:第15章。
实验三关系查询与连接首先,将sales表中tot_amt的值计算出来。
update sales set tot_amt=0goselect order_no,tot=sum(qty*unit_price)into aa1from sale_itemgroup by order_nogoselect * from aa1goupdate sales set tot_amt=totfrom sales,aa1where aa1.order_no=sales.order_nogo1、查找所有经理的姓名、职称、薪水。
select emp_name ,title,salaryfrom employeewhere title='经理'2、查找出姓“王”并且姓名的最后一个字为“功”的员工。
select *from employeewhere emp_name like '王%功'//3、添加一条记录至employee表(用INSERT…..INTO)。
insert into employee(emp_no,emp_name,sex,dept,title,date_hired,salary)values('E0025','彭江','M','业务','职员',1900/01/21,43200)//4、将每个员工的薪水上调3%。
update employeeset salary=salary*1.03select *from employee3、查找住在上海或北京的女员工,并显示其姓名、所属部门、职称、住址select emp_name,dept,title,addrfrom employeewhere (addr='上海市' or addr= '北京市')and sex='F'4、在表sales中挑出销售金额大于等于10000元订单select *from saleswhere tot_amt>=10000.005、选取订单金额最高的前10%的订单数据。
《数据库概论》实验指导书(2003级)一、实验目的:数据库系统是一门应用性很强的课程,上机实验是数据库课程的重要环节。
本实验是结合《数据库概论》课程的学习而开设的实验。
本实验目的如下:1. 通过上机实验,加深对数据库系统理论知识的理解,增强对网络环境下大型数据库的感性认识和实际操作能力;2. 通过使用具体的DBMS,了解一种实际的数据库管理系统,并掌握其操作技术。
熟悉ORACLE数据库的Net8工具,掌握ORACLE数据库的网络连接配置;3. 学习使用SQL语言,加深对SQL语言的认识和理解,提高SQL语言的实际应用能力;4. 加强对事务处理、权限管理等概念的认识和理解。
二、适应专业:信息管理与信息系统,信息与计算机科学三、实验学时数:12学时四、实验内容及学时安排:实验准备:各班选出10个同学,协助老师搭建试验环境。
包括:1)安装ORACLE客户端,配置与主机的数据库连接。
2)安装软件工具 PLSQL/DEVELOPER3)负责本班用户的建立。
分为两批上午下午各两个班。
实验一:数据定义/数据操纵语言实验目的:熟悉Oracle上机环境以及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。
学时数:4学时实验内容:SQL数据定义语句, SQL数据操纵语句。
实验要求:1. 熟悉Oracle上机环境;2. 建立数据库表,修改数据库表结构,建立、删除索引;3. 对数据库表进行插入、修改和删除数据的操作。
实验二:数据查询语言,视图定义实验目的:体会SQL语言数据查询功能的丰富和复杂,视图使用。
学时数:4学时实验内容:SQL数据查询语句,视图的定义与操纵;实验要求:对数据库表进行各种查询操作,建立视图,视图查询,视图更新;实验三:授权控制与事务处理实验目的:通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能。
学时数:2学时实验内容: 1. SQL数据控制语句;2. SQL事务处理。
实验要求:1. 给某一或全部用户授权和收回授权;2. 事务回退,事务提交。
五、教材及参考文献1.《数据库系统概论》(第三版)萨师煊等编著高等教育出版社 2000.22.《ORACLE 8.x For Windows NT实用教程》翁正科等编著清华大学出版社 1998.10六、实验环境实验要求如下环境服务器端:Windows 2000NT Server;ORACLE 8.x Database Server For Windows Windows2000 Server 客户端: Windows9x;Oracle 8.x Client网络协议:TCP/IP七、成绩考核上机实验考核采取实验报告和上机抽查检验相结合的方式。
每次实验结束后都必须写出实验报告。
八. 实验报告实验一:数据定义/数据操纵语言[ 实验日期 ] 年月日[ 实验目的 ]熟悉Oracle上机环境以及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。
[ 实验内容 ]Oracle上机环境以及Oracle客户端的配置参见附录。
1. SQL数据定义语句:例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2)字段,Sname 字段为Sname(C,8)且可为空。
例1-2: (修改数据库表) 在Student表中增加SSEX(C,2)字段。
例1-3: (修改数据库表) 将Student表中把Sname字段修改为Sname(C,10)且为非空。
例1-4: (建立索引) 为Score表按学号升序和课程号降序分别建立索引,索引名分别为SC_NDXSNO 和SC_NDXCNO。
为Score表按分数降序建立索引,索引名为GRADE_NDX。
例1-5: (删除索引) 删除索引SC_NDX_SNO。
例1-6: (建立数据库表) 建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student 表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。
例1-7: (修改数据库表) 删除成绩表Score的参照完整性约束关系。
例1-8: (修改数据库表) 添加成绩表Score的参照完整性约束关系。
2. SQL数据操纵语句:例2-1: (插入数据) 按前面各表中的数据分别插入到教学数据库的四个数据库表中。
例2-2:(多行插入) 将表Student中在计算机系(‘CS’)的学生数据插入到表S1中。
例2-3:(利用查询来实现表的定义与数据插入) 求每一个学生的平均成绩,把结果存入数据库表Student_Gr中。
例2-4: (修改数据) 将S1表中所有学生的年龄加2。
例2-5: (修改数据) 将Course表中‘程序设计’课时数修改成与‘数据结构’的课时数相同。
例2-6: (插入数据) 向Score表中插入数据(‘98001’, ‘001’, 95),根据返回信息解释其原因。
例2-7: (插入数据) 向Score表中插入数据(‘97001’, ‘010’, 80),根据返回信息解释其原因。
例2-8: (删除数据) 删除Score表中学号为‘96001’的成绩信息,根据返回信息解释其原因。
例2-9: (删除数据) 删除Score表中课程号为‘003’的成绩信息,根据返回信息解释其原因。
例2-10:(删除数据) 删除学生表S1中学号以96打头的学生信息。
例2-11:(删除数据) 删除数据库表S1中所有学生的数据。
例2-12:(删除表) 删除数据库表S1和Student_Gr。
[ 实验要求 ]①熟悉Oracle上机环境,掌握Oracle客户端的配置;②建立数据库表,修改数据库表结构,建立、删除索引;③对数据库表进行插入、修改和删除数据的操作。
[ 实验方法 ]①按照附录中的操作步骤进行客户端的配置;②将实验需求用SQL语句表示;③执行SQL语句;④查看执行结果,如果结果不正确,进行修改,直到正确为止。
[实验总结 ]① SQL语句以及执行结果;②对重点实验结果进行分析;③实验中的问题和提高;④收获与体会。
实验二:数据查询语言,视图操作[ 实验日期 ] 年月日[ 实验目的 ]体会SQL语言数据查询功能的丰富和复杂,视图定义使用。
[ 实验内容 ]3. SQL数据查询语句:例3-1: (选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。
例3-2: (不选择重复行) 求选修了课程的学生学号。
例3-3: (选择表中的所有列) 求全体学生的详细信息。
例3-4: (使用表达式) 求全体学生的学号、姓名和出生年份。
例3-5: (使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。
例3-6: (比较大小条件) 求年龄大于19岁的学生的姓名和年龄。
例3-7: (比较大小条件) 求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄。
例3-8: (确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。
例3-9: (确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。
例3-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。
例3-11:(确定集合条件) 求不是数学系、计算机系的学生信息。
例3-12:(匹配查询) 求姓名是以“李”打头的学生。
例3-13:(匹配查询) 求姓名中含有“志”的学生。
例3-14:(匹配查询) 求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。
例3-15:(匹配查询) 求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、课程号和成绩。
例3-16:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。
例3-17:(控制行的显示顺序) 求选修003课程或004课程的学生的学号、课程号和分数。
例3-18:(组函数) 求学生总人数。
例3-19:(组函数) 求选修了课程的学生人数。
例3-20:(组函数) 求计算机系学生的平均年龄。
例3-21:(组函数) 求选修了课程001的最高、最低与平均成绩。
例3-22:(分组查询) 求各门课程的平均成绩与总成绩。
例3-23:(分组查询) 求各系、各班级的人数和平均年龄。
例3-24:(分组查询) 输入以下查询语句并执行,观察出现的其结果并分析其原因。
SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT WHERE SDEPT=’CS’ GROUP BY SDEPT;例3-25:(分组查询) 分析以下语句为什么会出现错误。
并给出正确的查询语句。
SELECT SAGE FROM STUDENT GROUP BY SNO;例3-26:(分组查询) 求学生人数不足3人的系及其相应的学生数。
例3-27:(分组查询) 求各系中除01班之外的各班的学生人数。
例3-28:(涉及空值的查询) 分别观察各组函数、行的显示顺序以及分组查询与空值的关系。
例3-29:(自然连接查询) 求学生号以及其选修课程的课程号和成绩,但查询结果中只能有一个SNO字段。
例3-30:(连接查询) 求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。
例3-31:(连接查询与表的别名) 求选修了课程的学生的学生姓名、课程号和成绩。
例3-32:(自身连接查询) 求年龄大于’李丽’的所有学生的姓名、系和年龄。
例3-33:(外部连接查询) 求选修了课程002或003的学生的学号、课程号、课程名和成绩。
例3-34:(子查询) 求与‘李丽’年龄相同的学生的姓名和系。
例3-35:(子查询) 求选修了课程名为’数据结构’的学生的学号和姓名。
例3-36:(子查询ANY) 求比数学系中某一学生年龄大的学生的姓名和系。
例3-37:(子查询ALL) 求比数学系中全体学生年龄大的学生的姓名和系。
例3-38:(子查询EXISTS) 求选修了课程004的学生的姓名和系。
例3-39:(返回多列的子查询) 求与‘李丽’同系且同龄的学生的姓名和系。
例3-40:(多个子查询) 求与‘李丽’同系,且年龄大于‘黎明’的学生的信息。
例3-41:(子查询中使用表连接) 求数学系中年龄相同的学生的姓名和年龄。
例3-42:(连接或嵌套查询) 检索至少选修王成刚老师所授课程中一门课程的女学生姓名。
例3-43:(嵌套与分组查询) 检索选修某课程的学生人数多于3人的教师姓名。
例3-44:(集合查询) 列出所有教师和同学的姓名和性别。
例3-45:(相关子查询) 求未选修课程004的学生的姓名。