admin 管理员组

文章数量: 887021


2024年2月24日发(作者:linux操作系统是一款免费使用)

数据库操作题及答案

【篇一:sql数据库复习资料操作题复习(带答案)】

本文件,文件名为学号姓名.sql,sql语句前加上题号。(共60分)

一、创建数据库

创建一个数据库,数据库名为student,主数据文件的逻辑名为student_data,物理名称为student_,存放在d盘根目录下,初始大小为10mb,最大可增长到50mb,增长方式是按5%比例增长;日志文件的逻辑名称为student_log,物理名称为student_,存放在d盘根目录下,初始大小为2mb,最大可增长到5mb,按1mb增长。

create database student on primary

(name=student_data, filename=d:student_,

size=10mb, maxsize=50mb, filegrowth=5%)

log on (name=student_log,

filename=d:student_, size=2mb, maxsize=5mb,

filegrowth=1mb)

二、创建表

create table 学 生 (学号 char(8) primary key, 姓名 char(20) not

null, 性别 char(2) not null check(性别 in(男,女)),出生日期

datetime null)

use student

create table 成绩 (学号 char(8),课程名 varchar(30),成绩 real null

check(成绩 between 0 and 100) primary key(学号,课程名),

foreign key (学号) references 学生(学号))

3、在gxc数据库中创建商品表,表名:sp。结构如下:

use gxc

create table sp (bh char(20) primary key,mc varchar(50) not

null, xkc real, sj money)

4、在gxc数据库中创建供应表,表名:gy。结构如下:

create table gy

(ddh char(10),bh char(20) not null, sl float not null check(sl0),

jg money,

jsj datetime default(getdate()), primary key(ddh,bh),

foreign key (bh) references sp(bh))

5、往表中插入以下记录:

insert into sp values(2,精品红富士,200,3.50)

insert into sp values(693,甜酒酿,50,2.00) insert into

gy values(2007001,2,80,3.00,2007-6-1)insert into

gy values(2007001,693,30,1.70,2007-6-1)

三、创建查询、视图、索引

(1)在student数据库完成下列各题

student表:sno:学号;sname:姓名;sex:性别;sbirth:出生日期;sdept:系别 sc表:sno:学号;cname:课程名称;grade:成绩

1、查询性别为“男”的学生的基本情况,并按学号升序排序; select

*from 学生where 性别=男order by 学号 asc

2、查询所有选修“数据库原理”的学生的学号、成绩。 select 学生.学号,成绩 from 学生,成绩where 学生.学号=成绩.学号 and 课程名=数据库原理

3、创建视图view1,查询缺少成绩的学生的学号和相应的课程名。

create view view1as select 学号,课程名 from 成绩 where 成绩

is null

4、创建视图view2,查询出所有学生的学号、姓名、性别和年龄,该视图定义加密,即带with encryption参数。

create view view2with encryption as

select 学号,姓名,性别,year(getdate())-year(出生日期) 年龄 from

学生

5、查询出所有姓李,并且名为单个字的学生的基本信息。 select *

from student where sname like 李_

6、使用外部连接,查询每个学生基本信息及其选课情况,如果学生没有选课,也显示其基本信息。

select student.*,cname,gradefrom student left join sc on

=

7、查询选修了两门及两门以上课程的学生的学号。提示:使用group by和having子句。 select snofrom sc group by sno

having count(cname)=2

8、查询有选课记录的所有学生的学号,用distict限制结果中的学号不重复。 select distinct snofrom sc

9、将view1的所有学生年龄增加一岁。思考:能否实现,如果不能实现指明原因? update view1 set 年龄=年龄+1 不能实现,因为年龄是计算得到的,无法转换为对表的修改。

10、创建一个带with check option参数的视图view2,其内容是查询所有女生的基本信息。

create view view2 as

select *

from studentwhere sex=女 with check option

11、使用insert语句向view2中插入数据(‘95003’,‘张三’,‘男’)。 思考:能否实现,如果不能实现指明原因?

insert into view2(sno,sname,sex) values(95003,张三,男) 不能实现,因为视图定义中有with check option,更新的数据必须符合视图定义的条件。

12、分别统计各门课程的平均分、最高分。提示:使用group by子句 select 课程名,avg(成绩) 平均分,max(成绩) 最高分from 成绩group by 课程名

13、根据实际情况为成绩表的成绩字段创建索引,索引名为cjindex。 create index cjindexon 成绩(成绩)

(2)在gxc数据库中完成下列各题

1、查询“精品红富士”最近一次进货的进价。提示:可按照进货时间排序。 select top 1 jgfrom gy,sp where = and mc=精品红富士 order by jsj desc

2、创建视图view1,查询库存不足的商品基本信息,库存不足指现库存量小于50。该视图定义加密,即带with encryption参数。

create view view1with encryption as

select * from sp where xkc50

3、根据实际情况为商品表的现库存量字段创建索引,索引名为kcindex。 create index kcindex on sp(xkc)

4、查询“精品红富士”本年的供应情况。

select gy.* from gy,sp

where = and mc=精品红富士

andyear(jsj)=year(getdate())

5、创建视图view1,查询库存充足的商品基本信息,库存充足指现库存量大于100。该视图定义加密,即带with encryption参数。

create view view1with encryption as

select *from sp where xkc100

6、删除视图view1。 drop view view1

7、根据实际情况为商品表的商品名称字段创建索引,索引名为spindex。 create index spindex on sp(mc)

8、删除索引spindex。 drop index spindex

【篇二:数据库期末考试试题及答案】

=txt>1.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。在这几个阶段中,数据独立性最高的是( a )阶段。

a. 数据库系统 b. 文件系统 c. 人工管理d.数据项管理

2.数据库三级视图,反映了三种不同角度看待数据库的观点,用户眼中的数据库称为(d)。

a. 存储视图b. 概念视图c. 内部视图d. 外部视图

3.数据库的概念模型独立于(a)。

a. 具体的机器和dbms b. e-r图

c. 信息世界 d. 现实世界

4.数据库中,数据的物理独立性是指(c)。

a. 数据库与数据库管理系统的相互独立

b. 用户程序与dbms的相互独立

c. 用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的

d. 应用程序与数据库中数据的逻辑结构相互独立

5.关系模式的任何属性(a)。

a. 不可再分b. 可再分

c. 命名在该关系模式中可以不惟一d.以上都不是

6.下面的两个关系中,职工号和设备号分别为职工关系和设备关系的关键字: 职工(职工号,职工名,部门号,职务,工资) 设备(设备号,职工号,设备名,数量)

两个关系的属性中,存在一个外关键字为( c )。

a. 职工关系的“职工号” b. 职工关系的“设备号”

c. 设备关系的“职工号” d. 设备关系的“设备号”

7.以下四个叙述中,哪一个不是对关系模式进行规范化的主要目的( c )。

a. 减少数据冗余 b. 解决更新异常问题

c. 加快查询速度 d. 提高存储空间效率

8.关系模式中各级范式之间的关系为( a )。

a.

c.b. d.

9.保护数据库,防止未经授权或不合法的使用造成的数据泄漏、非法更改或破坏。这是指数据的( a )。

a. 安全性 b.完整性 c.并发控制 d.恢复

10.事务的原子性是指( b )。

a. 事务一旦提交,对数据库的改变是永久的

b. 事务中包括的所有操作要么都做,要么都不做

c. 一个事务内部的操作及使用的数据对并发的其他事务是隔离的

d. 事务必须使数据库从一个一致性状态变到另一个一致性状态

11.下列哪些运算是关系代数的基本运算( d )。

a. 交、并、差b. 投影、选取、除、联结

c. 联结、自然联结、笛卡尔乘积 d. 投影、选取、笛卡尔乘积、差运算

12.现实世界 “特征” 术语, 对应于数据世界的( d )。

a.属性 b. 联系 c. 记录 d. 数据项

13.关系模型中3nf是指( a )。

a.满足2nf且不存在传递依赖现象

b.满足2nf且不存在部分依赖现象

c.满足2nf且不存在非主属性

d.满足2nf且不存在组合属性

14.下面关于关系性质的叙述中,不正确的是( d )。

a. 关系中元组的次序不重要 b. 关系中列的次序不重要

c. 关系中元组不可以重复 d. 关系不可以为空关系

15.数据库管理系统能实现对数据库中数据的查询、插入、修改和删除,这类功能称为(c)。

a. 数据定义功能b.数据管理功能

c. 数据操纵功能d.数据控制功能

16.候选码中的属性可以有( c )。

a. 0个b. 1个 c. 1个或多个 d.多个

17.取出关系中的某些列,并消去重复元组的关系代数运算称为( b )。

a. 取列运算 b. 投影运算c. 连接运算 d. 选择运算

18.候选码中的属性称为( b )。

a. 非主属性 b. 主属性c. 复合属性d. 关键属性

19.对现实世界进行第二层抽象的模型是( c )。

a. 概念数据模型b. 用户数据模型

c. 结构数据模型 d. 物理数据模型

20.在关系模式r(a,b,c,d)中,有函数依赖集f={b→c,c→d,d→a},则r能达到(b)。

a. 1nf b. 2nfc. 3nfd. 以上三者都不行

二、填空题(每空1分,共20分)

1.数据库保护包括(安全性保护、完整性保护、并发控制、故障恢复)四个方面内容。

2.二元实体间的联系通常可分为 (1:1、1:n、m:n)三种。

3.数据库系统中数据的独立性包括(-物理独立性、逻辑独立性)两个方面。

4.数据库设计通常包括(结构特性(静态)、行为特性(动态))两方面内容。

5.根据数学理论,关系操作通常有(关系代数)和(关系演算)两类。

6.构成e-r图的三个基本要素为(实体、属性、联系)。

公司的研究员e. f. codd于1970年发表了一篇著名论文,主要是论述(关系)模型。

9.判断分解后的关系模式是否合理的两个重要标志是分解是否满足关系的 (无损连接性(不失真)、依赖保持性)。

三、计算题(8分,每小题2分)

若关系x、y、z如图所示,求:

(1) ∏a,c(x) 解:

a

a1

a2

a3

a3

a4

a1

解:

a

a1

a4

a1

(3)x? y

解:

a

a1 bc b ’b2’ c c1 c1 c2 c4 c2 c2 a1c4 (x) b1c1 c2c2 c2

b1 b1 a3b1

x yz

a

a1

a2

a3

a3

a4

a1 bb1 b3 b2 b1 b1 cc db cc1 c4 c1 c4 c2 c2 c1 d1 c2 d2

c3 d3b1 c2 b2 c4 b1 c1 a1b2 b1c2

四、应用题(12分,每小题3分)

设有三个关系:

s(s#,sname,age,sex)

c(c#,cname,teacher)

sc(s#,c#,grade)

试用关系代数表达式表示下列查询语句:

(1)检索至少选修两门课程的学生学号(s#)。

(2)检索全部学生都选修的课程的课程号(c#)和课程名(cname)。

(3)检索选修课程包含“陈军”老师所授课程之一的学生学号(s#)。

(4)检索选修课程号为k1和k5的学生学号(s#)。

五、证明题(10分 c#=’k1’∨ c#=’k5’

2.设关系模式r(abc),函数依赖f={a→b,b→a,a→c}满足3nf还是满足bcnf,试说明理由(5分)

解:1.设r1=abc,r2=cd

∵r1∩r2=c,r2-r1=d,而c→d(已知),故r1∩r2→r2-r1成立

2.对于关系模式r(abc),函数依赖f={a→b,b→a,a→c},

分析可知,该关系模式关键字为a。

同样由分析可得,该关系模式不存在非主属性b、c对关键字a的部分依赖和传递依赖

现象,r∈3nf,但由于b→a(已知),而b不是关键字,

故该关系模式r∈bcnf不成立。(5分)

六、程序设计题(20分)

设有如下4个关系模式:

s(sn,sname,city)

p(pn,pname,color,weight)

j(jn,jname,city)

spj(sn,pn,jn,qty)

其中:s表示供应商,sn为供应商编码,sname为供应商名字,city为供应商所在城市;p表示零件,pn为零件编码,pname为零件名字,color为零件颜色,weight为零件重量;j表示工程,jn为工程编码,jname为工程名字,city为工程所在城市;spj表示供应关系,qty表示提供的零件数量。

写出实现以下各题功能的sql语句:

(1)取出所有工程的全部细节。(2分)

select *

from j;

(2)取出所在城市为南京的所有工程的全部细节。

select *

from j

where city=’南京’;

(3)取出为所在城市为上海的工程提供零件的供应商编码。

select distinct sn

from spj

where jn in

(select jn

from j

where city=’上海’);

(4)取出为所在城市为上海或北京的工程提供红色零件的供应商编码。(2分) select sn

from spj

where jn in

(select jn

from j

where city=’上海’ or city=’北京’)

and pn in

(select pn

from p

where color=’红’)

(5)取出供应商与工程所在城市相同的供应商提供的零件编码。(3分)

select

from s,j,spj

【篇三:史上最全oracle数据库基本操作练习题(含答案)】

xt>使用表:

员工表(emp):

(empnonumber(4)notnull,--员工编号,表示唯一

enamevarchar2(10),--员工姓名

jobvarchar2(9),--员工工作职位

mgrnumber(4),--员工上级领导编号

hiredatedate,--员工入职日期

salnumber(7,2),--员工薪水

commnumber(7,2),--员工奖金

deptnonumber(2)—员工部门编号

)

部门表(dept):

(deptnonumber(2)notnull,--部门编号

dnamevarchar2(14),--部门名称

locvarchar2(13)—部门地址

)

说明:增删改较简单,这些练习都是针对数据查询,查询主要用到函数、运算符、模糊查询、排序、分组、多变关联、子查询、分页查询等。

建表脚本(根据需要使用)

:建表脚本.txt

练习题:

1.找出奖金高于薪水60%的员工信息。

select * from emp where commsal*0.6;

2.找出部门10中所有经理(manager)和部门20中所有办事员(clerk)的详细资料。

select * from emp where (job=manager and deptno=10) or

(job=clerk and deptno=20);

3.统计各部门的薪水总和。

select deptno,sum(sal) from emp group by deptno;

4.找出部门10中所有理(manager),部门20中所有办事员(clerk)以及既不是经理又不是办事员但其薪水大于或等2000的所有员工的详细资料。

select * from emp where (job=manager and deptno=10) or

(job=clerk and deptno=20) or (job not in(manager,clerk) and

sal2000);

5.列出各种工作的最低工资。

select job,min(sal) from emp group by job;

6.列出各个部门的manager(经理)的最低薪水。

select deptno,min(sal) from emp where job=manager group by

deptno;

7.找出收取奖金的员工的不同工作。

select distinct(job) from emp where comm is not null;

8.找出不收取奖金或收取的奖金低于300的员工。

select * from emp where comm is null or comm300;

9.找出各月最后一天受雇的所有员工。

select * from emp where hiredate=last_day(hiredate);

10.显示所有员工的姓名,首字母大写。

select initcap(ename) from emp;

11.显示正好为5个字符的员工的姓名。

12.显示不带有“r”的员工姓名。

select ename from emp where ename not like %r%;

13.显示所有员工的姓名的前三个字符。

select substr(ename,0,3) from emp;

14.显所有员工的姓名,用a替换所有姓名中的a。

select replace(ename,a,a) from emp;

15.显示所有员工的姓名以及工作10年后的日期。

select ename,add_months(hiredate,10*12) from emp;

16.显示员工的详细资料,按姓名排序。

select * from emp order by ename;

17.列出从事同一种工作但属于不同部门的员工的不同组合。

select distinct(),, from emp t1,(select

job,deptno from emp) t2 where = and

!=;

18.显示员工姓名,根据其服务年限,将最老的员工排在最前面。

select ename from emp order by hiredate;

19.列出按年薪排序的所有员工的年薪。

select (sal+nvl(comm,0))*12 as 年薪 from emp order by sal;

20.列出最低薪水大于1500的各种工作。

select job from emp group by job having min(sal)1500;

21.显示所有员工的姓名和加入公司的年份和月份,将员工入职年月从低到高排序。

select ename,to_char(hiredate,yyyy) as

year,to_char(hiredate,mm) as months from emp order by

months;

22.显示在一个月为30天的情况下所有员工的日薪水,取整。

select trunc((nvl(comm,0)+sal)/30,0) as 日薪 from emp;

解释:nvl(comm,0)如果是null则转换为0,如果不是null,这保持原值。

23.找出在(任何年份的)2月受聘的所有员工。

select * from emp where to_char(hiredate,mm)=2;

24.对于每个员工,显示其加入公司的天数。

select (sysdate-hiredate) as 天数 from emp;

25.列出有员工的部门,同时列出那些没有员工的部门。

26.列出至少有一个员工的所有部门。


本文标签: 关系 数据库 员工 查询 数据