oracle_存储过程练习题
- 格式:doc
- 大小:376.50 KB
- 文档页数:7
oracle练习题及答案Oracle练习题及答案Oracle是一种强大的关系数据库管理系统,被广泛应用于企业级应用程序和数据管理中。
为了帮助大家更好地掌握Oracle数据库的知识,以下是一些Oracle练习题及答案,希望能够帮助大家更好地理解和掌握Oracle数据库的知识。
1. 什么是Oracle数据库?Oracle数据库是一种关系数据库管理系统,由美国Oracle公司开发。
它是一种高性能、可靠性高的数据库系统,被广泛应用于企业级应用程序和数据管理中。
2. Oracle数据库的特点有哪些?Oracle数据库具有以下特点:高性能、高可用性、可伸缩性、安全性高、灵活性强、易管理等。
3. 如何创建一个新的数据库用户?在Oracle数据库中,可以使用以下SQL语句来创建一个新的数据库用户:```CREATE USER username IDENTIFIED BY password;```4. 如何查看Oracle数据库中所有的表?可以使用以下SQL语句来查看Oracle数据库中所有的表:```SELECT table_name FROM user_tables;```5. 如何在Oracle数据库中插入一条新的记录?可以使用以下SQL语句来在Oracle数据库中插入一条新的记录:```INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);```6. 如何在Oracle数据库中更新一条记录?可以使用以下SQL语句来在Oracle数据库中更新一条记录:```UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;```7. 如何在Oracle数据库中删除一条记录?可以使用以下SQL语句来在Oracle数据库中删除一条记录:```DELETE FROM table_name WHERE condition;```通过以上Oracle练习题及答案的学习,相信大家对Oracle数据库有了更深入的了解。
oracle练习题及答案csdn——孙云涛部门:姓名:成绩:一.问答题:1.Oracle安裝完成后的初始口令?internal/oraclesys/change_on_installsystem/managerscott/tigersysman/oem_temp2.怎么获取有哪些用户在使用数据库select username from v$session;3.数据表中一个表允许的字段最大数是多少?in操作时集合里最多允许有多少个元素?都是10004.如何在字符串里加回车?select ‘Welcome to visit’||chr||’’ from dual ;5.怎样修改oracel数据库的默认日期?alter session set nls_date_format=‘yyyymmddhh24miss’;6.请问如何修改一张表的主键?alter table aaadrop constraint aaa_key ;alter table aaaadd constraint aaa_key primary key ;7.如何解决死锁问题:第一步:select ername,t2.sid,t2.serial#,t2.logon_time,t3.sql_ textfrom v$locked_object t1,v$session t2,v$sqltext t3where t1.session_id=t2.sidand t2.sql_address=t3.addressorder by t2.logon_time第二步:alter system kill session ‘sid,serial#’;8.oarcle 数据库的连接字符是什么?||9.查询结果集做和和做差的函数分别是什么?Union 和 minus10.返回参数为星期几的sql语句写法:SELECT TO_CHAR FROM DUAL;11.如何删除一个表的重复纪录DELETE FROM TABLE_NAMEWHERE ROWID!= FROM TABLE_NAME DWHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);12.列出你所了解oracle的字符函数,个数不限lowerupperinitcap concatsubstr instrlpad rpadtrimlength13.列出你所了解oracle的日期函数,个数不限add_months months_betweenround truncnext_day last_day14.列出你所了解oracle的数值函数,个数不限round trunc mod15.列出你所了解oracle的组函数,个数不限avgmin maxsumcount16.怎样得到一个字符串中字母a的个数?写出一个方法即可:Select length-length from dual17.唯一索引和主键的区别是什么?主键不可以为null,唯一索引可以。
o r a c l e练习题及答案(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--试题一一、填空题(每小题4分,共20分)1、数据库管理技术经历了___人工管理、文件系统、数据库系统__三个阶段2、数据库三级数据结构是:外模式、模式、内模式3、Oracle数据库中,SGA由_数据库缓冲区,重做日志缓冲区,共享池组成4、在Oracle数据库中,完正性约束类型有:Primay key约束。
Foreign key约束,Unique约束,check约束,not need约束5、PL/SQL中游标操作包括:声明游标,打开游标,提取游标,关闭游标二、正误判断题(每小题2分,共20分)1、数据库中存储的基本对象是数据(T)2、数据库系统的核心是DBMS(T)3、关系操作的特点是集合操作(T)4、关系代数中五种基本运算是并、差、选择、投影、连接(F)5、Oracle进程就是服务器进程(F)6、oraclet系统中SGA所有用户进程和服务器进程所共享(T)7、oracle数据库系统中数据块的大小与操作系统有关(T)8、oracle数据库系统中,启动数据库和第一步是启动一个数据库实例(T)9、PL/SQL中游标的数据是可以改变的(F)10、数据库概念模型主要用于数据库概念结构设计(T)三、简答题(每小题7分,共35分)1、何谓数据与程序的逻辑独立性和物理独立性2、试述关系代数中等值连接与自然连接的区别与联系3、何谓数据库,数据库设计一般分为哪些阶段4、简述Oracle逻辑数据库的组成5、试任举一例说明游标的使用方法五、设有雇员表emp(empno,ename,age,sal,tel,deptno),其中:empno-----编号,name------姓名,age -------年齡,sal-----工资,tel-----电话deptno-----部门号。
请按下列要求分别晨SQL*PLUS下编程。
第一阶段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%加薪的百分比是以他们现有的薪水为根据的。
oracle练习题(打印版)### Oracle数据库练习题#### 一、选择题1. Oracle数据库中,哪个命令用于创建表?- A. CREATE TABLE- B. CREATE DATABASE- C. DROP TABLE- D. ALTER TABLE2. 以下哪个不是Oracle数据库的数据类型?- A. NUMBER- B. CHAR- C. DATE- D. IMAGE3. 在Oracle数据库中,哪个命令用于删除表?- A. DELETE FROM- B. DROP TABLE- C. REMOVE TABLE- D. ERASE TABLE4. Oracle数据库中,如何查看当前用户?- A. SELECT USER FROM DUAL;- B. SELECT CURRENT_USER FROM DUAL;- C. SELECT USERNAME FROM ALL_USERS;- D. SELECT CURRENT_USER FROM ALL_USERS;5. 以下哪个命令用于在Oracle数据库中创建索引?- A. CREATE INDEX- B. CREATE KEY- C. CREATE CONSTRAINT- D. CREATE UNIQUE#### 二、填空题1. 在Oracle数据库中,使用____命令可以查看表结构。
2. Oracle数据库中,使用____命令可以查看当前数据库的所有表。
3. 要删除Oracle数据库中的行,可以使用____命令。
4. Oracle数据库中,____用于存储二进制数据。
5. Oracle数据库中,____命令用于查看数据库中所有的索引。
#### 三、简答题1. 描述Oracle数据库中事务的ACID属性。
2. 解释Oracle数据库中的锁定机制。
3. 说明Oracle数据库中视图的作用。
#### 四、操作题1. 创建一个名为`Employees`的表,包含以下字段:- `EmployeeID` NUMBER(10) PRIMARY KEY,- `FirstName` VARCHAR2(50),- `LastName` VARCHAR2(50),- `HireDate` DATE,- `Salary` NUMBER(10, 2),- `DepartmentID` NUMBER(10).2. 向`Employees`表中插入以下数据:- `EmployeeID`: 1001, `FirstName`: 'John', `LastName`:'Doe', `HireDate`: '2023-01-01', `Salary`: 70000,`DepartmentID`: 101.- `EmployeeID`: 1002, `FirstName`: 'Jane', `LastName`:'Smith', `HireDate`: '2023-02-15', `Salary`: 50000,`DepartmentID`: 102.3. 编写一个查询,显示所有员工的姓名和工资,按工资从高到低排序。
oracle考试题Oracle是一种关系数据库管理系统,广泛应用于企业和机构的数据存储和管理。
如果你想在这个领域取得职业成功,学习和掌握Oracle技术是至关重要的。
下面就是一些Oracle考试题,希望能帮助你更好地准备Oracle认证考试。
1. 什么是Oracle数据库?简要描述Oracle数据库的特点和优势。
Oracle数据库是一种关系数据库管理系统,由Oracle Corporation开发。
它具有高性能、高可靠性、可伸缩性和安全性等特点。
Oracle数据库支持SQL语言,可用于数据存储、数据管理和数据分析等领域。
2. 什么是Oracle数据库实例?它和数据库之间的关系是什么?Oracle数据库实例是Oracle数据库在内存和硬盘上的运行实例。
它包括了数据库缓冲区、PGA、SGA和后台进程等组件。
数据库是物理存储数据的地方,而数据库实例则是在内存中运行的程序。
3. 如何创建一个新的Oracle用户?要创建一个新的Oracle用户,可以使用CREATE USER语句。
例如:CREATE USER username IDENTIFIED BY password;4. 如何给Oracle用户授予SELECT权限?要给Oracle用户授予SELECT权限,可以使用GRANT SELECT命令。
例如:GRANT SELECT ON table_name TO username;5. 什么是Oracle的PL/SQL?PL/SQL是Oracle数据库的过程式编程语言。
它结合了SQL的强大和易用性以及编程语言的结构化编程特点。
PL/SQL提供了条件控制、循环、异常处理等特性,可用于编写存储过程、触发器、函数等数据库对象。
6. 如何在Oracle数据库中创建一个存储过程?要在Oracle数据库中创建一个存储过程,可以使用CREATE PROCEDURE语句。
例如:CREATE PROCEDURE procedure_nameASBEGIN-- 存储过程内容END;7. 什么是Oracle的视图?Oracle的视图是一种虚拟表,它基于一个或多个表的查询结果。
o r a c l e练习题及答案(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--试题一一、填空题(每小题4分,共20分)1、数据库管理技术经历了___人工管理、文件系统、数据库系统__三个阶段2、数据库三级数据结构是:外模式、模式、内模式3、Oracle数据库中,SGA由_数据库缓冲区,重做日志缓冲区,共享池组成4、在Oracle数据库中,完正性约束类型有:Primay key约束。
Foreign key约束,Unique约束,check约束,not need约束5、PL/SQL中游标操作包括:声明游标,打开游标,提取游标,关闭游标二、正误判断题(每小题2分,共20分)1、数据库中存储的基本对象是数据(T)2、数据库系统的核心是DBMS(T)3、关系操作的特点是集合操作(T)4、关系代数中五种基本运算是并、差、选择、投影、连接(F)5、Oracle进程就是服务器进程(F)6、oraclet系统中SGA所有用户进程和服务器进程所共享(T)7、oracle数据库系统中数据块的大小与操作系统有关(T)8、oracle数据库系统中,启动数据库和第一步是启动一个数据库实例(T)9、PL/SQL中游标的数据是可以改变的(F)10、数据库概念模型主要用于数据库概念结构设计(T)三、简答题(每小题7分,共35分)1、何谓数据与程序的逻辑独立性和物理独立性2、试述关系代数中等值连接与自然连接的区别与联系3、何谓数据库,数据库设计一般分为哪些阶段4、简述Oracle逻辑数据库的组成5、试任举一例说明游标的使用方法五、设有雇员表emp(empno,ename,age,sal,tel,deptno),其中:empno-----编号,name------姓名,age -------年齡,sal-----工资,tel-----电话deptno-----部门号。
请按下列要求分别晨SQL*PLUS下编程。
Oracle 经典练习题一.创建一个简单的PL/SQL程序块1.编写一个程序块,从emp表中显示名为“SMITH”的雇员的薪水和职位。
declarev_emp emp%rowtype;beginselect * into v_emp from emp where ename='SMITH';dbms_output.put_line('员工的工作是:'||v_emp.job||' ;他的薪水是:'||v_emp.sal);end;2.编写一个程序块,接受用户输入一个部门号,从dept表中显示该部门的名称与所在位置。
方法一:(传统方法)declarepname dept.dname%type;ploc dept.loc%type;pdeptno dept.deptno%type;beginpdeptno:=&请输入部门编号;select dname,loc into pname,ploc from dept where deptno=pdeptno; dbms_output.put_line('部门名称: '||pname||'所在位置:'||ploc); exception –异常处理when no_data_foundthen dbms_output.put_line('你输入的部门编号有误!!');when othersthen dbms_output.put_line('其他异常');end;方法二:(使用%rowtype)declareerow dept%rowtype;beginselect * into erow from dept where deptno=&请输入部门编号;dbms_output.put_line(erow.dname||'--'||erow.loc);exceptionwhen no_data_foundthen dbms_output.put_line('你输入的部门号有误');when othersthen dbms_output.put_line('其他异常');end;3.编写一个程序块,利用%type属性,接受一个雇员号,从emp表中显示该雇员的整体薪水(即,薪水加佣金)。
[多选题]1.请选择以下那几项是oracle 客户端的链接工具:()A、IE 浏览器B、SQL*PLUSC、PLSQL DeveloperD、以上答案均不对答案: ABC2. ORACLE 常用的约束条件类型( )A、PRIMARYB、FOREIGNC、UNIQUED、CHECK答案: ABCD3.在oracle 环境下,需要创建表空间,当数据超过表空间大小时,要对表空间进行扩充,以下选项中扩充方式正确的有:()A、添加数据文件B、改变数据文件的大小C、允许数据文件自动扩展D、表空间不能再用重新创建表空间。
答案: ABC4.表命名时需要遵循的规则中选择正确的是:()A、表明的首字符应该为字母B、不能使用保留字C、可以使用下划线.数字.字母.但不能使用空格和单引号。
D、同一用户下表名不能重复。
答案: ABCD5.在Oracle 中, PL/SQL 块中定义了一个带参数的游标:CURSOR emp_cursor(dnum NUMBER) ISSELECT sal,comm FORM emp WHERE deptno=dnum;那么正确打开此游标的语句是( )。
A、OPEN emp_cursor(20);B、OPEN emp_cursor FOR 20;C、OPEN emp_cursor USING 20;D、FOR rmp_rec IN emp_cursor(20) LOOP ... END LOOP;答案: AD6.下列关于约束和索引的说法中,正确的是()。
A、在字段上定义PRIMARY KEY 约束时会自动创建B 树唯一索引B、在字段上定义UNIQUE 约束时会自动创建一个B 树唯一索引C、默认情况下,禁用约束会删除对应的索引,而激活约束会自动重建相应的索引D、定义FOREIGN KEY 约束时会创建一个B 树唯一索引答案: ABC7.下列关于ORACLE 的to_date 函数和to_char 函数,描述正确的是()选两项A、to_char 函数是将字符串数据转换为日期数据B、to_date 函数是将字符串数据转换为日期数据C、to_char 函数是将日期数据转换为字符数据D、to_date 函数是将日期数据转换为字符数据答案: BC8.查看表PRODUCTS 。
Oracle数据库试题100题(附答案)1.当Oracle服务器启动时,下列哪种文件不是必须的(D)。
A.数据文件B.控制文件C.日志文件D.归档日志文件2.在Oracle中,当用户要执行SELECT语句时,下列哪个进程从磁盘获得用户需要的数据(B)。
A.用户进程B.服务器进程C.日志写入进程(LGWRD.检查点进程(CKPT)3.在Oracle中,一个用户拥有的所有数据库对象统称为(B)。
A.数据库B.模式C.表空间D.实例4.在Oracle中,有一个教师表teacher的结构如下:ID NUMBER(5)NAME V ARCHAR2(25)EMAIL VARCHAR2(50)下面哪个语句显示没有Email地址的教师姓名(C)。
A.SELECT name FROM teacher WHERE email = NULL;B.SELECT name FROM teacher WHERE email <> NULL;C.SELECT name FROM teacher WHERE email IS NULL;D.SELECT name FROM teacher WHERE email IS NOT NULL;5.在Oracle数据库的逻辑结构中有以下组件:A 表空间B 数据块C 区D 段这些组件从大到小依次是(B)。
A.A→B→C→DB.A→D→C→BC.A→C→B→DD.D→A→C→B6.在Windows操作系统中,Oracle的(A)服务监听并接受来自客户端应用程序的连接请求。
A.OracleHOME_NAMETNSListenerB.OracleServiceSIDC.OracleHOME_NAMEAgentD.OracleHOME_NAMEHTTPServer7.在Oracle 中创建用户时,若未提及DEFAULT TABLESPACE 关键字,则Oracle 就将(B)表空间分配给用户作为默认表空间。
数据库试题姓名:___ _________一、选择题1、Oracle数据库中为新创建的表分配的初始空间通常为多大()A、一个块B、一个区C、一个段D、c一个表空间2、关于存储过程参数,正确的说法是()A、存储过程的输出参数可以是标量类型,也可以是表类型B、存储过程输入参数可以不输入信息而调用过程C、可以指定字符参数的字符长度(函数的()或者过程的(number/varchar2))D、以上说法都不对3、下列说法,正确的说法是()A、只要在存储过程中有增删改语句,一定加自治事务B、在函数内可以修改表数据C、函数不能递归调用D、以上说法都不对4、有一产品表(编号,名称,价格,数量,所属分类),下列语法不正确的是()A、select * from 产品表where价格>1000B、select sum(价格) from 产品表group by 所属分类having max(价格)>1000C、select所属分类,sum(价格) from 产品表where 价格>1000 group by 所属分类D、select所属分类,sum(价格) from 产品表where max(价格)>1000 group by 所属分类5、关于触发器,下列说法正确的是()A、可以在表上创建INSTEAD OF 触发器B、语句级触发器不能使用“:old”和“:new”C、行级触发器不能用于审计功能D、触发器可以显式调用二、编程题1、查找出当前用户模式下,每张表的记录数,以scott用户为例,结果应如下:DEPT (4)EMP (14)BONUS 0SALGRADE (5)其实现的代码是:2、某cc表数据如下:c1 c2--------------1 西1 安1 的2 天2 气3 好……转换为1 西安的2 天气3 好要求:不能改变表结构及数据内容,仅在最后通过SELECT显示出这个查询结果代码为:2、请用一条sql语句查询出scott.emp表中每个部门工资前三位的数据,显示结果如下:DEPTNO SAL1 SAL2 SAL3------ ---------- ---------- -------------------------------------10 5000 2450 130020 3000 2975 110030 2850 1600 1500 则,该语句为:。
1 1. 创建用户kaifa(密码亦为kaifa),并分配connect,create table,resource权限。
2. 在做报表统计时,需要根据报表日期和币种从概要表中查询本期余额。 概要表(CCB_GYB)信息如下: ACCOUNTING_DATE DATE 报表日期(唯一索引) RMB_YTD_BALANCE NUMBER 人民币余额 CNY_YTD_BALANCE NUMBER 本位币余额 USD_YTD_BALANCE NUMBER 外币折美元余额 其中币种代码如下: --RMB 人民币 --CNY 本位币 --USD 外币折美元 如果币种为RMB,则取出人民币余额股作为本期余额;为CNY,则取本位币余额;为USD 则取外币折美元余额。
请编写一个函数GetCurrBal( qrp_rq IN VARCHAR2, --报表日期 qrp_code IN VARCHAR2 --币种 ) 实现此功能,并能在sqlplus里调用。 其中建表语句如下: create table CCB_GYB ( ACCOUNTING_DATE DATE, RMB_YTD_BALANCE NUMBER, CNY_YTD_BALANCE NUMBER, USD_YTD_BALANCE NUMBER ); 创建索引:create unique index CCB_GYB_IDX on CCB_GYB (ACCOUNTING_DATE);
3. 假设有张学生成绩表(CJ)如下 [姓名] [学科] [成绩] 张三 语文 80 张三 数学 86 张三 英语 75 李四 语文 78 李四 数学 85 李四 英语 78
现有需求如下: (1)要求统计分数段的人数。显示结果为: [成绩] [人数] 02 6080(2)要求根据姓名,把各科成绩显示在一条记录里。显示结果如下:
姓名 语文 数学 英语 总成绩 ---------- ---------- ---------- ---------- ---------- 李四 78 85 78 241 张三 80 86 75 241 总分 158 171 153 482
使用SQL语句或存储过程(显示结果时可用dbms_output打印出来)实现这两个功能。 4. 某一客户表包含如下信息: INDIVIDUALID 客户ID VARCHAR2(20)(唯一键) BIRTHDATE 出生日期 Date GENDER 性别 VARCHAR2(10) SALARY 月收入 NUMBER(10,2) CERT-TYPE 证件类型 VARCHAR2(10) CERT-NO 证件号码 VARCHAR2(20) CREATED-TS 进入系统的时间 TIMESTAMP 现要把该表数据导出成文件,导出的内容格式如下: 属性列 列长度 备注 INDIVIDUALID 20 BIRTHDATE 8 格式为:yyyymmdd GENDER 10 SALARY 13 CERT-TYPE 10 CERT-NO 20 CREATED-TS 17 格式为:yyyymmddhh24missff3 要求每个字段列的内容长度是固定的,不足部分由空格补齐,字符串左对齐(右补空格),数字右对齐。如果列的内容为null,需先进行处理,字符串默认为空格,数字默认为0,日期默认为99991231,时间戳默认为99991231000000000。 请编写程序实现该导出功能。
创建表脚本: create table tb1010( INDIVIDUALID VARCHAR2(20), BIRTHDATE date, GENDER VARCHAR2(10), SALARY NUMBER(10,2), CERT_TYPE VARCHAR2(10), 3 CERT_NO VARCHAR2(20), CREATED_TS TIMESTAMP ); 5. 某语音电话本表信息如下: Call_book_info MOBILE_ID 移动号码 VARCHAR2(12) CALLIN_TIME 呼入时间 Date CALLOUT_TIME 呼出时间 Date STATUS 状态 CHAR(1)
在某次大批量操作后,数据记录达到100万,MOBILE_ID估计有2万个重复,现要求删除重复的号码(只保留一条),因为该表是业务表,删除时不能影响业务的正常使用。编写存储过程实现删除重复号码的功能。 要求如下: (1) 为保证删除的数据以后可查,在删除时要先做备份,备份不成功则不能进行删除。 (2) 要有日志记录,比如删除所花时间,删除成功了多少条,失败多少条等操作信息。 (3) 如果出现性能问题,要跟踪原因。生成trace文件进行分析,改进程序。
6.阅读下列说明,回答问题1至问题5。 【说明】 某工厂的信息管理数据库的部分关系模式如下所示: 职工(职工号,姓名,年龄,月工资,部门号,电话,办公室) 部门(部门号,部门名,负责人代码,任职时间) 关系模式的主要属性、含义及约束如表2-1所示,“职工”和“部门”的关系示例分别如表2-2和表2-3所示。 表2-1主要属性、含义及约束
表2-2 “职工”关系 4 表2-3“部门”关系
【问题1】 根据上述说明,由SQL定义的“职工”和“部门”的关系模式,以及统计各部门的人数C、工资总数Totals、平均工资Averages的D_S视图如下所示,请在空缺处填入正确的内容。(6分) Create Table 部门(部门号 CHAR(1) (a) , 部门名 CHAR(16), 负责人代码 CHAR(4), 任职时间 DATE, (b) (职工号)); Create Table 职工(职工号 CHAR(4), 姓名 CHAR(8), 年龄 NUMDER(3), 月工资 NUMDER(4), 部门号 CHAR(1), 电话 CHAR(8), 办公室 CHAR(8), (a) (职工号), (c) (部门号), CHECK( (d) )); Create View D_S(D,C,Totals,Averages) As (Select 部门号, (e) from 职工 (f) ; 【问题2】 对于表2-2、表2-3所示的“职工”和“部门”关系,请指出下列各行是否可以插入,为什么?(3分) (1) 1001 王新军 28 1000 1 8001234 主楼201
(2) 2003 李 力 28 1000 (3) 5802 赵晓啸 36 1500 6 8001568 3号楼503 【问题3】 在问题1定义的视图D_S上,下面哪个查询或更新是允许执行的,为什么?(3分) (1) Update D_S set D=3 where D=4; 5 (2) Delete from D_S where C>4; (3) Select D,Averages from D_S where C>(Select C from D_S where D=:dept);
(4) Select D,C from D_S where Totals>10000;
(5) Select * from D_S; 【问题4】 查询每个部门中月工资最高的“职工号”的SQL查询语句如下: Select 职工号 from 职工 E Where 月工资=(Select Max(月工资) from 职工as M where M.部门号=E.部门号) (1)请用30字以内文字简要说明该查询语句对查询效率的影响。(3分)
(2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。(3分)【问题5】 假定分别在“职工”关系中的“年龄”和“月工资”字段上创建了索引,如下的Select查询语句可能不会促使查询优化器使用索引,从而降低查询效率,请写出既可以完成相同功能又可以提高查询效率的SQL语句(2分) Select 姓名,年龄,月工资from 职工 where 年龄>45 or 月工资<1000;
--1.定义一个变量存放员工编码,如果超过了存储的范围。 --捕获value_error 的异常。 --2.自定义异常,如果修改员工工资时,工资超过了8万, --则触发自定义异常:显示月薪不能是超过8万 --3、显示游标的使用:在语句块中实现员工表的加薪功能,具体加薪办法。 --薪水小于1000的加2500,薪水小于3000的加1000,大于等于3000的不加 --4、动态游标的使用: --(1)先在语句块中用动态SQL创建表,用动态SQL向表中添加记录; --(2)然后用动态游标实现记录的提取并显示出来。 --5.实现针对员工信息表计算工资功能的实现 要求:用过程实现 实现方法: -- 1、创建员工应扣工资表ksal包含字段(员工编号,日期,工资) --并插入测试数据。(自已建) -- 2、创建员工实发工资表,包含字段(员工编号,日期,工资), --实发工资数据是过程中插入的(自已建) --工资=emp.sal+emp.comm-ksal.工资 3、实发工资的计算方法,实发工资=应发工资-应扣工资,应发工资为员工表(emp)里的SAL+COMM --7369举例 --应发工资 select sal+nvl(comm,0) into factsal from emp where empno = 7369;