数据库实训7#101.docx
- 文档编号:8173392
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:20
- 大小:179.63KB
数据库实训7#101.docx
《数据库实训7#101.docx》由会员分享,可在线阅读,更多相关《数据库实训7#101.docx(20页珍藏版)》请在冰豆网上搜索。
数据库实训7#101
《数据库基础与Java数据库编程》课程复习资料
一、不定项选择题
1、【多选】在关系数据库中,通过约束无法实现的校验规则是:
(BC)。
A.PRIMARYKEY约束
B.NOTNULL约束
C.CHECK约束
D.FOREIGNKEY约束
2、SQL中用于进行逻辑“与”运算的运算符为:
(C)。
A.+B.&C.ANDD.||
3、如果想要使某列的取值在指定的范围内必须在0~100之间,那么可以使用(B
A.缺省约束
B.检查约束
C.唯一约束
D.外键约束
4、在数据库中NULL是一个特殊值。
关于NULL的描述正确的是(B)。
A.NULL是零长度字符串,不同于空格字符或数字0
B.NULL是ASCII码为0的字符,不同于空格字符或数字0
C.比较两个空值或将空值与任何其它数值相比均返回true
D.比较变量Fax是否为空应表示为“FaxisNULL”
)。
5、如果想要使某列的取值在指定的范围内必须在0~100之间,那么可以使用(B
)。
A.缺省约束(DEFAULT)
B.检查约束(CHECK)
C.唯一约束(UNIQUE)
D.外键约束(FOREIGNKEY)
6、数据表创建索引的目的是(A)。
A.提高数据查询的性能
B.提高系统的更新性能
C.让数据分类存储,更加有效
D.更好地确保数据安全性和唯一性
7、在Java中,用于建立与数据库连接的接口是(A
A.Connection
B.PreparedStateme
C.ResulSet
D.DriverManager
)。
8、在JDBC进行数据库连接过程中,下列哪个字符串表示Oracle的驱动程序(
A)。
A.oracle.jdbc.driver.OracleDriver
B.jdbc:
oracle:
thin:
@localhost:
1521:
AHGF
C.org.gjt.mm.mysql.Driver
D.jdbc:
mysql:
//localhost:
3306/ahgf
9、[多选]数据库的设计一般包括以下哪些过程(ABCD)。
A.数据库需求分析
B.数据库概念结构设计
C.数据库逻辑结构设计
D.数据库物理结构设计
10、[多选]数据库设计人员应具备的知识包括(ABCD)。
A.数据库的基本知识和数据库设计技术
B.计算机科学的基础知识和程序设计的方法和技巧
C.软件工程的原理和方法
D.相关应用领域的知识
11、表示实体之间联系的E-R模型,是数据库的(A)。
A.概念模型
B.逻辑模型
C.外部模型
D.物理模型
12、用二维表数据来表示实体及实体之间联系的数据库模型称为(D)。
A.实体-联系模型
B.层次模型
C.网状模型
D.关系模型
13、[多选]实体之间的联系包括以下哪些类型(ABC)。
A.一对一
B.一对多
C.多对多
D.零对多
14、下列叙述中正确的是(C)。
A.数据库是一个独立的系统,不需要操作系统的支持
B.数据库设计是指设计数据库管理系统
C.数据库技术的根本目的是解决数据共享的问题
D.数据库系统中,数据的物理结构必须与逻辑结构一致
A选项,数据库系统需要操作系统的支持,必不可少,故其叙述不正确。
B选项错误,数据库设计是指设计一个能满足用户要求,性能良好的数据库。
D选项也不对,数据库应该具有物理独立性和逻辑独立性,改变其一而不影响另一个。
正确答案为C。
15、SQL语言是(C)语言。
A.层次数据库
B.网络数据库
C.关系数据库
D.非数据库
16、下列不属于DBMS的是(A)。
A.Java
B.SQL-Server
C.MySql
D.ORACLE
17、SQL语言中,删除一个表的命令是(B)。
A.DELETE
B.DROP
C.CLEAR
D.REMORE
18、创建一个表的命令是(B)。
A.CREATEVIEW
B.CREATETABLE
C.CREATEDATABAS
D.CREATEINDEX
19、从员工表的“姓名”字段中找出名字包含“玛丽”的人,下面哪条select语句正确:
(D)。
A.Select*from员工where姓名=_玛丽_’
B.Select*from员工where姓名=%玛丽_’
C.Select*from员工where姓名like‘玛丽%’
D.Select*from员工where姓名like‘%玛丽%’
20、如果要查询员工信息表info中所有员工的数据信息并且按照工资(salary)降序排列,则下面的语句哪个是正确的(A)。
A.select*frominfoorderbysalarydesc
B.select*frominfoorderbysalary
C.select*frominfogroupbysalarydesc
D.select*frominfogroupbysalary
二、简答题
1.简述数据库、数据库管理系统、数据库系统的定义和它们之间的关系。
Ø数据库:
数据库是一个长期存储在计算机内、有组织的和可共享的大量数据集合。
Ø数据库管理系统:
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。
它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
Ø数据库系统:
是由数据库及其管理软件组成的系统。
它是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统,也是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。
Ø三者之间关系:
翻书
2.简述E-R模型向关系模型转换的基本原则。
Ø一个实体类型转换为一个关系模式
Ø一个m:
n联系转换为一个独立的关系模式
Ø一个1:
n联系可以转换为一个独立的关系模式,也可以与n端的关系模式合并。
Ø一个1:
1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
Ø三个或三个以上实体间的一个多元联系转换为一个关系模式
Ø同一个实体集的实体间的联系,即自联系,也可按上述1:
1、1:
n和m:
n三种情况分别处理
Ø具有相同码的关系模式可合并。
3.简述数据库系统设计与实现的六个阶段和主要任务。
(1)需求分析:
分析用户的需求,包括数据、功能和性能需求;
(2)概念结构设计:
主要采用E-R模型进行设计,包括画E-R图;
(3)逻辑结构设计:
通过将E-R图转换成表,实现从E-R模型到关系模型的转换;
(4)数据库物理设计:
主要是为所设计的数据库选择合适的存储结构和存取路径;
(5)数据库实施:
包括编程、测试和试运行;
(6)数据库运行和维护:
系统的运行与数据库的日常维护。
4.SQL语言包括哪三个部分,分别包含哪几类语句?
1、数据操纵语言(DML):
用来操纵数据库中数据的命令。
包括:
select、insert、update、delete。
2、数据定义语言(DDL):
用来建立数据库、数据库对象和定义列的命令。
包括:
create、alter、drop。
3、数据控制语言(DCL):
用来控制数据库组件的存取许可、权限等的命令。
包括:
grant、deny、revoke。
5.什么叫完整性约束?
完整性约束分为几类?
Oracle中有哪几类约束?
◆完整性的约束:
完整性约束是指对数据的一致性、准确性和有效性的要求。
◆完整性约束分为以下三类:
●实体完整性:
对每个实体(行)的约束。
●引用完整性:
要求所有引用来的数据在被引用处是有效的。
●域完整性:
域表示字段的取值范围,是对具体字段的取值范围进行约束。
◆Oracel中的五类约束
●NOTNULL(非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.
●CHECK(检查)--检查在约束中指定的条件是否得到了满足.
●UNIQUE(唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的.
●PRIMARYKEY(主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束.
●FOREIGNKEY(外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键.
6.在进行Java数据库开发时主要用到哪个包中的接口和类?
请列举它们的名字和作用。
进行数据库开发时用到的接口主要是在JAVASE的java.sql包,它提供四个主要的接口和类:
·DriverManager类:
用于加载数据库的驱动(加载不同厂商的jar包);
·Connection接口:
针对不同DBMS的连接接口;
·Statement接口:
专门用于执行SQL语句的接口;
·PreparedStatement接口:
专门用于执行带参数的SQL语句的接口,该接口比上面的Statement常用,而且安全、高效。
·ResultSet接口:
用于表示SQL语句返回的表值结果集。
7.请简述进行数据库连接操作的一般步骤。
1、加载数据库驱动程序:
class.forName(驱动程序名)
2、取得连接:
通过DriverManager获取连接
3、进行数据库CRUD操作:
Statement或者PreparedStatement执行语句、ResultSet保存结果
4、关闭数据库连接.
8.请简述DAO设计模式的一般开发过程,并说明每个类或接口的作用。
◆值对象(简单java类):
包含属性和表中字段完全对应的类。
它存活的目的就是为数据提供一个生存的地方。
◆一个DAO接口:
此接口定义了对数据层的操作标准(定义了所有的业务方法),更好的实现程序的可移植性。
◆一个实现DAO接口的具体类:
实现DAO接口的具体业务细节和数据操作细节
◆一个DAO工厂类:
通过工厂类取得代理类的实例去调用代理类的操作。
◆数据库连接类:
连接数据库,获得连接对象,以及关闭数据库。
9.描述下面这个语法中至少五个关键字的作用、
SELECT[DISTNCT]{*|字段列表|函数或表达式}
SELECT子句说明要查询的数据
FROM子句说明要查询的数据来源
WHERE子句指定查询条件
GROUPBY子句表示在查询的时,可以按照某个或某些字段分组汇总,各分组选项之间用逗号分隔
ORDERBY子句表示在显示结果时,按照指定字段进行排序。
SELECT[DISTINCT]{*|字段列表|函数或表达式}从字段或函数表达式中返回不重复的的值。
三、数据库设计题
项目1:
某酒店点餐系统包括菜谱、客人(会员)、点菜单、台席、员工和账单等实体。
菜谱是本店所有的菜品清单,包括菜品编号、菜品名称、特色、计价单位、单价、折扣价、菜品类型、菜系等;台席是所有台席的信息,包括台席编号、位置、座位数量、状态等;员工信息和会员信息略;点菜是客人点餐的记录,账单是消费记录信息。
1.请分析本系统的实体集及其属性。
菜谱:
菜品编号、菜品名称、特色、计价单位、单价、折扣价、菜品类型、菜系
客人(会员):
客户就餐编号、客人姓名、联系方式、订餐时间、人数
点菜单:
点菜单编号、时间、餐金汇总,负责员工、时间
台席:
台席编号、位置、座位数量、状态
员工:
员工工号、员工姓名、员工电话、员工年龄、员工性别
账单:
账单编号、应收金额、实收金额、折扣、负责员工、时间
2.请画出本系统的总E-R图(忽略实体属性,仅绘制实体与联系)。
3.将你绘制的E-R模型转换为关系模型。
菜谱(菜品编号、菜品名称、特色、计价单位、单价、折扣价、菜品类型、菜系)
客人(客户就餐编号、台席编号、客人姓名、联系方式、订餐时间、人数)
点菜单(点菜单编号、台席编号、菜谱编号、时间、餐金汇总、负责员工)
员工:
员工工号、员工姓名、员工电话、员工年龄、员工性别
台席:
台席编号、位置、座位数量、状态
账单:
账单编号、台席编号、应收金额、实收金额、折扣、时间
4.请给出点菜表的物理设计。
项目2:
运动会中设置了各类比赛,每一比赛类别有类别编号、类别名称和主管等属性,每一比赛类别包含很多比赛项目;每一比赛项目有项目编号、项目名称、比赛时间和级别等属性;各个系团队有团编号、团名称、领队等属性,每一代表团有多名运动员组成,运动员有编号,姓名,年龄,性别等属性;每一名运动员可以参加多个比赛项目,每一比赛项目也有多名运动员参加,运动员参加比赛有成绩属性,成绩限定在0~7分。
每个团队按届别还可以排名。
每个项目还有历史记录。
1.请分析本系统的实体集及其属性。
(比赛记录,ER图,实体集自己加上)
⏹比赛类别(类别编号、类别名称、主管……)
⏹比赛项目(项目编号、项目名称、比赛时间、级别……)
⏹系团队(团编号、领队、团名称……)
⏹运动员(运动员编号、姓名、年龄、性别……)
⏹参加(项目编号、运动员编号、成绩)
⏹比赛记录:
……
2.请画出本系统的总E-R图(忽略实体属性,仅绘制实体与联系)。
3.将你绘制的E-R模型转换为关系模型。
◆比赛类别(类别编号、类别名称、主管)
◆比赛项目(项目编号、项目名称、比赛时间、级别、类别编号)
◆系团队(团编号、团名称、领队)
◆运动员(运动员编号、姓名、年龄、性别、团编号)(1:
n的原则,与n端合并)
◆参加(项目编号、运动员编号、成绩)(m:
n的原则)
◆比赛记录:
……
4.请给成绩表的物理设计。
项目3:
某企业集团有若干工厂,每个工厂生产多种产品,且每一种产品可以在多个工厂生产,每个工厂按照固定的计划数量生产产品,计划数量不低于300;每个工厂聘用多名职工,且每名职工只能在一个工厂工作,工厂聘用职工有聘期和工资。
工厂的属性有工厂编号、厂名、地址,产品的属性有产品编号、产品名、规格,职工的属编号、厂名、地址性有职工号、姓名、技术等级。
1.请分析本系统的实体集及其属性。
职工(职工编号、姓名、技术等级、聘期、工资)
工厂(工厂编号、厂名、地址)
产品(产品编号、产品名、规格)
2.请画出本系统的总E-R图(忽略实体属性,仅绘制实体与联系)。
3.将你绘制的E-R模型转换为关系模型。
职工(职工编号、姓名、技术等级、聘期、工资、工厂编号)
工厂(工厂编号、厂名、地址)
产品(产品编号、产品名、规格)
生产(工厂编号、产品编号、计划数量)
4.请给出聘用关系的物理设计。
四、编程题
1、请编写SQL代码创建雇员表
CREATETABLEEMP
(
EMPNONUMBERPRIMARYKEY,
ENAMEVARCHAR2(20)NOTNULL,
JOBVARCHAR2(20),
HIREDATEDATE,
SALINTERGER,
COMMINTERGER,
MGRVARCHAR2(20)
);
2、请编写SQL代码创建部门表
CREATETABLEDept
(
DEPTNONUMBERPRIMARYKEY,
DNAMEVARCHAR2(20)NOTNULL,
LOCVARCHAR2(100)
);
3、请编写程序实现以下查询
(1)
查询编号为7699的雇员的编号、姓名、职位、基本工资
SELECTEMPNO,ENAME,JOB,SAL
FROMEMP
WHEREEMPNO=7839;
(2)
查询工资范围在1500~3000之间的所有雇员信息
SELECT*FROMEMP
WHERESALBETWEEN1500AND3000;
(3)
要求查询出雇员姓名中包含字母A的雇员信息
SELECT*FROMEMP
WHEREENAMELIKE‘%A%’;
(4)
查询所有的雇员信息并按照工资由高到低排序
select*fromEMPorderbySALdesc;
(5)
查询部门名称为“市场部”的员工编号、姓名、SLEE职位和基本工资
SELECTE.EMPNO,E.ENAME,E.JOB,E.SAL,D.DNAMEFROMEMPE,DEPTDWHEREE.DEPTNO=D.DEPTNOANDD.DNAME='RESEARCH';
(6)
统计每个部门的平均工资,最低工资和最高工资
selectdeptno,avg(sal),max(sal),min(sal)fromempgroupbydeptno;
(7)
将你的信息添加到雇员表中
INSERTINTOEMPVALUES(1993,'陈逢春','总经理',NULL,’2013-12-25’,,,NULL);
(8)
修改雇员表中编号为7699的薪水为2000元
updateempsetsal=2000whereempno=7699;
(9)
删除雇员表中部门为空的员工信息
deleteempwheredeptnoisNULL;
(10)查询每个员工的编号、姓名、部门名称和直接领导的姓名
SELECTe.empno,e.ename,m.enameasmgrname,dname
FROMempe,empm,deptd
WHEREe.mgr=m.empnoANDd.deptno=e.deptno;
4.请实现EmpDAOImpl类。
publicclassEmpDAOImplimplementsIEmpDAO{
privateConnectionconn;
PreparedStatementpst;
publicEmpDAOImpl(Connectionconn){
this.conn=conn;}
publicbooleandoCreate(Empvo)throwsException{
Stringsql="INSERTINTOemp(empno,ename,job,hiredate,mgr,sal,comm,deptno)"
+"VALUES(?
?
?
?
?
?
?
?
)";
pst=conn.prepareStatement(sql);
pst.setInt(1,vo.getEmpno());
pst.setString(2,vo.getEname());
pst.setString(3,vo.getJob());
pst.setDate(4,newjava.sql.Date(vo.getHiredate().getTime()));
pst.setInt(5,vo.getMgr());
pst.setDouble(6,vo.getSal());
pst.setDouble(7,vo.getComm());
pst.setInt(8,vo.getDeptno());
intresult=pst.executeUpdate();
if(result>0){
returntrue;
}else{
returnfalse;
}}
publicbooleandoDelete(Integerempno)throwsException{
Stringsql="DELETEFROMempWHEREempno=?
";
pst=conn.prepareStatement(sql);
pst.setInt(1,empno);
intresult=pst.executeUpdate();
if(result>0){
returntrue;
}
returnfalse;
}publicbooleandoUpdate(Empvo)throwsException{
Stringsql="UPDATEempSETename=?
job=?
hiredate=?
mgr=?
"+
"sal=?
comm=?
deptno=?
WHEREempno=?
";
pst=conn.prepareStatement(sql);
pst.setString(1,vo.getEname());
pst.setString(2,vo.getJob());
pst.setDate(3,newjava.sql.Date(vo.getHiredate().getTime()));
pst.setInt(4,vo.getMgr());
pst.setDouble(5,vo.getSal());
pst.setDouble(6,vo.getComm());
pst.setInt(7,vo.getDeptno());
pst.setInt(8,vo.getEmpno());
intresult=pst.executeUpdate();
if(result>0)
returntrue;
returnfalse;
}publicList
List
Stringsql="SELECTempno,ename,job,hiredate,mgr,sal,comm,deptno"+
"FROMemp";
pst=conn.prepareStatement(sql);
ResultSetrs=pst.executeQuery();
while(rs.next()){
Empvo=newEmp();
vo.setEmpno(rs.getInt
(1));
vo.setEname(rs.getString
(2));
vo.setJob(rs.getString(3));
vo.setHiredate(rs.getDate(4));
vo.setMgr(rs.getInt(5));
vo.setSal(rs.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 101