数据库期末模仿考试题

[复制链接]
发表于 2025-11-13 05:43:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、单选题 (题数:40,共 20.0 分)

1

【单选题】如果要回滚一个事件,则要使用(   )语句。

A、

revoke

B、

rollback

C、

begin

D、

commit

准确答案: B 我的答案:D

答案剖析:

2【单选题】假定有一张表用户表users,此中一身份证字段ID_car

D)为了维护数据的完备性,在筹划数据库时,最好对ID_card字段添加束缚,叨教应该添加什么束缚______  

A、

check

B、

primary key

C、

default

D、

not null

准确答案: B 我的答案:B

答案剖析:

3

【单选题】下列关于读锁和写锁的区别形貌准确的是(   )。

A、

-个读锁和一个写锁是不兼容的

B、

以上都准确

C、

两个写锁也是不兼容的

D、

两个读锁是兼容的

准确答案: B 我的答案:A

答案剖析:

4【单选题】若要在根本表S中增长一列CN(课程名),可用( )  

A、

ALTER TABLE S ADD(CN CHAR(8))

B、

ADD TABLE S(CN CHAR(8))

C、

ADD TABLE S ALTER(CN CHAR(8))

D、

ALTER TABLE S (ADD CN CHAR(8))

准确答案: A 我的答案:C

5【单选题】SELECT CONCAT("I","love","mysql")的结果是()。  

A、

Ilovemysql

B、

love

C、

mysql

D、

I love mysql

准确答案: A 我的答案:A

6【单选题】下列说法错误的是______。  

A、

SQL 步调用于触发器和存储过程中

B、

SELECT可以运算字符表达式

C、

游标只能序次移动

D、

SELECT中的输出列可以是由字段构成的表达式

准确答案: A 我的答案:B

答案剖析:

7【单选题】使用哪个下令可以从表的行中删除全部数据而不删除表自身?  

A、

ALTER TABLE

B、

DELETE FROM

C、

MODIFY

D、

DROP TABLE

准确答案: B 我的答案:B

答案剖析:

8【单选题】select * from student 该代码中的 * 号,表现的准确寄义是:  

A、

含糊查询

B、

错误信息

C、

平凡的字符*号

D、

全部的字段名

准确答案: D 我的答案:D

答案剖析:

9

【单选题】关于存储过程的说法,错误的是(   )。

A、

存储过程进步了实验服从

B、

它可作为一个独立的数据库对象并作为一个单元供用户在应用步调中调用

C、

存储过程方便用户批量实验SQL下令

D、

存储过程必须带参数,要么是输入参数,要么是输出参数

准确答案: D 我的答案:D

答案剖析:

10【单选题】建表语句中的 not null,该代码表现的寄义是:  

A、

答应空格

B、

非空束缚

C、

不答应写入数据

D、

不答应读取数据

准确答案: B 我的答案:B

11

【单选题】在数据库筹划中使用E-R图工具的阶段是(   )。

A、

概念结构筹划阶段

B、

需求分析阶段

C、

数据库物理筹划阶段

D、

数据库实验阶段

准确答案: A 我的答案:A

答案剖析:

12

【单选题】SELECT ROUND(45.953, -1) 的表现结果为(   )。

A、

50

B、

45.93

C、

46

D、

45.9

准确答案: A 我的答案:A

答案剖析:

13在Mysql的下令行中调用存储过程sp和函数fn的方法分别是( )。  

A、

SELECT sp(),CALL fn();

B、

CALL sp(),CALL fn();

C、

SELECT sp(),SELECT fn();

D、

CALL sp(),SELECT fn();

准确答案: D 我的答案:D

14【单选题】下列哪些语句对主键的阐明准确______  

A、

主键可重复

B、

主键不唯一

C、

主键用foreign key修饰

D、

在数据表中的唯一索引

准确答案: D 我的答案:D

答案剖析:

15

【单选题】以下聚合函数求匀称数的是(   )。

A、

COUNT

B、

SUM

C、

MAX

D、

AVG

准确答案: D 我的答案:D

答案剖析:

16【单选题】SQL是一种______语言。  

A、

高级算法

B、

函数型

C、

关系数据库

D、

人工智能

准确答案: C 我的答案:C

答案剖析:

17【单选题】创建视图的下令是( )  

A、

alter view

B、

create view

C、

create table

D、

alter table

准确答案: B 我的答案:B

18

【单选题】关于DATETIME与TIMESTAMP两种数据范例的形貌,错误的是(   )。

A、

TIMESTAMP可以主动记载当前日期时间

B、

两者值的范围不一样

C、

两者值的范围一样

D、

两者占用空间不一样

准确答案: C 我的答案:C

答案剖析:

19【单选题】下列关于表和视图的说法准确的是______  

A、

视图是表的一个镜像备份

B、

视图的数据全部在表中

C、

每个视图对应一个表

D、

对全部视图也可象表一样实验UPDATE使用

准确答案: B 我的答案:B

答案剖析:

20【单选题】下面哪一个语句可以使用子查询( )  

A、

UPDATE语句

B、

DELETE语句

C、

以上都是

D、

SELECT 语句

准确答案: C 我的答案:C

答案剖析:

21

【单选题】数据库筹划中的概念结构筹划的告急工具是(   )。

A、

数据模子

B、

概念模子

C、

E-R模子

D、

新奥尔良模子

准确答案: C 我的答案:C

答案剖析:

22

【单选题】为数据表创建索引的目的是(   )。

A、

创建唯一索引

B、

归类

C、

进步查询的检索性能

D、

创建主键

准确答案: C 我的答案:C

答案剖析:

23

【单选题】使用(   )语句可以删除触发器trig_Test。

A、

DROP trig_Test;

B、

DROP TRIGGER trig_Test;

C、

DROP * FROM trig_Test;

D、

DROP TRIGGER WHERE NAME=‘trig_Test’;

准确答案: B 我的答案:B

答案剖析:

24【单选题】在MySQL中,下面用于限定分组函数的返回值的子句是______。  

A、

ORDER BY

B、

无法限定分组函数的返回值

C、

HAVING

D、

WHERE

准确答案: C 我的答案:C

答案剖析:

25【单选题】触发器不是相应以下哪一语句而主动实验的Mysql语句______  

A、

delete

B、

update

C、

select

D、

insert

准确答案: C 我的答案:C

答案剖析:

26

【单选题】如果对于实体集A中的每一个实体,实体集B中有可有多个个实体与之接洽;反之,对于实体集B中的每一个实体,实体集A中也可有多个实体与之接洽。则称实体集A与B具有(   )。

A、

1:1接洽

B、

N:M接洽

C、

多种接洽

D、

1:N接洽

准确答案: B 我的答案:B

答案剖析:

27【单选题】CREATE,DROP,ALTER等下令属于下列哪类下令______  

A、

DML

B、

DCL

C、

DDL

D、

DQL

准确答案: C 我的答案:C

答案剖析:

28

【单选题】返回字符串长度的函数是(   )。

A、

length()

B、

long()

C、

left()

D、

len()

准确答案: A 我的答案:A

答案剖析:

29

【单选题】下列关于局部变量和用户变量的形貌中,错误的是 (   )。

A、

局部变量使用 DECLARE语句界说

B、

用户变量以 "@"开头,局部变量没有这个符号

C、

局部变量只在 BEGIN...END 语句块之间有效

D、

在存储函数中只能使用局部变量

准确答案: D 我的答案:A

答案剖析:

30【单选题】delete from employee语句的作用是( )  

A、

删除当前数据库中整个employee表,包罗表结构

B、

删除当前数据库中employee表内的全部行

C、

删除当前数据库中employee表内的当前行

D、

由于没有where子句,因此不删除任何数据

准确答案: B 我的答案:B

31【单选题】为数据表创建索引的目的是______  

A、

进步查询的检索性能

B、

归类

C、

创建唯一索引

D、

创建主键

准确答案: A 我的答案:A

答案剖析:

32【单选题】按照姓名升序序分列______  

A、

ORDER BY DESC NAME

B、

ORDER BY NAME DESC

C、

ORDER BY ?ASC NAME

D、

ORDER BY NAME ASC

准确答案: D 我的答案:D

答案剖析:

33

【单选题】MySQL数据库四种特性,不包罗(   )。

A、

原子性

B、

隔离性

C、

同等性

D、

事件性

准确答案: D 我的答案:D

答案剖析:

34【单选题】删除emp表中全部数据,且可以rollback,以下语句哪个下令可以实现( )  

A、

truncate table emp

B、

delete from emp

C、

drop table emp

D、

delete * from emp

准确答案: B 我的答案:B

35

【单选题】如果要回滚一个事件,则要使用(   )语句。

A、

commit

B、

revoke

C、

begin

D、

rollback

准确答案: D 我的答案:A

答案剖析:

36【单选题】查询出EMP表中1982年及以后入职的员工信息(注:字段hiredate为入职日期,数据范例为DATE型)  

A、

select * from emp where to_char(hiredate,'YYYYMMDD')>='19820101';

B、

select * from emp where hiredate>='19820101';

C、

select * from emp where to_date(hiredate,'YYYYMMDD')>='19820101';

D、

select * from emp where hiredate>=to_char('19820101','YYYYMMDD');

准确答案: B 我的答案:A

答案剖析:

37【单选题】存储过程是一组预先界说并______的Transact-SQL语句  

A、

编译

B、

生存

C、

编写

D、

表明

准确答案: A 我的答案:A

答案剖析:

38【单选题】向数据表中插入一条记任命以下哪一项______  

A、

INSERT

B、

SAVE

C、

CREATE

D、

UPDATE

准确答案: A 我的答案:A

答案剖析:

39【单选题】一张表的主键个数为______  

A、

至多1个

B、

没有限定

C、

至多3个

D、

至多2个

准确答案: A 我的答案:A

答案剖析:

40【单选题】进入要使用的数据库TEST用以下哪一项______  

A、

USE TEST

B、

SHOW TEST

C、

IN TEST

D、

USER TEST

准确答案: A 我的答案:A

答案剖析:

二、填空题 (题数:10,共 10.0 分)

41

[填空题]在 MySQL 中,创建视图须要使用create (   )语句。

准确答案

第一空:

view;

我的答案:

第一空:

view

答案剖析:

42

[填空题]MySQL 中提供了(   )关键字,该关键字可以判断两个字符串是否相匹配,通常用它来实现含糊查询。

准确答案

第一空:

like;

我的答案:

第一空:

like

答案剖析:

43

[填空题]在 MySQL 中,除了使用 CREATE OR REPLACE VIEW 语句修改视图外,还可以使用(   )语句来修改视图。

准确答案

第一空:

alter;

我的答案:

第一空:

ALTER VIEW

答案剖析:

44

[填空题]数据表中的字段默认值是通过(   )关键字界说的。

准确答案:

default;DEFAULT

45

[填空题]在 MySQL 的整数范例中,占用字节数最大的范例是(   )。

准确答案:

bigint;

46

[填空题]MySQL 是一种(   )(多用户、单用户)的数据库管理体系。

准确答案:多用户;

47

[填空题]在存储过程中,用于界说变量的关键字是(   )。

准确答案:

declare;

48

[填空题]MySQL 中用于实现事件提交的语句是(   )语句。

准确答案: commit;

答案剖析:

49

[填空题]MySQL 中的用户分为(   )用户和平凡用户。

准确答案:

root

50

[填空题]在 MySQL 中,除了使用 CREATE OR REPLACE VIEW 语句修改视图外,还可以使用(   )语句来修改视图。

准确答案:

alter;

三、简答题 (题数:1,共 40.0 分)

51

已知某图书管理数据库有如下表格:

用户表user、部分表dept、脚色表role、图书表book、图书分类表book_classify、图书借阅表book_borrow、还书表book_return、借阅预约表book_appoint、图书遗失表book_lose;

(1)用户表:包罗用户编号id、姓名user_name、出生日期birth_date、身份证号id_card

、帐号login_name、暗码password、手机号mobile、电子邮件email、部分编号dept_id、脚色编号role_id信息。

(2)部分表:包罗部分编号id、部分名称dept_name、部分创建时间create_date信息。

(3)脚色表:包罗脚色编号id、脚色名称role_name、备注信息remark。

(4)图书表:包罗图书编号id、册本名称book_name、作者author、定价price、有无光盘cd、出书社publish、图书分类编号book_classify_id、总数目account、图书ISBN编号isbn、图书创建时间create_time、备注信息remark。

(5)图书分类表:包罗编号id、图书分类名称book_classify_name、父分类编号father_id、创建时间create_time。

(6)图书借阅表:包罗编号id、图书编号book_id、用户编号user_id、借阅时间borrow_time、归还时间return_time、创建图书借阅状态create_time、备注信息remark。

(7)图书还书表:包罗编号id、图书借阅编号borrow_id、归还时间return_time、创建时间create_time、备注信息remark。

(8)借阅预约表:包罗预约流水编号id、图书编号book_id、用户编号user_id、预约时间appoint_time、创建时间create_time、备注信息remark。

(9)图书遗失表:包罗遗失流水编号id、图书借阅流水编号borrow_id、创建时间create_time、备注信息remark。

对于图书管理数据库,请写出准确的SQL语句:

1)查询作者为“刘刚”的图书的数目。

2)查询出书单元为人民邮电出书社的图书明细。

3)检索2024年3月的借阅图书的读者人数。

4)图书管理体系里须要新增一本刚采购的医药方面的册本:书名为《疑难杂病临证手册(第2版)》、作者为余孟学、定价为158元、出书社为河南科技出书社、ISBN编号为9787534989230。要把它添加到图书表book里,图书分类选择“R 医药、卫生”。

5)查询用户小影的借书记载,包罗用户姓名、借阅图书名称、出书社、借书时间、归还时间。

6)针对用户表user、图书表book、图书借阅表book_borrow创建一个用户借阅图书信息查询视图user_book_borrow_view,查询用户编号、登录名称、姓名、图书名称、出书社、借阅时间、归还时间。

7)按book_name字段创建图书索引。索引名为:booknameindex;

8)按publish,book_name字段创建图书表复合索引。索引名为:bookpublishnameindex ;

9)更新小刚用户的部分为运维部。

10)删除图书名称包罗:“经济学”的全部图书

11)删除用户小影的全部借书记载。

12)查询全部效户丢失的图书名称。

下面链接中放的是该题的数据库、根本表和初始数据,同砚们本身下载。

准确答案:

1)查询作者为“刘刚”的图书的数目。

SELECT COUNT(*) AS 数目  FROM `book`  WHERE `author`='刘刚'

2)查询出书单元为人民邮电出书社的图书明细。

SELECT `id`,`book_name`,`author`,`price`,`cd`,`publish`,`book_classify_id`,`account`,`isbn`,`create_time`,`remark` FROM `book` WHERE `publish`='人民邮电出书社';

3)检索2024年3月的借阅图书的读者人数。

SELECT COUNT( DISTINCT `user_id`) FROM `book_borrow`

WHERE YEAR(`borrow_time`)='2024' AND MONTH(`borrow_time`)='3';

4)图书管理体系里须要新增一本刚采购的医药方面的册本:书名为《疑难杂病临证手册(第2版)》、作者为余孟学、定价为158元、出书社为河南科技出书社、ISBN编号为9787534989230。要把它添加到图书表book里,图书分类选择“R 医药、卫生”。

INSERT INTO`book`VALUES('5','疑难杂病临证手册(第2版)','余孟学','158','1','河南科技出书社','4','1000','9787534989230',NOW(),NULL);

5)查询用户小影的借书记载,包罗用户姓名、借阅图书名称、出书社、借书时间、归还时间。

SELECT u.user_name,b.book_name,b.publish,w.borrow_time,w.return_time FROM USER u, book b, book_borrow w WHERE w.book_id = b.id AND w.user_id = u.id AND u.login_name = '小影';

6)针对用户表user、图书表book、图书借阅表book_borrow创建一个用户借阅图书信息查询视图user_book_borrow_view,查询用户编号、登录名称、姓名、图书名称、出书社、借阅时间、归还时间。

CREATE OR REPLACE VIEW user_book_borrow_view

AS

SELECT u.id,u.login_name,u.user_name,b.book_name,b.publish,w.borrow_time,w.return_time

FROM USER u, book b, book_borrow w

WHERE w.book_id = b.id AND w.user_id = u.id ;

7)按book_name字段创建图书索引。索引名为:booknameindex;

CREATE INDEX booknameindex ON  `book`(`book_name`)

8)按publish,book_name字段创建图书表复合索引。索引名为:bookpublishnameindex ;

CREATE INDEX bookpublishnameindex ON  `book`(`publish`,`book_name`)

9)更新小刚用户的部分为运维部。

UPDATE `user` SET `dept_id`=(SELECT `id` FROM `dept` WHERE `dept_name`='运维部')

WHERE `user_name`='小刚'

10)删除图书名称包罗:“经济学”的全部图书

delete from `book` where `book_name` like '%经济学%'

11)删除用户小影的全部借书记载。

DELETE FROM `book_borrow` WHERE`user_id`=(SELECT `id` FROM `user` WHERE `user_name`='小影')

12)查询全部效户丢失的图书名称。

SELECT `user_name`,`book_name` FROM `book`,`book_borrow`,`user`,`book_lose`

WHERE `book_lose`.`borrow_id`=`book_borrow`.`id` AND `book_borrow`.`user_id`=`user`.id AND `book_borrow`.`book_id`=`book`.`id`

四、使用题 (题数:1,共 30.0 分)

52

按照要求实现员工管理数据库体系中的指定使用:

1、创建一个数据库 staff,并在数据库中创建以下四张表:

员工表 employee(员工编号id,姓名userName,出生日期birthDate,身份证号idCard,登录名称loginName,登录暗码password,手机号mobile,电子邮件email,部分编号deptId,员工级别level,员工头像avatar,备注remark)

部分表 dept(部分编号id,部分名称deptName,部分司理编号managerId)

工资表payroll(工资编号id,员工编号empId,根本工资baseSalary,应发工资actualSalary,奖金bonus,缺勤扣钱deductMoney,薪资发放日期grantDate)

告假表ask_leave(告假编号id,员工编号empId,告假缘故起因leaveReason,告假开始时间beginDate,告假竣事时间endDate,提交时间submitDate,考核人编号auditId(该列有触发器维护),申请状态status,考核意见auditOpinion)

底子数据本身填写。

2、编写存储过程实现插入员工表:参数为:员工编号id,姓名userName,出生日期birthDate,身份证号idCard,登录名称loginName,登录暗码password,手机号mobile,电子邮件email,部分编号deptId,员工级别level,员工头像avatar,备注remark。

存储过程名称为:insert_employee。

3、使用存储过程在员工表中插入5条记载。

4、创建触发器,当插入或修改工资表payroll时,应发工资主动为“根本工资+奖金-缺勤扣钱”。

5、在员工表中依据姓名userName创建索引。索引名为:index_userName。

6、创建员工部分工资视图(包罗员工名称,部分名称,根本工资,应发工资,奖金,缺勤扣钱)视图名称:v_employee_dept_payroll。

7、使用触发器实现插入告假信息时,考核人编号主动填入告假人地点部分的部分司理编号。触发器名称为:insert_ask_leave。

8、备份数据库的结构和数据,导出SQL文件名为:staff_sjk.sql。

9、将staff_sjk.sql上传至服务器

(30.0分)

准确答案

CREATE DATABASE staff;

USE staff

CREATE TABLE employee(

id INT NOT NULL AUTO_INCREMENT,

userName VARCHAR(255),

birthDate DATE,

idCard VARCHAR(255),

loginName VARCHAR(255),

PASSWORD VARCHAR(255),

mobile VARCHAR(255),

email VARCHAR(255),

deptId INT,

LEVEL INT,

avatar BLOB,

remark TEXT,

PRIMARY KEY(id)

);

CREATE TABLE dept(

id INT NOT NULL AUTO_INCREMENT,

deptName VARCHAR(255),

manageId INT,

remark VARCHAR(255),

PRIMARY KEY(id)

);

CREATE TABLE payroll(

id INT NOT NULL AUTO_INCREMENT,

empId INT,

baseSalary DOUBLE,

actualSalary DOUBLE,

bonus DOUBLE,

deductMoney DOUBLE,

grantDate DATE,

PRIMARY KEY(id)

);

CREATE TABLE ask_leave(

id INT NOT NULL AUTO_INCREMENT,

empId INT,

leaveReason TEXT,

beginDate DATE,

endDate DATE,

submitDate DATE,

auditId INT,

STATUS INT,

auditOpinion TEXT,

PRIMARY KEY(id)

);

其他答案略

我的答案

CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_employee`(

IN `id` int,

IN `username` varchar(225),

IN `birthDate` date,

IN `idCard` varchar(225),

IN `loginName` varchar(225),

IN `password` varchar(225),

IN `mobile` varchar(225),

IN `email` varchar(225),

IN `deptId` int,

IN `level` int,

IN `avatar` blob,

IN `remark` text

)

BEGIN

DECLARE cnt INT;

SELECT COUNT(*) INTO cnt FROM employee WHERE employee.id = id;

IF cnt = 0 THEN

INSERT INTO employee(`id`,`username`,`birthDate`,`idCard`,`loginName`,`password`,`mobile`,`email`,`deptId`,`level`,`avatar`,`remark` )

VALUES(`id`,`username`,`birthDate`,`idCard`,`loginName`,`password`,`mobile`,`email`,`deptId`,`level`,`avatar`,`remark`);

END IF;

END

call insert_employee(1,'小红','2002-03-14','411423200203141510','xiaohong','123','15238790678','1625376859@qq.com',3,1,NULL,'新员工');

call insert_employee(2,'小橙','2002-02-14','411423200203241511','xiaocheng','123','15238790677','1625376858@qq.com',2,2,NULL,'新员工');

call insert_employee(3,'小黄','2002-01-14','411423200203341512','xiaohuang','123','15238790676','1625376857@qq.com',1,4,NULL,'老员工');

call insert_employee(4,'小绿','2001-12-14','411423200112141513','xiaolv','123','15238790675','1625376856@qq.com',2,5,NULL,'老员工');

call insert_employee(5,'小青','2001-11-14','411423200111141514','xiaoqing','123','15238790674','1625376855@qq.com',3,6,NULL,'老员工');

CREATE DEFINER = `root`@`localhost` TRIGGER `update_payroll` BEFORE UPDATE ON `payroll` FOR EACH ROW SET new.actualSalary = new.baseSalary + new.bonus - new.deductMoney;

CREATE INDEX index_userName ON employee(username);

CREATE VIEW v_employee_dept_payroll AS

SELECT username AS 姓名,deptName AS 部分名称,baseSalary AS 根本工资,actualSalary AS 应发工资,bonus AS 奖金,deductMoney AS 缺勤扣钱

FROM employee,dept,payroll

WHERE employee.id = payroll.empId AND employee.deptId = dept.id;

CREATE DEFINER = `root`@`localhost` TRIGGER `insert_ask_leave` BEFORE INSERT ON `ask_leave` FOR EACH ROW SET new.auditId = (SELECT manageId FROM employee,dept WHERE employee.deptid = dept.id AND new.empid = employee.id);


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表