一、选择题 1、 Oracle存储结构正确的是() A. tablespace–segment–osblock–block B. tablespace–segment–extent–block C. tablespace– extent — segment–block D. tablespace– extent — block — segment 2、 表EMPLOYEES结构为 ( EMPLOYEE_ID NUMBER(6) not null primary key, FIRST_NAME VARCHAR2(20) unique, LAST_NAME VARCHAR2(25), EMAIL VARCHAR2(25) not null, PHONE_NUMBER VARCHAR2(20), HIRE_DATE DATE, JOB_ID VARCHAR2(10), SALARY NUMBER(8,2), COMMISSION_PCT NUMBER(2,2), MANAGER_ID NUMBER(6), DEPARTMENT_ID NUMBER(4) ) 以下哪几个语句可算出表中记录,多选 () A.select count(*) from EMPLOYEES B.select count(EMPLOYEE_ID) from employees C.select count(FIRST_NAME) from employees D.select count(EMAIL) from employees E.select count(JOB_ID) from employees 3、 表EMPLOYEES的结构为: ( EMP_ID NUMBER(4) NOT NULL LAST_NAME VARCHAR2(30) NOT NULL FIRST_NAME VARCHAR2(30) DEPT_ID NUMBER(2) JOB_CAT VARCHAR2(30) SALARY NUMBER(8,2) ) 下面哪条语句可以查出各个dept_id的最大salary值和最小salary值 并且它的最值小于5000最大值大于15000?() A. SELECT dept_id, MIN(salary), MAX(salary) FROM employees WHERE MIN(salary) < 5000 AND MAX(salary) > 15000; B. SELECT dept_id, MIN(salary), MAX(salary) FROM employees WHERE MIN(salary) < 5000 AND MAX(salary) > 15000 GROUP BY dept_id; C. SELECT dept_id, MIN(salary), MAX(salary) FROM employees HAVING MIN(salary) < 5000 AND MAX(salary) > 15000; D. SELECT dept_id, MIN(salary), MAX(salary) FROM employees GROUP BY dept_id HAVING MIN(salary) < 5000 AND MAX(salary) > 15000; E. SELECT dept_id, MIN(salary), MAX(salary) FROM employees GROUP BY dept_id, salary HAVING MIN(salary) < 5000 AND MAX(salary) > 15000; 4、 SQL Server中在A数据库下如何访问B数据库中的C表:() A.在A数据库中通过建立数据库链接指向B,然后直接访问select * from c B.在B数据库中授权给A,然后直接访问select * from c C.直接访问select * from c D.直接访问select * from B..c 5、 Oracle数据库中用户A的一个存储过程用到用户B下的表Tab_B及函数Fun_B,正确的赋权语句是( ) A.在A用户模式执行 grant select on Tab_B to A; grant execute on Fun_B to A; B.在B用户模式执行 grant select on Tab_B to A; grant execute on Fun_B to A; C.在A用户模式执行 grant select on Tab_B to B; grant execute on Fun_B to B; D.在B用户模式执行 grant select on Tab_B to B; grant execute on Fun_B to B; 6、 以下数据库是Oracle语法的是:() A.select sysdate into v_time from dual; B.select v_time = sysdate; C.set v_time:=sysdate;(v_time为已定义的时间类型变量) D. v_time=sysdate 7、 分别用 1.Insert, 2.delete, 3.update处理1000条数据,对数据库资源(回滚段)使用率由高到低的顺序是(). A.123 B.132 C.231 D.312 8、 请看以下oracle中存储过程 begin begin <语句1> exception when others then dbms_output.put_line(‘错误1′); end; begin <语句2> dbms_output.putline(‘错误2′); end; exception when others then dbms_output.put_line(“错误3″); end; 请问,当<语句1>,<语句2>出错时,该存储过程输出字符串分别是什么?( ) A.错误1,错误3 B.错误1,错误2 C.错误1,错误2,错误3 D.错误2,错误3 9、 SQL Server数据库中获取系统时间的内部函数是:() A.sysdate B.getdate() C.currentdate D.date() 10.在Oracle数据库中,请描述语句SELECT decode(sign(-1),1,‘a’,‘b’) FROM dual返回结果:() A.1 B.-1 C.a D.b 二、简答题 1、 Oracle数据库中,如何增加表空间userdata的大小,请写出具体数据库语句?(以windows操作系统为例说明) 2、 简要叙述TRUNCATE, DROP, DELETE之间的关系。 3、举例说明while..loop/for..loop循环语句,如插入1..10的值到一个单字段数据表(结构自定义)。 4、解释data block , extent 和 segment的区别(这里建议用英文术语) 5、已知表T1中A字段含有重复的数据(A字段非空),请在空白处完成SQL语句,其中第一条语句查询T1标准的记录总数,第二条语句查询T1标准A字段不重复记录总数 三、编程题(10个空格,每个空格2分): 1、 作家信息表Auths包含两个字段
现由于工资调整,对于作家代码在‘A00001’和‘A00006’;之间的作家工资少于或等于五百,则给该作家增加15%的工资,对于大于500到1000之间则增加12%,其它则增加10%。如下程序是通过游标方式实现的,请填写程序中相应的空格。 DECLARE — 声明两个变量,用来接收游标返回的工资和作家代码 v_Salary () v_Code () v_ErrText VARHCAR(200); — 声明游标c_Salary,该游标的结果集是Auths表中作家代码(Author_Code)值是 — ‘A00001’到‘A00006’的工资值(Salary)和作家代码值(Author_Code) CURSOR c_Salary IS SELECT Salary, Author_Code FROM Auths WHERE Author_Code >=’A00001′ AND Author_Code <=’A00006′; BEGIN — 打开游标 LOOP —游标循环,将游标查询结果集中的一行保存到两个临时变量中 () c_Salary INTO v_Salary, v_Code; — 当结果集中没有行是退出 EXIT WHEN (); — 如果该作家的工作少于或等于五百,则给该作家增加15%的工资 — 500到1000之间则增加12%,其他增加10% IF v_Salary <= 500 THEN UPDATE Auths SET Salary = () WHERE Author_Code = v_Code; ELSIF v_Salary <= 1000 THEN UPDATE Auths SET Salary = Salary + Salary * 0.12 WHERE Author_Code = v_Code; () UPDATE Auths SET Salary = Salary + Salary * 0.1 WHERE Author_Code = v_Code; END IF; END LOOP; (); (); EXCEPTION WHEN OTHERS THEN CLOSE c_Salary; ROLLBACK; v_ErrText := (); DBMS_OUTPUT.PUT_LINE(‘程序异常终止,出现一下错误:’||v_ErrText); END; (责任编辑:IT) |