数据库存储过程练习附答案
oracle-存储过程练习题

1.创建用户kaifa (密码亦为kaifa)并分配connect,create table,resource 权限。
tCREATE user KAIFA IDENTIFIED BY KAIFA DEFAULT TABLESPACE HOSDATATEMPOARY TABLESPACE TEMPDATA;GRANT CONNECT . CREATE TABLE • RESOURCE TO KAIFA2.在做报表统计时,需要根据报表日期和币种从概要表中查询本期余额。
其中币种代码如下:--RMB 人民币--CNY 本位币—USD 外币折美元如果币种为RMB,则取出人民币余额作为本期余额;为CNY,则取本位币余额;为USD 则取外币折美元余额。
请编写一个函数GetCurrBal (qrp.rq IN VARCHAR2. ―报表日期qrp_code IN VARCHAR2 —币种)CREATE OR REPLACE FUNCTION GetCurrBal(Vqrp_rq Date •—报表日期Vqrp.code VARCHAR2 一币种)RETURN NUMBERISVAMOUNT NUMBER :'DATE Date;BEGINSELECT ACCOUNTING.DATE INTO VDATE FROM CCB_GYBWhere ACCOUNTING_DATE = Vqrp_rq;IF Vqrp_code = 'RMB* THENSELECT RMB_YTD_BA1-ANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqip_code二r RMB*AND ACCOUNTING_DATE- VDATE;ELSEIF Vqrp.code = 'CNT THENSELECT CNY_YTD_BALANCII INTO VAMOUNT FROM CCB_GYB WHERE Vqip_code二'CNY';ELSESELECT USD_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code-END IF :END IF ;COMMIT;RETURN VAMOUNT;END;■一对多行处理.用游标一-多单行处理,用SELECT实现此功能,并能在sqlplus里调用。
SQL存储过程实例(练习和答案)

题目 1
1、学校图书馆借书信息管理系统建立三个表:
学生信息表:student
3)查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期;参考查
询结果如下图所示:
4)查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所示:
题目2
程序员工资表:ProWage
创建一个存储过程,对程序员的工资进行分析,月薪1500到10000不等,如果有百分之五十的人薪水不到2000元,给所有人加薪,每次加100,再进行分析,直到有一半以上的人大于2000元为
止,存储过程执行完后,最终加了多少钱?
元之
,3500,
题目3:
1) 查询各个学生语文、数学、英语、历史课程成绩,例如下表:
2)查询四门课中成绩低于70分的学生及相对应课程名和成绩。
3)统计各个学生参加考试课程的平均分,且按平均分数由高到底排序。
4)创建存储过程,分别查询参加1、2、3、4门考试及没有参加考试的学生名单,要求显示姓名、
学号。
数据库期末考试试题及答案

数据库期末考试试题及答案一、名词解释(每小题2分,共10分)1. 数据库(Database)2. 数据模型(Data Model)3. 表(Table)4. 字段(Field)5. 记录(Record)6. 主键(Primary Key)7. 外键(Foreign Key)8. 索引(Index)9. 视图(View)10. 存储过程(Stored Procedure)二、选择题(每小题2分,共20分)1. 下列哪个是关系型数据库管理系统?A. OracleB. MyBatisC. MongoDBD. Redis2. 在数据库中,哪个字段用于唯一标识一条记录?A. 字段名B. 数据类型C. 主键D. 索引3. 以下哪个不属于数据库的基本操作?A. 插入B. 删除C. 修改D. 格式化4. 下列哪个SQL语句用于创建表?A. SELECTB. INSERTC. CREATE TABLED. UPDATE5. 在SQL中,哪个关键字用于删除表?A. DROP TABLEB. DELETEC. ALTER TABLED. TRUNCATE TABLE6. 下列哪个SQL语句用于查询所有字段?A. SELECT FROM table_nameB. SELECT table_name FROMC. SELECT FROM table_nameD. SELECT table_name7. 以下哪个函数用于计算两个日期之间的差值?A. DATEDIFFB. TIMESTAMPDIFFC. DATE_ADDD. DATE_SUB8. 下列哪个SQL语句用于修改表的结构?A. MODIFY TABLEB. ALTER TABLEC. CHANGE TABLED. RENAME TABLE9. 下列哪个关键字用于创建外键约束?A. FOREIGN KEYB. CONSTRAINTC. PRIMARY KEYD. INDEX10. 以下哪个存储过程用于备份数据库?A. BACKUP DATABASEB. RESTORE DATABASEC. CREATE DATABASED. DROP DATABASE三、填空题(每小题2分,共20分)1. 在SQL中,用于插入数据的语句是______。
储存过程(答案)

单选题
1、将具有特定功能的一段SQL语句(多于一条)在数据库服务器上进行预先定义并编译,以
供应用程序调用,该段SQL程序可被定义为(D)
A、事物
B、触发器
C、视图
D、存储过程
2、以下对存储过程的叙述中,不正确的是(C)
A、存储过程可以定义变量
B、存储过程是一组为了完成特定功能的SQL语句组成的程序
C、存储过程不能嵌套调用
D、存储过程可以一次编译,多次执行
3、关于存储过程说法错误的是(C)
A、方便用户完成某些功能
B、用户存储过程方便用户批量执行T-SQL命令
C、用户存储过程不能调用系统存储过程
D、应用程序可以调用用户存储过程
4、存储过程的修改不能采用(D)。
A、界面方式修改命令方式创建的存储过程
B、ALTER PROCEDURE
C、先删除再创建
D、C REATE PROCEDURE
5、关于存储过程的描述正确的一项是(C)。
A、存储过程存在于内存中,每次重新启动DBMS时,便,会自动消失
B、存储过程在每次调用时都会被编译-次
C、存储过程可以包含输入和输出参数,增加了调用时的灵活性
D.执行一次存储过程所花的时间,比执行相同的SQL批处理要长
判断题
6、存储过程未存在服务器注册(错)
7、相较于用户自定义存储过程,系统存储过程更加的自由(错)
8、用户定义的存储过程是指由数据库管理系统所提供的存储过程(错)
9、存储过程可以带参数,从而增加调用灵活性(对)
10、存储过程一旦创建,其脚本就被加密,不能再次编辑修改(错)。
SQL存储过程试题及答案

--写存储过程及调用存储过程/*1.写出创建分数存储过程用于计算某门课程成绩最高分、最低分、平均分,参数课程号。
*/--2.写出统计某门课选人数的存储过程,输入参数课程号,输出参数人数。
/*3.创建存储过程,要求根据学生姓名查看学生的籍贯.(要求:在存储过程里定义两个参数,第一个接收由调用程序指定的输入值(学生姓名),第二个参数用于将该值返回调用程序)*//*4.程序员工资表:ProWage字段名称数据类型说明ID int 自动编号,主键PName Char(10) 程序员姓名Wage int 工资创建一个存储过程,对程序员的工资进行分析,月薪1500到10000不等,如果有百分之五十的人薪水不到2000元,给所有人加薪,每次加100,再进行分析,直到有一半以上的人大于2000元为止,存储过程执行完后,最终加了多少钱?例如:如果有百分之五十的人薪水不到2000,给所有人加薪,每次加100元,直到有一半以上的人工资大于2000元,调用存储过程后的结果如图:请编写T-SQL来实现如下功能:查询是否有一半程序员的工资在2200、3000、3500、4000、5000或6000元之上,如果不到分别每次给每个程序员加薪100元,至之一半程序员的工资达到2200,3000,3500,4000,5000或6000元。
/*5.编写一个存储过程PR_GET_PASS_RA TE统计某门课程的及格率,其传入参数是课程号P_CNO,传出参数是该课程成绩的及格率P_PASSRATE,及格率的格式形如:86.56%。
6.创建触发器T_1,功能是当向数据表学生添加记录时,显示学生的信息。
create trigger T_1 on 学生after insertas select * from 学生insert into 学生values('3001','李四','男','计本10')7.创建触发器T_2,功能是当向数据表班级添加、修改和删除记录时,显示学生的信息。
MySQL数据库技术及应用 课后习题答案 (5)[3页]
![MySQL数据库技术及应用 课后习题答案 (5)[3页]](https://img.taocdn.com/s3/m/66de8665326c1eb91a37f111f18583d049640f85.png)
项目5一、选择题1、C2、B3、D4、A5、C6、A7、B8、C9、B10、D二、填空题1、系统变量用户变量局部变量2、BEGIN…END3、DELIMITER4、FOR EEACH ROW5、自动事务手动事务6、START TRANSACTION COMMIT三、判断题1、对2、对3、对4、错5、对6、对四、简答题1、答:存储过程具有如下优点:(1)模块化编程,代码可复用性好。
(2)具有更快的执行速度。
(3)减少网络通信量。
(4)增强系统的安全性。
存储过程与存储函数的区别如下4点:(1)语法中实现的标识符不同,存储过程使用PROCEDURE,函数为FUNCTION。
(2)存储过程在创建时没有返回值,而函数在定义时必须设置返回值。
(3)存储过程没有返回值类型,且不能将结果直接赋值给变量;而函数定义时需要设置返回值类型,且在调用时除在SELECT中,必须将返回值赋给变量。
(4)存储过程必须通过CALL进行调用,不能使用SELECT调用;而函数则可在SELECT 语句中直接使用。
2、答:游标的作用:游标提供了一种对SELECT语句结果集进行访问的机制。
可以将游标理解为一个在结果集中可以逐行移动的指针,它指向结果集中的某一行,用户可以用SQL 语句逐一从游标中获取记录,从而有选择地按行进行操作,而不是只能对整个结果集进行操作。
游标的使用主要包括声明游标、打开游标、移动游标指针并从游标结果集中读取数据和关闭游标4个步骤。
3、答:触发器是一种特殊的存储过程,主要用于保证数据的完整性和强制使用业务规则。
触发器具有以下优点:(1)触发器可以实现对数据库中的相关表的级联操作;(2)触发器可以用来定义比CHECK约束更复杂的限制;(3)触发器可以用来定义错误信息;(4)触发器可以用来实现更精细和更复杂的数据操作。
4、答:根据激活触发器时机的不同,MySQL触发器可以分为BEFORE触发器和AFTER 触发器两种类型。
SQL存储过程实例练习(答案)

SQL存储过程实例练习(答案)这篇是为了放的⼩练习答案1、写⼀个存储过程,该存储过程在给定CustomerID的参数下能返回Northwind数据库中的Customer记录。
2、写⼀个存储过程,该存储过程接受Territory ID、 Territory Description 和Region ID为参数,并且将它们作为新⾏插⼊到Northwind数据库中的Territories表中去。
3、修改练习2中的存储过程,并在插⼊前预先检查外键(RegionID)的存在。
如果RegionID不存在,则抛出⼀个含有错误消息为“RegionID is not valid。
Please check your RegionID and try again”的错误。
4、修改练习2中的存储过程,使之处理不存在RegionID时的异常。
捕获所有其他类型错误并提供通⽤的错误消息“An unhandledexception has occurred. Contact your system administration”。
/*1、写⼀个存储过程,该存储过程在给定CustomerID的参数下能返回Northwind数据库中的Customer记录。
*/GOUSE NorthwindGOCREATE PROC P_GetCustomerByID@CustomerID NCHAR(5)ASSELECT*FROM dbo.Customers WHERE CustomerID=@CustomerIDGO--EXEC P_GetCustomerByID 'ALFKI'/*2、写⼀个存储过程,该存储过程接受Territory ID、 Territory Description 和Region ID为参数,并且将它们作为新⾏插⼊到Northwind数据库中的Territories表中去。
*/GOUSE NorthwindGOCREATE PROC p_InsertTerritories@TerritoryID NVARCHAR(20),@TerritoryDescription NCHAR(50),@RegionID intASBEGININSERT INTO Territories(TerritoryID,TerritoryDescription,RegionID)VALUES(@TerritoryID,@TerritoryDescription,@RegionID)END--EXEC p_InsertTerritories '','',1/*3、修改练习2中的存储过程,并在插⼊前预先检查外键(RegionID)的存在。
【精选】第6章_存储过程与触发器练习题

有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值与教师职称有关。
实现这个约束的可行方案是( )。
A 在教师表上定义一个视图B 在教师表上定义一个存储过程C 在教师表上定义插入和修改操作的触发器D 在教师表上定义一个标量函数参考答案C在SQL SERVER中,执行带参数的过程,正确的方法为()。
A 过程名参数B 过程名(参数)C 过程名=参数D ABC均可参考答案A在SQL SERVER服务器上,存储过程是一组预先定义并()的Transact-SQL 语句。
A 保存B 解释C 编译D 编写参考答案C在SQL Server中,触发器不具有()类型。
A INSERT触发器B UPDATE触发器C DELETE触发器D SELECT触发器参考答案D()允许用户定义一组操作,这些操作通过对指定的表进行删除、插入和更新命令来执行或触发。
A 存储过程B 规则C 触发器D 索引参考答案C为了使用输出参数,需要在CREATE PROCEDURE语句中指定关键字( )。
A OPTIONB OUTPUTC CHECKD DEFAULT参考答案B下列( )语句用于创建触发器。
A CREATE PROCEDUREB CREATE TRIGGERC ALTER TRIGGERD DROP TRIGGER参考答案B下列( )语句用于删除触发器。
A CREATE PROCEDUREB CREATE TRIGGERC ALTER TRIGGERD DROP TRIGGER参考答案D下列( )语句用于删除存储过程。
A CREATE PROCEDUREB CREATE TABLEC DROP PROCEDURED 其他参考答案C下列( )语句用于创建存储过程。
A CREATE PROCEDUREB CREATE TABLEC DROP PROCEDURED 其他参考答案Asp_help属于哪一种存储过程()?A 系统存储过程B 用户定义存储过程C 扩展存储过程D 其他参考答案A以下语句创建的触发器是当对表A进行()操作时触发。
数据库存储过程练习附答案

存储过程、触发器练习1、在学生选课数据库中,创建一存储过程deptmale,查询指定系的男生人数,其中系为输入参数,人数为输出参数。
create proc p_dept@dept char(20),@mannum int outputasselect @allcre=count(sno) from studentwhere sdept=@dept and ssex='男'declare @num intexec p_dept '计算机系',@num outputprint @num2、在s_c数据库中,创建一个存储过程totalcredit,根据输入的学生姓名,计算其总学分。
(使用输出参数)。
并执行该存储过程。
create proc p_cou@name char(10),@allcre int outputasselect @allcre=sum(ccredit)from student,course,scwhere student.sno=sc.sno and o=oand sname=@name group by sc.snodeclare @asum intexec p_cou '刘晨',@asum outputprint @asum3、创建一更新触发器upd_grade,设置sc表的grade字段不能被更新,并显示信息“学生成绩不能被修改,请与教务处联系”。
CREATE TRIGGER mes_scON scFOR UPDATEASIF UPDATE(grade)BEGINROLLBACK TRANPRINT '学生成绩不能被修改,请与教务处联系'END4、创建一个insert触发器uninsertstu,当在student表中插入一条新纪录时,如果是“计算机系”的学生,则撤销该插入操作,并返回“此系人数已满,不能再添加”信息。
数据库入门PLSQL存储过程等题库

第一阶段Q.编写一个PL/SQL程序块以显示所给出雇员编号的雇员的详细信息。
A.DECLAREerec emp%ROWTYPE;BEGINSELECT * INTO erec FROM emp WHERE empno=&雇员编号;DBMS_OUTPUT.PUT_LINE('EmpNo' || ' ' || 'Ename' || ' '|| 'Job' || ' ' || 'Manager' || ' ' || 'HireDate' || ' ' || 'Salary' || ' ' || 'Commision' || ' ' || 'DeptNo');DBMS_OUTPUT.PUT_LINE(erec.ename || ' ' || erec.job || ' ' || erec.mgr || ' ' ||erec.hiredate || ' ' || erec.sal || ' ' || m || ' ' || erec.deptno);END;/Q.编写一个PL/SQL程序块以计算某个雇员的年度薪水总额。
A.DECLAREesal NUMBER;eename emp.ename%TYPE;BEGINSELECT (NVL(sal,0)+NVL(comm,0))*12,ename INTO esal,eename FROM emp WHERE empno=&雇员编号;DBMS_OUTPUT.PUT_LINE(eename || '''s Years Salary is ' || esal);END;/Q.按下列加薪比执行:Deptno Raise(%age)10 5%20 10%30 15%40 20%加薪的百分比是以他们现有的薪水为根据的。
存储过程与触发器概念及应用考试

存储过程与触发器概念及应用考试(答案见尾页)一、选择题1. 存储过程是什么?A. 一种数据库对象,用于存储逻辑操作B. 一种数据库对象,用于存储查询语句C. 一种数据库对象,用于存储流程控制语句D. 一种数据库对象,用于存储数据2. 触发器的作用是什么?A. 在数据库中插入、更新或删除数据前自动执行的程序B. 在数据库中创建、修改或删除表C. 用于数据完整性约束D. 用于权限管理3. 存储过程和触发器都存放在以下哪个对象中?A. 数据库B. 表C. 索引D. 视图4. 存储过程可以通过哪种方式调用?A. SQL语句B. 外部程序调用C. 内部程序调用D. 以上都是5. 触发器的类型有哪几种?A. INSERT触发器B. UPDATE触发器C. DELETE触发器D. ALL触发器6. 触发器的工作原理是在哪个事件发生时执行?A. 数据库打开时B. 数据库关闭时C. 数据被插入、更新或删除时D. 用户登录时7. 如何创建一个存储过程?A. 使用CREATE PROCEDURE语句B. 使用CREATE TABLE语句C. 使用ALTER TABLE语句D. 使用CREATE INDEX语句8. 触发器中的IF语句用于做什么?A. 进行条件判断B. 控制触发器的执行流程C. 计算数据D. 存储数据9. 在触发器中,哪个关键字表示不执行任何操作?A. ALLB. EXCEPTIONC. THEND. ELSE10. 触发器的执行顺序是怎样的?A. 从内到外,从上到下B. 从内到外,从下到上C. 从外到内,从上到下D. 从外到内,从下到上11. 触发器的功能是什么?A. 处理数据库中的数据完整性问题B. 执行数据库中的批量操作C. 监控数据库中的数据变化,并在特定事件发生时自动执行操作D. 管理数据库中的用户权限12. 存储过程与触发器都是数据库对象,它们的主要区别是什么?A. 存储过程用于存储查询结果,而触发器用于执行操作B. 存储过程可以有输入参数,而触发器不能C. 存储过程是预编译的,可以提高数据库性能,而触发器是运行时执行的D. 触发器只能由用户触发,而存储过程可以由任何具有权限的用户调用13. 下列哪个不是存储过程的特点?A. 可以接收参数B. 可以有多个输出参数C. 只能在数据库内部执行D. 可以直接修改数据库中的数据14. 触发器通常与哪个对象相关联?A. 数据库表B. 数据库视图C. 数据库索引D. 数据库存储过程15. 在MySQL中,触发器的类型有哪些?A. INSERT触发器B. UPDATE触发器C. DELETE触发器D. SELECT触发器16. 触发器的工作原理是什么?A. 当对触发器关联的数据表进行指定类型的操作时,触发器自动执行预定义的操作B. 当数据库服务器启动时,触发器自动执行C. 当有新的连接连接到数据库时,触发器自动执行D. 当有用户登录到数据库时,触发器自动执行17. 如何在MySQL中创建一个存储过程?A. 使用CREATE PROCEDURE语句B. 使用CREATE FUNCTION语句C. 使用ALTER PROCEDURE语句D. 使用ALTER FUNCTION语句18. 触发器中可以使用哪些类型的条件判断?A. IF...ELSE语句B. CASE语句C. THEN...ELSE语句D. ALL...IN语句19. 触发器可以分为几种类型?(多选)A. INSERT触发器B. UPDATE触发器C. DELETE触发器D. SELECT触发器20. 存储过程和触发器都存放在哪种类型的数据库对象中?A. 表B. 序列C. 索引D. 视图21. 存储过程的类型有哪几种?A. 标准存储过程B. 用户定义存储过程C. 扩展存储过程D. 内置存储过程22. 下列哪个不是存储过程中的控制结构?A. IF...ELSEB. WHILEC. CASED. GOTO23. 触发器在什么情况下会被触发?A. 当表被添加或修改时B. 当数据库连接打开时C. 当用户登录时D. 当执行特定SQL语句时24. 如何使用存储过程?A. 使用CREATE PROCEDURE语句创建存储过程B. 使用ALTER PROCEDURE语句修改存储过程C. 使用DROP PROCEDURE语句删除存储过程D. 以上都是25. 触发器的主要优点是什么?A. 提高数据库性能B. 减少数据库维护成本C. 增加数据库安全性D. 以上都是26. 触发器的主要缺点是什么?A. 可能导致数据库性能下降B. 可能导致数据库死锁C. 可能导致数据库崩溃D. 可能导致数据库锁定二、问答题1. 什么是存储过程?请简述其特点。
数据库练习题库(含答案)

数据库练习题库(含答案)一、单选题(共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.联机分析处理包括以下()基本分析功能。
数据库系统原理练习题(附参考答案)

数据库系统原理练习题(附参考答案)一、单选题(共100题,每题1分,共100分)1.在SELECT语句的语法结构中,【】用于对查询的结果进行排序。
A、ORDER BY子句B、WHERE子句C、GROUP BY子句D、HAVING子句正确答案:A2.将符合要求的初始数据装载到数据库中去是指A、数据库维护B、数据库试运行C、应用程序设计D、加载数据正确答案:D3.下列关于存储函数与存储过程的说法中,错误的是A、存储过程可以拥有输出参数B、可以直接对存储函数进行调用,且不需要使用CALL语句C、存储过程中必须包含一条RETURN语句D、对存储过程的调用,需要使用CALL语句正确答案:C4.能唯一标识该关系的元组的属性称为该关系的A、超键B、分量C、码D、超码正确答案:C5.下列关于MySQL中的常量的说法中,错误的是A、常量是指在程序运行过程中值不变的量B、常量的使用格式取决于值的数据类型C、字符串常量是指用单引号或双引号括起来的字符序列D、一个十六进制值通常指定为一个字符串常量,每对十六进制数字被转换为一个字符,其最前面有一个大写字母“O”或小写字母“o”正确答案:D6.在数据定义语言包括的SQL语句中,用于对数据库或数据库对象进行修改的是【】A、CREATEB、ALTERC、DROPD、UPDATE正确答案:B7.在关系的一个码中移去某个属性,它仍然是这个关系的码,这样的码称为A、主属性B、全码C、外码D、超码正确答案:D8.下列关于数据库外模式的说法,正确的是A、外模式不能重叠B、不可被多个应用程序所共享C、一个外模式可以只为一个应用程序使用D、一个数据库只能有一个外模式正确答案:C9.下列关于索引的说法中,错误的是A、索引文件需要占用磁盘空间B、创建的索引越多越好C、DBMS会将一个表的所有索引保存在同一个索引文件中D、创建索引能够提高数据文件的访问效率正确答案:B10.下列不属于数据库系统三级模式结构的是A、外模式B、内模式C、模式D、数据模式正确答案:D11.下列关于SQL的说法中,错误的是A、SQL不是某个特定数据库供应商专有的语言B、掌握SQL可以帮助用户与几乎所有的关系数据库进行交互C、SQL 简单易学D、SQL 语句区分大小写正确答案:D12.属于行为设计阶段的是A、逻辑设计B、概念设计C、功能设计D、物理设计正确答案:C13.下列不属于数据库的建立和维护功能的是A、数据库的性能监视B、数据库空间的维护C、数据定义D、数据库的分析正确答案:C14.下列关于数据控制语言的说法中,错误的是A、GRANT语句用于授予权限B、REVOKE语句用于收回权限C、数据控制语言主要用于数据执行流程管理D、数据控制语言包括的主要SQL语句是GRANT和REVOKE 正确答案:C15.下列属于新一代数据库系统的是A、面向对象数据库系统B、关系数据库系统C、层次数据库系统D、网状数据库系统正确答案:A16.DBMS提供【】来严格地定义模式。
数据库练习题(标准标准答案)

数据库练习题(标准标准答案)第四章练习题一、选择题1、设有两个关系R(A,B)和S(B,C),与下列SELECT语句SELECT A,B FROM RWHERE B NOT IN(SELECT B FROM S WHERE C='C56');等价地关系代数表达式是 [ C]A.πA,B(σC≠'C56'(R?S))B.πA,B(R ? S)C≠'C56' C.R-πA,B(σC= 'C56'(R?S))D.R-πA,B (σC≠'C56'(R?S))2、嵌入式SQL地预处理方式,是指[ B]A.识别出SQL语句,加上前缀标识和结束标志B.把嵌入地SQL语句处理成函数调用形式C.对源程序进行格式化处理D.把嵌入地SQL语句编译成目标程序3、SQL中,“DELETE FROM 表名”表示 [ A]A.从基本表中删除所有元组B.从基本表中删除所有属性C.从数据库中撤消这个基本表D.从基本表中删除重复元组4、SQL中,聚合函数COUNT(列名)用于[ C]A.计算元组个数B.计算属性地个数C.对一列中地非空值计算个数D.对一列中地非空值和空值计算个数5、在传统SQL技术中,使用“ORDER BY”子句地SELECT语句查询地结果,实际上为 [B]A.数组 B.列表 C.包 D.集合6、在数据库中,能提高查询速度地是(C )A. 数据依赖B. 视图C. 索引D. 数据压缩7、语句 delete from sc 表明( A )A. 删除sc中地全部记录B. 删除基本表scC. 删除基本表sc中地列数据D. 删除基本表sc中地部分行8、在DB应用中,一般一条SQL 语句可产生或处理一组记录,而DB主语言语句一般一次只能处理一条记录,其协调可通过( B )实现.A. 指针B. 游标C. 数组D. 栈9、在下列基本表地定义中,数值5表示( C )CREATE TABLE student (Sno char(5) not null unique,Sname char(2));A. 表中有5条记录B. 表中有5列C. 表中字符串Sno 地长度D. 表格地大小10、在视图上不能完成地操作是( C )A. 更新视图B. 查询C. 在视图上定义新地基本表D. 在视图上定义新视图11、下列聚合函数中不忽略空值 (null) 地是(C)A、SUM (列名)B、MAX (列名)C、COUNT ( * )D、AVG (列名)12、SQL地查询语句地where子句中,对空值地操作,不正确地是( C )A、where AGE IS NULLB、whereAGE IS NOT NULLC、whereAGE = NULLD、where NOT (AGE IS NULL)13、Transact-SQL对标准SQL地扩展主要表现为( A ).A. 加入了程序控制结构和变量B. 加入了建库和建表语句C. 提供了分组(Group By)查询功能D. 提供了Min、Max待统计函数14、以下哪种情况应尽量创建索引( A ).A.在Where子句中出现频率较高地列B.具有很多NULL值地列C.记录较少地基本表D.需要更新频繁地基本表15、下列SQL Server语句中出现语法错误地是( D ).A.DECLARE @Myvar INTB.SELECT * FROM [AAA]C.CREATE DATABASE AAAD.DELETE * FROM AAA16、属于事务控制地语句是( A ).A. Begin Tran、Commit、RollBackB. Begin、Continue、EndC. Create Tran、Commit、RollBackD. Begin Tran、Continue、End17、在SQL语言地SELECT语句中,实现投影操作地是哪个子句?(A )A)selectB)fromC)where D)grou by18、用二维表结构表示实体以及实体间联系地数据模型称为(C )A)网状模型 B)层次模型 C)关系模型 D)面向对象模型第(19)至(21)题是基于如下两个关系,其中雇员信息表关系EMP地主键是雇员号,部门信息表关系DEPT地主键是部门号EMP DEPT19、若执行下面列出地操作,哪个操作不能成功执行?(D )A) 从EMP中删除行(‘010’,‘王宏达’,‘01’,1200)B)在EMP中插入行(‘102’,‘赵敏’,‘01’,1500)C) 将EMP中雇员号=‘056’地工资改为1600元D) 将EMP中雇员号=‘101’地部门号改为‘05’20、若执行下面列出地操作,哪个操作不能成功执行?(C )A) 从DEPT 中删除部门号=‘03’地行B)在DEPT中插入行(‘06’,‘计划部’,‘6号楼’)C) 将DEPT中部门号=‘02’地部门号改为‘10’D) 将DEPT中部门号=‘01’地地址改为‘5号楼’21、在雇员信息表关系EMP中,哪个属性是外键(foreign key)?(C )A) 雇员号B) 雇员名C) 部门号D) 工资22、设关系R和关系S地元数分别是3和4,关系T是R与S地广义笛卡尔积,即:T=R×S,则关系T地元数是(A )A) 7 B) 9 C) 12 D) 123、设属性A是关系R地主属性,则属性A不能取空值(NULL).这是(A )A) 实体完整性规则 B) 参照完整性规则C) 用户定义完整性规则 D) 域完整性规则24、下面列出地关于“视图(View)”地条目中,哪一条是不正确地?( B)A) 视图是外模式B)使用视图可以加快查询语句地执行速度C) 视图是虚表 D) 使用视图可以简化查询语句地编写25、SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,语句INSERT、DELETE、UPDATE实现哪类功能?(B )A) 数据查询B) 数据操纵C) 数据定义D) 数据控制26、在数据库管理系统中,下面哪个模块不是数据库存取地功能模块?( A)A) 事务管理程序模块B) 数据更新程序模块C) 交互式程序查询模块D) 查询处理程序模块27、SQL查询语句中,用于测试子查询是否为空地谓词是(A).A、EXISTSB、UNIQUEC、SOMED、ALL28、下列SQL语句中,插入数据地是(D ).A、CREATEB、ALTERC、UPDATED、INSERT29、在下面所列出地条目中,哪些是数据库管理系统地基本功能?(D )Ⅰ.数据库定义Ⅱ.数据库地建立和维护Ⅲ.数据库存取Ⅳ.数据库和网络中其他软件系统地通信A) Ⅰ和ⅡB) Ⅰ、Ⅱ和ⅢC) Ⅱ和ⅢD) 都是30、当修改基本数据时,下列关系视图地说法正确地是(B )A、需要重建B、查以看到修改结果C、无法看到修改结果式D、不许修改带视图地基表31、在数据库管理系统地层次结构中,由高级到低级地层次排列顺序为(D )A) 应用层、数据存取层、数据存储层、语言翻译处理层B) 应用层、数据存储层、数据存取层、语言翻译处理层C) 应用层、数据存储层、语言翻译处理层、数据存取层D) 应用层、语言翻译处理层、数据存取层、数据存储层32、在SQL语言地SELECT语句中,实现投影操作地是( A )子句.A、selectB、fromC、whereD、grou by33、SQL中,“AGE IN(20,22)”地语义是( D ).A)AGE<=22 AND AGE >=20 B)AGE <22 AND AGE >20C)AGE =20 AND AGE =22 D)AGE =20 OR AGE =2234 SQL中,聚合函数COUNT(列名)用于( C )A.计算元组个数B.计算属性地个数C.对一列中地非空值计算个数D.对一列中地非空值和空值计算个数35、Transact-SQL对标准SQL地扩展主要表现为(A ).A. 加入了程序控制结构和变量B. 加入了建库和建表语句C. 提供了分组(Group By)查询功能D. 提供了Min、Max统计函数36、已知关系:厂商(厂商号,厂名)PK=厂商号产品(产品号,颜色,厂商号)PK=产品号,FK=厂商号假设两个关系中已经存在如图所示元组:厂商产品若再往产品关系中插入如下元组:I(P03,红,C02)II(P01,蓝,C01)III(P04,白,C04)IV(P05,黑,null)能够插入地元组是( D )A I,II,IVB I,IIIC I,IID I,IV37、设有一个关系:DEPT(DNO,DNAME),如果要找出倒数第三个字母为W,并且至少包含4个字母地DNAME,则查询条件子句应写成WHERE DNAME LIKE ( B )A ‘_ _ W _ %’B ‘_ % W _ _’C ‘_ W _ _’D ‘_ W _ %’38、下列SQL语句中,修改表结构地是(D).A、CREATEB、INSERTC、UPDATED、ALTER39、SQL语句通常称为( A).A、结构化查询语言B、结构化控制语言C、结构化定义语言D、结构化操纵语言40、SQL语言地一体化特点主要是与( B)相比较而言地.A、操作系统命令B、非关系模型地数据语言C、高级语言D、自然语言41、SQL语言中,删除一个表地命令是( B )A、 DELETE tableB、DROP tableC、 CLEAR tableD、 REMORE table42、在基表S中查询所有姓名中有“国”地学生,在WHERE子句中应使用( A)通配符.A. LIKE ’%国%’B. LIKE ‘%国_’C. LIKE ’_国%’D. LIKE ‘_国_’43、下列哪个不属于数据库对象(B )A、默认B、SELECT语句C、存储过程D、视图44、下列那一个不属于SQL SERVER工具(A )A数据库管理器 B、事件探查器 C、导入和导出数据 D、查询分析器45、下列那一个不属于企业管理器地功能(D )A、注册服务器B、配置本地和远程服务器C、引入和导出数据D、为WINDOWS创建操作系统用户46、关于SQL Server文件组地叙述正确地是:( A ).A、一个数据库文件不能存在于两个或两个以上地文件组里B、日志文件可以属于某个文件组C、文件组可以包含不同数据库地数据文件D、一个文件组只能放在同一个存储设备中47、下面关于外码地描述中,不正确地是(C ).A. 外码体现了关系间地联系手段B. 外码是某个关系地码C. 外码不是任何关系地码D. 外码是一个关系地码同时是另一个关系地属性48、在SQL Server 中关于索引叙述正确地是:( B ).A、每个数据库表可以建立多个聚集索引B、每个表可以定义多个非聚集索引C、索引地数据保存在同一个表中D、索引不会改变表中地数据49、关于索引描述错误地是以下地哪一个?( A)A、表中地任何数据列都可以添加索引B、创建索引地列最好不要含有许多重复地值C、一般不给很少使用地列添加索引D、并不是数据库中聚集索引越多搜索效率就越高50、关于存储过程地描述正确地一项是:( C ).A、存储过程地存在独立于表,它存放在客户端,供客户使用B、存储过程只是一些T-SQL语句地集合,不能看作SQL Server 地对象C、存储过程可以使用控制流语句和变量,大大增强了SQL地功能D、存储过程在调用时会自动编译,因此使用方便51、关于触发器叙述正确地是( A ).A、触发器是自动执行地,可以在一定条件下触发B、触发器不可以同步数据库地相关表进行级联更改C、SQL Server 不支持DDL触发器D、触发器不属于存储过程52、在基表S中删除电话号码(PHONE)属性使用( B)命令.A. ALTER S DROP PHONEB. ALTER TABLE S DROP PHONEC. UPDATE TABLE S PHONED. DROP TABLE S PHONE54、描述事物性质地最小数据单位是( C ).A. 记录B. 文件C. 数据项D. 数据库55.在SQL数据库中,视图(view)是从一个或几个基表(或视图)导出地表,它本身不独立存储在数据库中,即数据库中只存放视图地定义而不存放视图对应地数据,这些数据仍然存放在对应地基表中.因此视图( B ).A. 也是一个表B. 是一个虚表C. 是一个数据库D. 是一个文件56.当前DBMS所支持地数据模型地主流是(C).A. 网状模型B. 层次模型C. 关系模型D. 面向对象模型57. 能唯一地标识实体属性地( C)称为主码.A. 组和B. 排列C. 集合D. 元组58下述关于数据库系统地正确叙述是( B).A. 数据库中只存在数据项之间地联系B. 数据库地数据项之间和记录之间都存在联系C. 数据库地数据项之间无联系,记录之间存在联系D. 数据库地数据项之间和记录之间都不存在联系59.授权定义经过编译和存储在( D)中.A. DBMDB. 视图C. 基表D. 数据库60.假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选课关系是SC(S#,C#,GRADE),要查找选修“COMPUTER”课程地女学生地姓名,将涉及到关系(D).A. SB. SC,CD. S,C,SC61.数据库技术地奠基人之一,E.F.Codd于1970年发表过多篇论文,主要论述地是(C) .A. 层次数据模型B. 网络数据模型C. 关系数据模型D. 面向对象数据模型62.数据库管理系统通常提供授权功能来控制不同用户访问数据地权限,这主要是为了实现数据库地( D).A. 可靠性B. 一致性C. 完整性D. 安全性63、SQL语言地GRANT和REVOKE语句主要用来维护数据库地(A ).A. 安全性B. 完整性C. 可靠性D. 一致性64、在关系数据库中,实现“表中任意二行不能相同”地约束是靠(C ) .A. 外码B. 属性C. 主码D. 列65、对表进行垂直方向地分割用地运算是(B ).A. 交B. 投影D. 连接66、关系数据库中,实现表与表之间地联系是通过_(B).A. 实体完整性规则B. 参照完整性规则C. 用户自定义完整性D. 值域67、关系数据库中,实现主码标识元组地作用是通过(A) .A. 实体完整性规则B. 参照完整性规则C. 用户自定义完整性D. 属性地值域68、如果有n个事务串行调度,那么不同地有效调度有[ D]A.n2 B.2n C.4n D.n!69、部分匹配查询中有关通配符“_”地正确地叙述是 ( D)A.“_”代表多个字符B.“_”可以代表零个或多个字符C.“_”不能与“%”一同使用D.“_”代表一个字符70、下列SQL语句中,能够实现“收回用户ZHAO对学生表(STUD)中学号(XH)地修改权”这一功能地是CA.REVOKE UPDATE(XH) ON TABLE FROM ZHAOB.REVOKE UPDATE(XH) ON TABLE FROM PUBLICC.REVOKE UPDATE(XH) ON STUD FROM ZHAOD.REVOKE UPDATE(XH) ON STUD FROM PUBLIC71、把对关系SC地属性GRADE地修改权授予用户ZHAO地SQL 语句是(C)A)GRANT GRADE ON SC TO ZHAOB)GRANT UPDATE ON SC TO ZHAOC)GRANT UPDATE (GRADE) ON SC TO ZHAOD)GRANT UPDATE ON SC (GRADE) TO ZHAO二、填空题1、在SQL查询语句中,用于测试子查询是否为空地谓词是_ EXISTS __.2、在查询操作结果中不出现重复元组,应在Select子句中使用_ DISTINCT_保留字.3、.SQL地SELECT语句在未使用分组子句但在SELECT子句中使用了聚合函数.此时SELECT 子句地语句就不是投影地意思了,而是对查询结果执行聚合操作.4、数据库系统地权限控制方法分为自主存取控制和强制存取控制方法两种5、在SQL Server 中,数据库地文件分为主数据文件_、辅助数据文件_和_事务日志文件三大类;6、SQL地数据操纵功能主要包括INSERT、__UPDATE__和__DELETE_三个语句.7、在字符匹配查询中,通配符“%”代表_任意多个字符___,“_”代表__任意单个字符.8、触发器是一种特殊地存储过程,它可以在对一个表上进行__插入__、_删除_和___修改__操作中地任一种或几种操作时被自动调用执行.9、视图是一个虚表,它是从一个或几个基本表中导出地表.在数据库中,只存放视图地结构定义,不存放视图地对应地数据.三、判断题1、视图是一张虚表,所有地视图中不存储数据(√)2、用户不允许使用视图修改表数据(×)3、数据库中地视图只能使用所属数据库地表,不能访问其它数据库地表(×)4、视图既可以通过表得到,也可以通过其它视图得到(√)5、规则在创建后,并不能直接使用,必须绑定到表中某一列或者用户定义地数据类型上.(√)6、创建规则对象后,必须把它绑定到一个列或用户定义地数据类型上才能起作用.(√)触发器就其本质而言是一种特殊地存储过程.存储过程和触发器在数据库地开发中,在维护数据库实体完整性等方面具有不可替代地作用.(×)8、现实世界地对象在数据库中用实体描述(╳)9、游标是系统为用户地查询结果开辟地数据缓冲区,存放SELECT语句地查询结果.(√)10、在数据库系统中,核心地部分是应用程序.(√ )11、候选码可以选作主码,但一个主码不总是候选码. (√ )12、存储过程是存放在服务器上地预先定义与编译好地SQL语句地命名集合(√)13.视图、表是一样地,都可以进行更新操作地. ( ╳ )14、触发器操作与约束有冲突时,触发器仍会执行.( ╳ )15、删除触发表时,触发器被随之删除.(√)16、Order by子句仅对检索数据地显示有影响,并不改变表中行地内部顺序.(√)17、从一个表中删除元组时,delete和drop table命令可以起到同样地效果.(×)18、与主键不同,惟一性可以是null值.(√)19、使用having子句是为了限制group by子句返回地行地个数.(√)20、在数据表定义时设置Primary key是数据库地实体完整性控制. (√)21、在数据表定义时设置主键(Primary key)则不允许插入全为空地记录.(√)22、数据库一旦建立,就没有办法重命名了,所以命名数据库要慎重.(×)四、综合题1、设某商业集团关于商店销售商品地数据库中有三个基本表:商店SHOP(S#,SNAME,AREA,MGR_NAME)其属性是商店编号,商店名称,区域名,经理姓名.销售SALE(S#,G#, QUANTITY)其属性是商店编号,商品编号,销售数量.商品GOODS(G#,GNAME,PRICE)其属性是商品编号,商品名称,单价.(1)试写出检索销售“冰箱”地商店地编号和商店名称地SELECT语句表达形式.(2)试写出下列操作地SQL语句:从SALE表中,把“开开商店”中销售单价高于1000元地商品地销售元组全部删除. (3)试写出下列操作地SQL语句:统计区域名为“EAST”地所有商店销售地每一种商品地总数量和总价值.要求显示(G#,GNAME,SUM_QUANTITY,SUM_VALUE),其属性为商品编号、商品名称、销售数量、销售价值.1、答:解:(1)SELECT语句如下:SELECT A.S#,SNAMEFROM SHOP A,SALE B,GOODS CWHERE A.S#=B.S# AND B.G#=C.G# AND GNAME='冰箱';(2)解:DELETE FROM SALEWHERE S# IN(SELECT S#FROM SHOPWHERE SNAME='开开商店')AND G# IN(SELECT G#FROM GOODSWHERE PRICE>1000);(3)解:SELECT C.G#,GNAME,SUM(QUANTITY)AS SUM_QUANTITY,PRICE*SUM(QUANTITY)AS SUM_VALUEFROM SHOP A,SALE B,GOODS CWHERE A.S#=B.S# AND B.G#=C.G# AND AREA='EAST'GROUP BY C.G#,GNAME;(注:SELECT子句中地属性C.G#,GNAME应在分组子句中出现)2、设数据库中有两个基本表:职工表 EMP(E#,ENAME,AGE,SALARY,D#),其属性分别表示职工工号、姓名、年龄、工资和工作部门地编号.部门表 DEPT(D#,DNAME,MGR#),其属性分别表示部门编号、部门名称和部门经理地职工工号.(1)试指出每个表地主键和外键.并写出每个表创建语句中地外键子句.(2)写出下列查询地关系代数表达式和SQL语句:检索每个部门经理地工资,要求显示其部门编号、部门名称、经理工号、经理姓名和经理工资.(3)建一个年龄大于50岁地职工视图,属性为(D#,DNAME,E#,ENAME,AGE,SALARY). 答:(1)EMP表地主键为E#,外键为D#.DEPT表地主键为D#,外键为MGR#在EMP表地创建语句中,可写一个外键子句:FOREIGN KEY D# REFERENCES DEPT(D#);在DEPT表地创建语句中,可写一个外键子句:FOREIGN KEY MGR# REFERENCES EMP(E#);(2)关系表达式为:πDEPT.D#,DNAME,MGR#,ENAME,SALARY(DEPT ? EMP)MGR#=E# SELECT语句为:SELECT DEPT.D#,DNAME,MGR#,ENAME,SALARYFROM DEPT,EMPWHERE MGR#=E#;(3)CREATE VIEW VIEW5AS SELECT DEPT.D#,DNAME,E#,ENAME,AGE,SALARY FROM DEPT,EMPWHERE DEPT.D#=EMP.D# AND AGE>50;3、有图书借阅管理地数据库系统,其数据库关系模式(属性只用英文字母)为:学生(学号,姓名,系别,专业)主码为:学号图书B(图书编号,图书名,出版日期,出版社)主码为:图书编号借阅R(学号,图书编号,借阅日期)主码为:(学号,图书编号)外码有:学号、图书编号请写出完成下列操作地SQL语句(1)创建借阅R表,要求指定其主码和外码Create table 借阅(学号 char(10) foreign key references 学生, 图书编号 char(10) foreign key references 图书,借阅日期 datetime ,primary key(学号, 图书编号)(2)向借阅表增加记录(’20030101‘,‘tp201.01’, ‘2006/06/12‘).Insert into 借阅values (’20030101’, ‘tp201.01’, ‘2006/06/12‘)(3)将图书表地查询权授给user用户,并允许其转授给其他人Grant select on 图书 to uset with grant option(4)、查询借阅了“数据库原理”一书地学生信息.Select * from 学生 where学号 in (select学号 from 借阅Where 图书编号 in select 图书编号 from 图书where 图书名=’数据库原理’(5)、查询借阅了关于数据库方面书籍地学生地学号、图书名称和出版社.Select 学号,图书名,出版社 from 借阅 A, 图书 Bwhere A. 学号=B. 学号 and 图书名like ‘%数据库%’(6)查询2006年5月1日到2006年6月1日期间,图书地借阅情况Select * from 借阅 where 借阅日期between ‘2006/05/01’ and ‘2006/06/01’4、设教学数据库中有四个关系:教师(教师编号,教师姓名,联系电话)课程(课程号,课程名,教师编号)学生(学号,学生姓名,年龄,性别,专业)选课(学号,课程号,成绩)(1)创建学生表和选课表,要求:指定每个表地主关键字、外部关键字和check约束. (2)将所有学生地“高等数学”课程地成绩增加10分.Update选课 set成绩=成绩+10 where课程号in (select课程号 from 课程 where课程名=’高等数学’(3)将课程表地查询和修改权限授给teacher用户,同时允许转授给其它用户.Grant select,update on 课程 to teacher with grant option(4)查询男生所学课程地课程号和课程名.Selec 课程号,课程名 FROM 学生,选课,课程Where学生.学号=选课.学号 and 选课.课程号=课程.课程号and 性别=’男’或Selec 课程号,课程名 FROM 课程 where课程号 in (Select 课程号 from 选课 where 学号 in (Select学号 from 学生 where 性别=’男’))(5)查询所有姓王地教师所授课程地课程号和成绩(按课程号排序).Select 选课.课程号, 成绩 from 教师,课程,选课 where 教师姓名like ‘王%’And 教师.教师编号=课程.教师编号and 课程.课程号=选课.课程号order by 课程号(6)统计每门课程地学生选修人数(超过10人地课程才统计).要求显示课程号和人数,查询结果按人数降序排列.Select 课程号 ,count(学号) 人数 from 选课group by课程号 having count(*)>10 order by 人数 desc(7)检索所有姓“李”地学生地姓名和年龄Select 学生姓名,年龄 from 学生 where 学生姓名like ‘李%’(8)求男生地最高成绩Select max(成绩) from 选课 where 学号 in (select 学号 from 学生Where 性别=’男’)5、已知有关系:仓库(仓库号,城市,面积)职工(仓库号,职工号,工资)订购单(职工号,供应商号,订购单号,订购日期)供应商(供应商号,供应商名,地址)(1)创建订购单表,要求:数据类型及长度自定义,并指定其主码和外码Create table 订购单表(职工号 char(10) foreign key references 职工,供应商号 char(10) foreign key references供应商,订购单号 char(10) primary key,订购日期 datetime)(2)修改职工表,增加一个职工名(可变长字符型,最长为20)字段Alter 职工表 add 职工名 varchar(20)(3)向订购单表中增加一条记录,记录值为:(’ZG0001’,‘GY0001’, ‘DD0001’,‘2006/06/12’)Insert into 订购单表values (’ZG0001‘,‘GY0001’, ‘DD0001’,‘2006/06/12’)(4)给低于所有职工平均工资地职工提高10%地工资.UPDATE 职工SET 工资=工资*1.1 WHERE 工资< (SELECT AVG(工资) FROM 职工)(5)删除所有目前没有任何订购单地供应商.DELETE FROM 供应商 WHERE 供应商号 NOT IN(SELECT 供应商号 FROM 订购单)(6)将职工表地查询权授给USER用户,并允许其转授给其他人Grant select on职工表 to USER with grant option(7)检索出向供应商S3发过订购单地职工地职工号和仓库号.SELECT 职工号,仓库号 FROM 职工 WHERE 职工号 IN( SELECT 职工号 FROM 订购单 WHERE 供应商号=’S3’ )(8)检索出目前没有任何订购单地供应商信息.SELECT * FROM 供应商 WHERE NOT EXISTS( SELECT * FROM 订购单 WHERE 供应商号=供应商.供应商号 ) (9)检索出和职工E1、E3都有联系地北京地供应商信息.SELECT * FROM 供应商 WHERE 供应商号 IN( SELECT 供应商号 FROM 订购单 WHERE 职工号=’E1’ )AND 供应商号 IN( SELECT 供应商号 FROM 订购单 WHERE 职工号=’E3’ )(10)检索出目前和华通电子公司有业务联系地每个职工地工资.SELECT 职工号,工资 FROM 职工 WHERE 职工号 IN(SELECT 职工号 FROM 订购单 WHERE 供应商号 IN(SELECT 供应商号 FROM 供应商 WHERE 供应商名=’华通电子公司’)) (11)检索出与工资在1220元以下地职工没有联系地供应商地名称.SELECT 供应商名 FROM 供应商 WHERE 供应商号 IN(SELECT 供应商号 FROM 订购单 WHERE 职工号 NOT IN(SELECT 职工号 FROM 职工 WHERE 工资 < 1220))(12)检索出向S4供应商发出订购单地仓库所在地城市.SELECT 城市 FROM 仓库 WHERE 仓库号 IN(SELECT 仓库号 FROM 职工 WHERE 职工号 IN(SELECT 职工号 FROM 订购单 WHERE 供应商号=’S4’))(13)检索出在上海工作并且向S6供应商发出了订购单地职工号.(SELECT 仓库号 FROM 仓库 WHERE 城市=’上海’) AND 职工号 IN(SELECT 职工号 FROM 订购单 WHERE 供应商号=’S6’))(14)检索出在广州工作并且只向S6供应商发出了订购单地职工号.SELECT 职工号 FROM 职工 WHERE 仓库号 IN(SELECT 仓库号 FROM 仓库 WHERE 城市=’广州’) AND 职工号 IN(SELECT 职工号FROM 订购单WHERE 供应商号=’S6’) AND 职工号NOT IN (SELECT 职工号FROM 订购单WHERE 供应商号!=’S6’)(15)检索出由工资多于1230元地职工向北京地供应商发出地订购单号.SELECT 订购单号 FROM 订购单 WHERE 职工号 IN(SELECT 职工号 FROM 职工 WHERE 工资>1230) AND 供应商号IN(SELECT 供应商号 FROM 供应商 WHERE 地址=’北京’)(16)检索出有最大面积地仓库信息.SELECT * FROM 仓库 WHERE 面积=(SELECT MAX(面积) FROM 仓库)(17)检索出向S4供应商发出订购单地那些仓库地平均面积.SELECT AVG(面积) FROM 仓库 WHERE 仓库号 IN(SELECT 仓库号 FROM 职工 WHERE 职工号 IN(SELECT 职工号 FROM 订购单 WHERE 供应商号=’S4’))(18)检索出每个城市地供应商个数.SELECT 地址,COUNT(*) FROM 供应商 GROUP BY 地址(19)检索出和面积最小地仓库有联系地供应商地个数.SELECT COUNT(*) FROM 供应商 WHERE 供应商号 IN(SELECT 供应商号 FROM 订购单 WHERE 职工号 IN(SELECT 仓库号 FROM 仓库 WHERE 面积=(SELECT MIN(面积) FROM 仓库))))(20)插入一个新地供应商元组(S9,智通公司,沈阳).INSERT INTO 供应商VALUES(‘S9’,’智通公司’,’沈阳’)(21)删除由在上海仓库工作地职工发出地所有订购单.DELETE FROM 订购单 WHERE 职工号 IN(SELECT 职工号 FROM 职工 WHERE 仓库号 IN(SELECT 仓库号 FROM 仓库 WHERE 城市=’上海’)版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.BkeGuInkxI 用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.PgdO0sRlMoUsers may use the contents or services of this article for personal study, research or appreciation, and othernon-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.3cdXwckm15转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.h8c52WOngMReproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.v4bdyGious。
储存过程(答案)

储存过程(答案)
单选题
1、将具有特定功能的一段SQL语句(多于一条)在数据库服务器上进行预先定义并编译,以
供应用程序调用,该段SQL程序可被定义为(D)
A、事物
B、触发器
C、视图
D、存储过程
2、以下对存储过程的叙述中,不正确的是(C)
A、存储过程可以定义变量
B、存储过程是一组为了完成特定功能的SQL语句组成的程序
C、存储过程不能嵌套调用
D、存储过程可以一次编译,多次执行
3、关于存储过程说法错误的是(C)
A、方便用户完成某些功能
B、用户存储过程方便用户批量执行T-SQL命令
C、用户存储过程不能调用系统存储过程
D、应用程序可以调用用户存储过程
4、存储过程的修改不能采用(D)。
A、界面方式修改命令方式创建的存储过程
B、ALTER PROCEDURE
C、先删除再创建
D、C REATE PROCEDURE
5、关于存储过程的描述正确的一项是(C)。
A、存储过程存在于内存中,每次重新启动DBMS时,便,会自动消失
B、存储过程在每次调用时都会被编译-次
C、存储过程可以包含输入和输出参数,增加了调用时的灵活性
D.执行一次存储过程所花的时间,比执行相同的SQL批处理要长
判断题
6、存储过程未存在服务器注册(错)
7、相较于用户自定义存储过程,系统存储过程更加的自由(错)
8、用户定义的存储过程是指由数据库管理系统所提供的存储过程(错)
9、存储过程可以带参数,从而增加调用灵活性(对)
10、存储过程一旦创建,其脚本就被加密,不能再次编辑修改(错)。
2021计算机二级考试MySQL数据库考试习题库(附答案)

2021计算机二级考试MySQL数据库考试习题库(附答案)试题1习题一一、编程题在数据库db_test中创建一个存储过程,用于实现给定表content中一个留言人的姓名即可修改表content中该留言人的电子邮件地址为一个给定的值。
二、简答题1.请解释什么是存储过程?2.请列举使用存储过程的益处。
3.请简述游标在存储过程中的作用。
4.请简述存储过程与存储函数的区别。
习题答案:一、编程题在MySQL命令行客户端输入如下SQL语句即可实现:mysql>USE db_test;Database changedmysql>DELIMITER$$mysql>CREATE PROCEDURE sp_update email(IN USer_name VARCHAR(50),IN e_mail VARCHAR(50))一>BEGIN一> UPDATE content SET email=e_mail WHERE username=user_name;一>END$$Query OK,0 rows affected(0.06 SeC)二、简答题1.存储过程是一组为了完成某特定功能的SQL语句集,其实质上就是一段存放在数据库中的代码,它可以由声明式的SQL 语句(如CREATE、UPDATE和SELECT等语句)和过程式SQL 语句(如IF-THEN-ELSE控制结构语句)组成。
2.略。
可参考第11章11.1节内容。
3.游标是一个被SELECT语句检索出来的结果集。
在存储了游标后,应用程序或用户就可以根据需要滚动或浏览其中的数据。
4.存储函数与存储过程之间存在这样几点区别:(1)存储函数不能拥有输出参数,这是因为存储函数自身就是输出参数;而存储过程可以拥有输出参数。
(2)可以直接对存储函数进行调用,且不需要使用CALL语句;而对存储过程的调用,需要使用CALL语句。
(3)存储函数中必须包含一条RETURN语句,而这条特殊的SQL语句不允许包含于存储过程中。
数据库应用基础第6章习题参考答案

1.选择题(1)(C)允许用户定义一组操作,这些操作通过对指定的表进行删除、插入和更新命令来执行或触发。
A.存储过程B.视图C.触发器D.索引(2)SQL Server为每个触发器创建了两个临时表,它们是( B )。
A.Updated和Deleted B.Inserted和DeletedC.Inserted和Updated D.Seleted和Inserted(3)SQL Server中存储过程由一组预先定义并被(C)的Transact-SQL语句组成。
A.编写B.解释C.编译D.保存(4)下列可以查看表的行数以及表使用的存储空间信息的系统存储过程是( A )。
A.sq_spaceused B.sq_dependsC.sq_help D.sq_rename2.填空题(1)存储过程(stored procedure)是SQL Server服务器中(一组预编译的)Transact-SQL 语句的集合。
(2)SQL Server中的存储过程具有如下(的系统存储过程、用户自定义存储过程、临时存储过程、远程存储过程、扩展存储过程5 )种类型。
(3)创建存储过程实际是对存储过程进行定义的过程,主要包含存储过程名称及其(参数)和存储过程的主体两部分。
(4)触发器主要用于强制复杂的(业务规则)或要求。
(5)当某个表被删除后,该表上的(所有触发器)将自动被删除。
3.问答题(1)使用存储过程的主要优点有哪些?答:存储过程的主要优点有:- 实现模块化编程,一个存储过程可以被多个用户共享和重用。
- 可以加快程序的运行速度。
- 可以减少网络的流量。
- 可以提高数据库的安全性(2)存储过程分哪两类?各有何特点?答:存储过程最常见的主要分为系统存储过程和用户自定义存储过程两类,此外还有临时存储过程、远程存储过程和扩展存储过程:- 系统存储过程由系统自动创建,主要存储在master数据库中,一般以sp_为前缀,系统存储过程完成的功能主要是从系统表中获取信息,通过系统存储过程,SQL Server中的许多管理性或信息性的活动都可以被顺利地完成。
第6章习题参考答案

第6章习题解答1.思考题(1)什么是存储过程?为什么要使用存储过程?答:存储过程是SQL Server服务器中一组(预编译)的T-SQL语句的集合,是存储在数据库中的程序,这些程序是用来完成对数据库的指定操作。
存储过程具有如下优点:1) 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2) 当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
这些操作,如果用程序来完成,就变成了一条条的SQL 语句,可能要多次连接数据库。
而使用存储过程,只需要连接一次数据库就可以了。
3) 存储过程可以重复使用,可减少数据库开发人员的工作量。
4) 安全性高,可设定只有某此用户才具有对指定存储过程的使用权。
(2)系统存储过程和自定义存储过程有何区别?答:最简单的区别就是系统存储过程是系统自带的,用户不可更改删除;而自定义的存储过程是用户自己编辑的。
在自定义存储过程中可以调用系统存储过程。
(3)当某个表被删除后,该表上的所有触发器是否还存在?为什么?答:因为触发器(trigger)是SQL Server数据库中一种特殊类型的存储过程,不能由用户直接调用,而且可以包含复杂的T-SQL语句。
触发器是为表上的更新、插入、删除操作定义的,也就是说当表上发生更新、插入或删除操作时触发器将执行。
所以,当某个表被删除后,该表上的所有触发器将自动被删除。
触发器主要用于强制复杂的业务规则或要求。
(4)存储过程和触发器有什么区别?什么时候用存储过程?什么时候用触发器?答:存储过程和触发器,它们都是独立的数据库对象和存储在数据库上的特殊的程序。
存储过程由用户调用,完成指定的数据处理任务;触发器则由特定的操作触发,从而自动完成相关的处理任务。
数据库练习及答案 (2)

一. 创建一个学生档案表(表名为xsda),其表结构如下:Create Table xsda(xh Char (10) not null unique,xm Char(8),csny Datetime ,gz Decimal(6,1),zy Char (10))1.在xsda表中插入一个学生记录:(2000jsj008,李平)insert into xsda(xh,xm) values(‘2000jsj008’,’李平’)2.把xsda表中80-01-01前出生的人的工资增加20%Update xsda set gz=gz*1.2 where csny<’ 80-01-01’3.查询xsda表中不同专业的人数Select zy ,count(xh) from xsda group by zy4.假如另外还有一个学生成绩表xscj(xh,kch,kccj), xh,kch,kccj分别指学号、课程号、成绩,要求查询姓名为李平的同学的各门课程的成绩。
Select kch,kccj from xsda,xscj where xsda.xh=xscj.xh and xm=’李平’5.xsda、xscj表同上,查询选修了kch为Yy2的学生的xh和XmSelect xh,xm from xsda,xscj where xsda.xh=xscj.xh and kch=’Yy2’二、使用SQL语句创建一个班级表CLASS,属性如下:CLASSNO,DEPARTNO,CLASSNAME;类型均为字符型;长度分别为8、2、20且均不允许为空。
CREATE ___table_____ CLASS(CLASSNO __char____ (8) NOT NULL,DEPARTNO CHAR (2) NOT NULL,CLASSNAME CHAR (__20__) NOT NULL)三、有一个[学生课程]数据库,数据库中包括三个表:学生表:Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为:Student(Sno,Sname,Ssex,Sage,Sdept),Sno 为关键字。
(2版)数据库实验11存储过程触发器及答案

(2版)数据库实验11存储过程触发器及答案数据库原理与应用实验实验十一存储过程与触发器一、实验目的及要求本实验主要目的是掌握存储过程的创建及使用方式、触发器的创建,具体要求有:●理解存储过程的概念及类型,深刻理解存储过程的优点。
●掌握创建各种存储过程的方法,掌握调用存储过程的方法。
●理解触发器的概念与类型。
●理解触发器的功能及工作原理。
●掌握创建、更改、删除触发器的方法。
●理解利用触发器维护数据完整性的方法。
二、实验原理及背景知识(一)存储过程知识存储过程是一种数据库对象,将执行计划存储在数据库服务器中。
它的运行速度比独立运行同样的程序要快。
1、存储过程类型(1)系统存储过程存储在master数据库中,其名称以sp_为前缀。
可以在其他数据库中调用。
(2)用户自定义存储过程由用户创建并能完成某一特定功能的存储过程,也称本地存储过程。
2、创建存储过程存储过程的三个组成部分:(1)所有的输入参数以及传给调用者的输出参数。
(2)被执行的针对数据库的操作语句,包括调用其他存储过程的语句。
(3)返回给调用者的状态值,以指明调用是成功还是失败。
3、T-SQL创建存储过程的基本语法格式CREATE PROC[EDURE] 存储过程名称参数定义AS SQL语句(二)触发器知识触发器是一种特殊类型的存储过程,主要通过事件进行触发执行的。
可以实现由主键和外键所不能保证的参照完整性和数据一致性;强化约束;跟踪变化;级联运行;存储过程的调用等功能。
1、触发器的种类(1)AFTER触发器:只有对表执行某一操作后,才能被触发。
可以为表的同一操作定义多个触发器,其触发次序可使用sp_settriggerorder来完成。
(2)INSTEAD OF触发器:不执行其触发操作,仅执行触发器本身,对同一触发操作只能定义一个INSTEAD OF触发器。
2、Inserted和Deleted临时表插入一行时,Inserted表保存了一份插入行的拷贝。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
存储过程、触发器练习
1、在学生选课数据库中,创建一存储过程deptmale,查询指定系的男生人数,其中系为输入参数,人数为输出参数。
create proc p_dept
@dept char(20),@mannum int output
as
select @allcre=count(sno) from student
where sdept=@dept and ssex='男'
declare @num int
exec p_dept '计算机系',@num output
print @num
2、在s_c数据库中,创建一个存储过程totalcredit,根据输入的学生姓名,计算其总学分。
(使用输出参数)。
并执行该存储过程。
create proc p_cou
@name char(10),@allcre int output
as
select @allcre=sum(ccredit)from student,course,sc
where student.sno=sc.sno and o=o
and sname=@name group by sc.sno
declare @asum int
exec p_cou '刘晨',@asum output
print @asum
3、创建一更新触发器upd_grade,设置sc表的grade字段不能被更新,并显示信息“学生成绩不能被修改,请与教务处联系”。
CREATE TRIGGER mes_sc
ON sc
FOR UPDATE
AS
IF UPDATE(grade)
BEGIN
ROLLBACK TRAN
PRINT '学生成绩不能被修改,请与教务处联系'
END
4、创建一个insert触发器uninsertstu,当在student表中插入一条新纪录时,如果是“计算机系”的学生,则撤销该插入操作,并返回“此系人数已满,不能再添加”信息。
create trigger unisnertstu
on student for insert
as
if exists(select*from inserted where sdept='计算机系')
begin
print'此系人数已满,不能再添加'
rollback transaction
end
4、创建一删除触发器tri_xs,功能是当某个学生从student表中被删除时,同时也删除sc表中该学生的相关记录。
USE 学生选课
GO
CREATE TRIGGER tri_xs
ON student
FOR DELETE
AS
DELETE sc
WHERE sno IN (SELECT sno FROM DELETED)
GO
5、在学生选课数据库中,创建一学生联系方式表stu_info(id,sno,sname,address,phone)。
其中id是自动编号。
并向该表中插入一条记录(0611105,李雷,汉正街5号,1111111)。
6、在创建的stu_info表中,查找是否有‘王梅梅’同学,如果
没有,则在此表中添加该记录(0611108,王梅梅,人民路1号,22222222),编程实现将此信息添加到表中。
declare @id int
set IDENTITY_INSERT stu_info ON
if exists(select * from stu_info where sname='王梅梅')
begin
print '此人已存在.'
end
else
begin
select @id=max(id) from stu_info
set @id=@id+1
insert into stu_info(id,sno,sname,address,phone) values(@id,'0611108','王梅梅','人民路1号','22222222') end。