UPDATE employees SET sal=30000 WHERE last_name = ‘King’
ROLLBACK TO SAVEPOINT p1
2.
下面哪些运算符用于多行子查询?(选择二项)
>ANY()
AND
NOT IN()
!=
3.
游标的可以是()
更新游标
游标变量
带参数游标
嵌套游标
4.
Choose two space management parameters used to control the free
space usage in a data block.
PCTINCREASE
PCTFREE
PCTALLOCATED
PCTUSED
5.
以下可能使序列SEQUENCE号不连续?
事务回滚
序列号用于其它表
数据库崩溃
修改了序列号的初始值
6.
创建表orders如下:
CREATE TABLE orders (
SER_NO NUMBER UNIQUE,
ORDER_ID NUMBER,
ORDER_DATE DATE NOT NULL
STATUS VARCHARD2(10) CHECK (status IN ( ‘CREDIT’, ‘CASH’)),
PROD_ID_NUMBER REFERENCES PRODUCTS(PRODUCT_ID),
ORD_TOTAL NUMBER PRIMARY KEY (order_id, order_date));
创建哪些列索引(选择二项)
SER_NO
ORDER_ID
STATUS
PROD_ID
ORD_TOTAL
ORDER_ID ,ORDER_DATE 复合索引
7.
empoyees数据如下:下面子查询不正确的是?last_name department_id salary
Last name department id salary
Getz
10
3000
Davis
20
1500
King
20
2200
Davis
30
5000
Kochhar
5000
...
SELECT * FROM employees where salary > (SELECT MIN(salary) FROM employees GROUP BY department.id);
SELECT * FROM employees WHERE salary = (SELECT AVG(salary) FROM employees GROUP BY department_id);
SELECT DISTINCT department_id FROM employees WHERE salary > ANY (SELECT AVG(salary) FROM employees GROUP BY department_id);
SELECT department_id FROM employees WHERE SALARY > ALL (SELECT AVG(salary) FROM employees GROUP BY department_id);
8.
Which dictionary views would give you information about the total
size of a tablespace? (Choose two.)
DBA_TABLESPACES
DBA_TEMP_FILES
DBA_DATA_FILES
DBA_FREE_SPACE
9.
Select the invalid statements from the list below regarding undo
segment management. (Choose all that apply.)
ALTER SYSTEM SET UNDO_TABLESPACE = ROLLBACK;
ALTER DATABASE SET UNDO_TABLESPACE = UNDOTBS;
ALTER SYSTEM SET UNDO_MANAGEMENT = AUTO;
ALTER SYSTEM SET UNDO_MANAGEMENT = MANUAL;
10.
Choose two extent management options available for tablespaces.
Dictionary-managed
Data file-managed
Locally managed
Remote managed
System-managed
11.
EMP结构如下
LAST_NAME
VARCHAR2(25)
SALARY
NUMBER(6,2)
DEPARTMENT_ID NUMBER(6)
查询不属于任何部门的查询:
SELECT LAST_NAME, SALARY, DEPARTMENT_ID FROM EMP WHERE DEPARTMENT_ID = NULL;
应该更改WHERE子句的列名才能显示期望结果
应该更改WHERE子句的操作符才能显示期望结果
应该删除WHERE子句
显示了期望的结果
12.
Look at the result of the following query and choose the best answer.
SELECT PROPERTY_VALUE FROM database_properties
WHERE property_name = 'DEFAULT_TEMP_TABLESPACE';
Newly created users in the database will be assigned APP_TEMP_TS as their temporary tablespace.
Newly created users in the database will be assigned APP_TEMP_TS as their temporary tablespace if the TEMPORARY TABLESPACE clause is omitted in the CREATE USER statement.
Newly created users in the database will be assigned APP_TEMP_TS as their temporary tablespace even if the TEMPORARY TABLESPACE clause is specified in the CREATE USER statement.
Newly created users in the database will be assigned APP_TEMP_TS as their default as well as temporary tablespace, if the DEFAULT TABLESPACE and TEMPORARY TABLESPACE clauses are omitted in the CREATE USER statement.
13.
下面哪个数据字典反映表空间有总容量?
DBA_TABLESPACES
V$TABLESPACE
DBA_FREE_SPACE
DBA_DATA_FILES
14.
下面不是日期的格式码?
ddddFM
SSSS
Minute
yyyySP
15.
下面哪一条SQL语句将创建一个只包含部门号为10的员工数据的新表?
CREATE TABLE ee10 AS (SELECT * FROM employees WHERE department_id=10)
CREATE TABLE ee10, AS (SELECT * FROM employees WHERE department_id=10)
CREATE TABLE (SELECT * FROM employees WHERE department_id=10)
CREATE TABLE 10ee AS (SELECT * FROM employees WHERE department_id=10)
16.
如果你在创建约束时没有指定名字,那么Oracle将自动使用什么名字约定?
PK_n
SYS_n
SYS_Cn
CONS_n
17.
在PL/SQL中,下面 SELECT 语句,如是没有匹配行将会是?
SELECT COUNT(*) INTO V_COUNT
FROM EMP
WHERE SALARY < 10;
发生NO_DATA_FOUND异常
SELECT执行成功
发生TOO_FEW_ROWS 异常
在PL/SQL中不能有COUNT(*)
18.
Which NLS parameter can be specified only as an environment variable?
NLS_LANGUAGE
NLS_LANG
NLS_TERRITORY
NLS_SORT
19.
下面查询职员姓名前3个字?
SELECT SUTBSTR(last_name,1,3) FROM employees;
SELECT SUBSTR(last_name,3,1) FROM employees;
SELECT SUBSTR(last_name,0,3) FROM employees;
SELECT LEFT(last_name3) FROM employees;
20.
表employees中departments含有如下数据:Employees
Last name department_id salary
Getz
10
3000
Davis
20
1500
King
20
2200
Davis
30
5000
Kochhar
5000
Departments
Department_id
Department name
10 Sales
20
Marketing
30
Accounting
40
Administration
编写查询语句得到部门名称和员工姓名,如果没有安排部门的员工也需要显示出来,以下哪个是正确?
SELECT last_name, department_name FROM employees join departments;
SELECT last_name, department_name FROM employees left outer job departments;
SELECT last_name, department_name FROM employees e ,departments d WHERE e.department_id right outer join d.department_id;
SELECT last_name, department_name FROM employees e ,departments d WHERE e.department_id full outer join d.department_id;
21.
When you multiplex the control file, how many control files can you
have for one database?
Four
Eight
Twelve
Unlimited
22.
Which statement allows specifying the parameters PCTFREE and PCTUSED?
CREATE TABLE
ALTER INDEX
ALTER TABLESPACE
All the above
23.
employees表结构些如下:EMPLOYEE_ID
NUMBER
Primary Key
FIRST_NAME VARCHAR2(25)
LAST_NAME
VARCHAR2(25)
NOT NULL
以下哪个语句正确插入employees一条记录?
INSERT INTO employees VALUES ( NULL, ‘John’,’Smith’);
INSERT INTO employees( first_name, last_name) VALUES(’John’,’Smith’);
INSERT INTO employees VALUES (’1000’,’John’,’’);
INSERT INTO employees(first_name,last_name, employee_id) VALUES (’John’,’Smith’,1000);
24.
对执行下面语句的结果,哪一种说法最准确?SELECT DISTINCT department_id,last_name FROM employees
结果中返回的每一行都是惟一的,且都没有空值
每个部门将只显示一次,并随之显示该部门的各个员工姓名
每个部门在结果中只显示一次
将按照员工部门排序
25.
Which data dictionary view would you query to see the temporary
segments in a database?
DBA_SEGMENTS
V$SORT_SEGMENT
DBA_TEMP_SEGMENTS
DBA_TABLESPACES
26.
EMPLOYEES表结构如下:
EMP_ID
NUMBER(4) NOT NULL
LAST_NAME
VARCHAR2(30) NOT NULL
FIRST_NAME
VARCHAR2(30)
DEPT_ID
NUMBER(2)
JOB_CAT
VARCHARD2(30)
SALARY
NUMBER(8,2)
EMP结构如下:
LAST_NAME
VARCNAR2(35) NOT NULL
SALARY
NUMBER(9,2) NOT NULL
COMMISION_PCT NUMBER(4,2)
下面哪一条语句使用约束生效?
ALTER TABLE table_name ENABLE <constraint_name>;
ALTER TABLE table_name ENABLE PRIMARY KEY;
ALTER TABLE table_name ENABLE CONSTRAINT PRMARY KEY <constraint_name>;
ALTER TABLE table_name STATUS ENABLE CONSTRAINT constraint_name;
27.
在PL/SQL中,执行的SELECT语句可以处理多少行数据?
多行,没有限制
多行,但有限制
一行,也可以没有返回
一行,并且只能是一行
28.
下面哪一个SQL语句将删除employees的所有行,如果需要可以恢复被删除的行?
DROP TABLE employees
DELETE employees
TRUNCATE TABLE employees
RELEASE employees
29.
Which command do you use to collect statistics for a table?
ALTER TABLE <TABLE_NAME> COMPUTE STATISTICS
ANALYZE TABLE <TABLE_NAME> COMPUTE STATISTICS
ALTER TABLE <TABLE_NAME> COLLECT STATISTICS
ANALYZE TABLE <TABLE_NAME> COLLECT STATISTICS
30.
下面哪些说法是正确的?
通过ROLLBAK恢复被收删除的表
通过ROLLBACK恢复事务中修改过的记录
通过ROLLBAK恢复被TRUNCATE的数据
ROLLBACK命令总会结束事务
linger_52102 (2008-8-08 09:37:52)
31. 以下哪个语句显示各部门中按职务分类的最高工资?
SELECT dept_id, job_cat, MAX(salary) FROM employees WHERE salary > MAX(salary);
SELECT dept_id, job_cat, MAX(salary) FROM employees GROUP BY dept_id, job_cat;
SELECT dept_id, job_cat, MAX(salary) FROM employees;
SELECT dept_id, job_cat, MAX(salary) FROM employees GROUP BY dept_id;
SELECT dept_id, job_cat, MAX(salary) FROM employees GROUP BY dept_id, job_cat, salary;
32. Which initialization parameter must be set to create a control file
using OMF?
DB_CREATE_SPFILE
DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST_n
CONTROL_FILES
33. 从下面哪个数据字典获得用户创建存储过程的代码?
USER_PROCEDURES
USER_OBJECTS
USER_SOURCE
DBA_VIEWS
34. 以下关于索引的说法正确的是?
创建用索引,总能提高查询的速度
创建主键是,总会创建唯一索引
索引总会使DML操作变慢
即使列上有索引,查询时系统可能不会使用
35. 执行下面代码后X结果为?
Declare
X number :=0;
Y number;
Begin
FOR V_COUNTER in 1 .. 10 LOOP
X := X + Y;
END LOOP;
end;
10
110
100
NULL
36. SELECT中使用以下哪个子句,输出结果不会排序?
GROUP BY
DISTINCT
UNION ALL
ORDER BY
37. 以下哪种不是Oracle数据索引类型()
B*TREE
BITMAP
FUNCATION
CLUSTER
38. students结构如下:
STD_ID NUMBER(4)
COURSE_ID VARCHARD2(10)
START_DATE DATE
END_DATE DATE
当前students没有记录,需要增加主键,哪个语句是正确的?
ALTER TABLE students ADD PRIMARY KEY student_id;
ALTER TABLE students ADD CONSTRAINT PRIMARY KEY (student_id);
ALTER TABLE students ADD CONSTRAINT stud_id_pk PRIMARY KEY student_id;
ALTER TABLE students ADD CONSTRAINT stud_id_pk PRIMARY KEY (student_id);
ALTER TABLE students MODIFY CONSTRAINT stud_id_pk PRIMARY KEY (student_id);
39. 表departments结构如下:DEPARTMENT_ID NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)
下面哪条命令向departments插入新记录?
INSERT INTO departments AS SELECT department_id+1, ’HR’,170,17000 from emp WHERE employee_id=111
INSERT INTO departments SELECT department_id+1, ’HR’,170,17000 from emp WHERE employee_id=111
INSERT INTO departments VALUE (65,‘HR’,1700,1700);
INSERT departments VALUES(65,‘HR’,1700,1700);
40. Which parameter is used to set up the directory for Oracle to create
data files, if you do not specify a file name in the DATAFILE clause
when creating or altering tablespaces?
DB_FILE_CREATE_DEST
DB_CREATE_FILE_DEST
DB_8K_CACHE_SIZE
USER_DUMP_DEST
DB_CREATE_ONLINE_LOG_DEST_1
41. Which SQL*Plus command can you use to see whether the database
is in ARCHIVELOG mode?
SHOW DB MODE
ARCHIVELOG LIST
ARCHIVE LOG LIST
LIST ARCHIVELOG
42. 下面的查询,哪一个子句将使查询返回一个出错消息?
SELECT last_name
FROM employees
WHERE salary>
(SELECT avg(salary)
FROM employees
GROUP BY department_id);
SELECT last_name
WHERE salary >
SELECT avg(salary)
GROUP BY department_id
43. 在USER_CONSTRAINTS数据字典中“非空”约束标识是?
C
P
R
F
44. Which storage parameter is used to make sure that each extent is a
multiple of the value specified?
MINEXTENTS
INITIAL
MINIMUM EXTENT
MAXEXTENTS
45. The following are the steps required for relocating a data file belonging
to the USERS tablespace. Choose the correct order in which the
steps are to be performed.
1. Copy the file /disk1/users01.dbf to /disk2/users01.dbf
using an operating system command.
2. ALTER DATABASE RENAME FILE ‘/disk1/users01.dbf’ TO ‘/disk2/users01.dbf’
3. ALTER TABLESPACE USERS OFFLINE
4. ALTER TABLESPACE USERS ONLINE
1, 2, 3, 4
3, 1, 2, 4
3, 2, 1, 4
4, 2, 1, 3
46. 以下对描述正确的是:
表必须有一个主键
表可以有多个主键
表可以有多个唯一键
必须用外建连接两个表
47. 对以下语句,描述正确的是:
SELECT empno,ename,sal FROM emp e WHERE sal >
(SELECT max(min(sal)) sal FROM emp d WHERE d.mgr=e.empno GROUP BY deptno)
使用关联单行子查询
使用关联多行子查询
使用非关联单行子查询
使用非关联多行子查询
48. 下面哪一个不是有效表名
DeptEE
$EE
员工信息表
“_dept”
49. 以下说法中正确的是?
可以创建视图是只读的
视图可以基于多个表的连接,并定时更新连接数据
视图定义存储在数据字典中
视图SELECT可以带输入参数
50. 下面哪个语句查询年薪在$10,000以上的所有员工姓名?
SELECT last_name FROM employees WHERE salary * 12 > to_number(‘$10,000’,’$99,999’)
SELECT last_name FROM employees WHERE salary * 12 > to_number($10,000,’$99,999’)
SELECT last_name FROM employees WHERE salary * 12 > ‘10000’
SELECT last_name FROM employees WHERE salary * 12 > 10,000
NVL(TO_CHAR(commission_pct), 'No Commission') COMM
FROM employees;
7、对职务进行分类: AD_PRES
A ST_MAN
B IT_PROG
C SA_REP
D ST_CLERK
E
答:
SELECT job_id, decode (job_id,
'
ST_CLERK', 'E',
'SA_REP', 'D',
'IT_PROG', 'C',
'ST_MAN', 'B',
'AD_PRES', 'A',
'0')GRADE
FROM employees;
SELECT job_id, CASE job_id
WHEN 'ST_CLERK' THEN 'E'
WHEN 'SA_REP' THEN 'D'
WHEN 'IT_PROG' THEN 'C'
WHEN 'ST_MAN' THEN 'B'
WHEN 'AD_PRES' THEN 'A'
ELSE '0' END GRADE
FROM employees;
8、查询入职日期在Feb 20,1998, 和 May 1, 1998,按入职日期从先到后排序。 答:
SELECT *
FROM employees; WHERE hire_date BETEEN to_date(‘Feb 20,1998’,’Mon dd,yyyy’,’nls_date_language=american’)
AND to_date(‘May 01,1998’,’Mon dd,yyyy’,’nls_date_language=american’)
第五章 多表连接
1、 显示所有职员的last name, department ID, 和department name。
3、查询user_views,获取视图的查询语句。
答: SELECT * FROM user_views; 第十三章 其它数据库对象1、 创建序列号<姓名>_dept_seq用于<姓名>_DEPARTMENTS主键值,序列从200开始最大值不超过1000。 答:
CREATE SEQUENCE my_dept_seq
START WITH 200
MAXVALUE 1000;
2、查询user_sequences获得序列号的信息。
答:
SELECT sequence_name, increment_by, last_number
FROM user_sequences
WHERE sequence_name=’…’;
SELECT sequence_name, increment_by, last_number
FROM seq
WHERE sequence_name=’…’;
3、<姓名>_employees上的外键(department_id)创建非唯一索引<姓名>_emp_deptid_ind
答: CREATE INDEX my_emp_deptid_ind ON my_employees(department_di); 4、在<姓名>_employees上创建复合索引,(department_id,manager_id)
答: CREATE INDEX my_emp_dept_mgr_ind ON my_employees(department_di,manager_id);
5、查询user_indexes 获得索引的信息。
答:
SELECT * FROM user_indexes where table_name=’..’;
第十四章集合运算
1、使用集合运算,显示不包含ST_CLERK职务的department ID。
答:
SELECT department_id
FROM departments
MINUS
SELECT department_id
FROM employees
WHERE job_id = 'ST_CLERK';
2、使用集合运算,列出部门10, 50,和20的job ID和department ID。
答:
SELECT job_id, department_id, 'x' dummy
FROM employees
WHERE department_id = 10
UNION ALL
SELECT job_id, department_id, 'y'
FROM employees
WHERE department_id = 50
UNION ALL
SELECT job_id, department_id, 'z'
FROM employees
WHERE department_id = 20
ORDER BY 3;
3、写出复合结果,包含: (1)EMPLOYEES的所有职员的last name 和 department id (2)DEPARTMENTS的所有部门department id 和department name
1、以下声明是否正确,为什么?
a. DECLARE
v_id NUMBER(4);
b. DECLARE
v_x, v_y, v_z VARCHAR2(10);
c. DECLARE
v_birthdate DATE NOT NULL;
d. DECLARE
v_in_stock BOOLEAN := 1;
答: a true b false c false d false
2、以下语句是否正确?
a. v_days_to_go := v_due_date - SYSDATE;
b. v_sender := USER || ’: ’ || TO_CHAR(v_dept_no);
c. v_sum := $100,000 + $250,000;
d. v_flag := TRUE;
e. v_n1 := v_n2 > (2 * v_n3);
f. v_value := NULL;
答:a true b true c false d true e true f true
3、创建PL/SQL块,在屏幕上输出“My PL/SQL Block Works”
答:
SET SERVEROUTPUT ON
BEGIN
DBMS_OUTPUT.PUT_LINE(’My PL/SQL Block Works’);
END;
4、PL/SQL块中声明两个变量并进行赋值。
V_CHAR Character (variable length)
V_NUM Number
V_CHAR 值为’42 is the answer’
V_NUM 值为V_CHAR的长度
答:
DECLARE
V_char varchar2(100);
V_num number;
BEGIN
V_char:=’ 42 is the answer’;
V_num:=length(v_char);
END;
5、计算以上程序后,在指定位置上变量值为:
a. V_WEIGHT 在位置1是:2
b. V_NEW_LOCN在位置1是:Western Europe
c. V_WEIGHT在位置2是:601
d. V_MESSAGE在位置2是:Product 10012 is in stock
e. V_NEW_LOCN在位置2是:Illegal because v_new_locn is not visible outside the subblock.
第三章 数据库操作
1、创建PL/SQL块,在屏幕上显示DEPARTMENTS中最大的部门编号。
答:
VAR g_max_deptno NUMBER
DECLARE
v_max_deptno NUMBER;
BEGIN
SELECT max(department_id)
INTO v_max_deptno
FROM departments; _max_deptno := v_max_deptno;
END;
/
print g_max_deptno
2、插入新部门信息,部门编号为当前最大部门编号上增加10。(使用SQL*PLUS的VAR定义新部门的department_name)
答:
VARIABLE dname VARCHAR(20)
EXEC :dname:=’Education’
DECLARE
v_max_deptno departments.department_id%TYPE;
BEGIN
SELECT MAX(department_id) + 10
INTO v_max_deptno
FROM departments;
INSERT INTO departments (department_id, department_name,
location_id)
VALUES (v_max_deptno, :dname, NULL);
COMMIT;
END;
UPDATE employees SET salary = salary * 1.1 WHERECURRENTOF emp_cur;
ENDLOOP;
COMMIT; END;[size=10.5pt]
[size=10.5pt]
linger_52102 (2008-8-08 09:53:27)
第六章 异常处理
1、编写PL/SQL块,查询职员的last name 和salary:
a. 使用var定义输入的salary;
b. 如果没有找匹配salary,则显示“No employee with a salary of <salary>.”;
c. 如果只返回一行,将记录插入到MESSAGES表中,记录包括last_name和salary;
d. 其它错误的,则显示“Some other error occurred.”;
e. MESSAGE表如下:
答:
VAR emp_sal NUMBER
EXEC :emp_sal:=6000
DECLARE
v_ename employees.last_name%TYPE;
v_sal employees.salary%TYPE := :emp_sal;
BEGIN
SELECT last_name
INTO v_ename
FROM employees
WHERE salary = v_sal;
INSERT INTO messages (results)
VALUES (v_ename || ’ - ’ || v_sal);
EXCEPTION
WHEN no_data_found THEN
INSERT INTO messages (results)
VALUES (’No employee with a salary of ’|| TO_CHAR(v_sal));
WHEN too_many_rows THEN
INSERT INTO messages (results)
VALUES (’More than one employee with a salary of ’||
TO_CHAR(v_sal));
WHEN others THEN
INSERT INTO messages (results)
VALUES (’Some other error occurred.’);
END;
2、创建PL/SQL块,在指定的工资范围(salary-100,salary+100)查找员工的数目,要求:
a 使用var定义v_salar,指定查询工资
b 使用var定义g_message, 用于存储输出信息变量
c 定义以下异常情况
e_no_emp_returned:当没有找到员工时,将字串“There is no employee salary between <v_sal-100> and <v_sal+100>”赋给g_message;
e_more_than_one_emp: 当找到员工数目多于一个时,将字串“There is/are <number of emp> between <v_sal-100> and <v_sal+100>” 赋给g_message;
other:其它异常时将“Some other error occurred.” 赋给g_message;
答:
VARIABLE g_message VARCHAR2(100)
VARIABLE v_sal number
EXEC :v_sal:=7000
DECLARE
v_sal employees.salary%TYPE := :v_sal;
v_low_sal employees.salary%TYPE := v_sal - 100;
v_high_sal employees.salary%TYPE := v_sal + 100;
v_no_emp NUMBER(7);
e_no_emp_returned EXCEPTION;
e_more_than_one_emp EXCEPTION;
BEGIN
SELECT count(last_name)
INTO v_no_emp
FROM employees
where salary between v_low_sal and v_high_sal;
IF v_no_emp = 0 THEN
RAISE e_no_emp_returned;
ELSIF v_no_emp > 0 THEN
RAISE e_more_than_one_emp;
END IF;
EXCEPTION
WHEN e_no_emp_returned THEN _message := ’There is no employee salary between ’||
TO_CHAR(v_low_sal) || ’ and ’||
TO_CHAR(v_high_sal);
WHEN e_more_than_one_emp THEN _message := ’There is/are ’|| TO_CHAR(v_no_emp) ||
’ employee(s) with a salary between ’||
TO_CHAR(v_low_sal) || ’ and ’||
TO_CHAR(v_high_sal);
WHEN others THEN _message := ’Some other error occurred.’;
END;
/
答:
CREATE OR REPLACE PROCEDURE add_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE)
IS
BEGIN
INSERT INTO jobs (job_id, job_title)
VALUES (p_jobid, p_jobtitle);
COMMIT;
END add_job;
答:
CREATE OR REPLACE PROCEDURE upd_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE)
IS
BEGIN
UPDATE jobs
SET job_title = p_jobtitle
WHERE job_id = p_jobid;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20202,’No job updated.’);
END IF;
END upd_job;
3、创建存储过程del_job删除职务。Job_id参数据输入,如果找不到指定的职务,则终断程序的运行返回ORA-20203,’No jobs deleted.’错误; 使用存储过程upd_job删除以下职务:’IT_DBA’
答:
CREATE OR REPLACE PROCEDURE del_job
(p_jobid IN jobs.job_id%TYPE)
IS
BEGIN
DELETE FROM jobs
WHERE job_id = p_jobid;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20203,’No jobs deleted.’);
END IF;
END DEL_JOB;
答:
CREATE OR REPLACE PROCEDURE query_emp
(p_empid IN employees.employee_id%TYPE,
p_sal OUT employees.salary%TYPE,
p_job OUT employees.job_id%TYPE)
IS
BEGIN
SELECT salary, job_id
INTO p_sal, p_job
FROM employees
WHERE employee_id = p_empid;
END query_emp;
答:
CREATE OR REPLACE FUNCTION q_job
(p_jobid IN jobs.job_id%TYPE)
RETURN VARCHAR2
IS
v_jobtitle jobs.job_title%TYPE;
BEGIN
SELECT job_title
INTO v_jobtitle
FROM jobs
WHERE job_id = p_jobid;
RETURN (v_jobtitle);
END q_job;
答:
CREATE OR REPLACE FUNCTION annual_comp
(p_sal IN employees.salary%TYPE,
p_comm IN employees.commission_pct%TYPE)
RETURN NUMBER
IS
BEGIN
RETURN (NVL(p_sal,0) * 12 + (NVL(p_comm,0)* p_sal * 12));
END annual_comp;
/
7、创建包job_pkg包含:
PROCEDURE ADD_JOB
PROCEDURE UPD_JOB
PROCEDURE DEL_JOB
FUNCTION Q_JOB
答:
CREATE OR REPLACE PACKAGE job_pack IS
PROCEDURE add_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE);
PROCEDURE upd_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE);
PROCEDURE del_job
(p_jobid IN jobs.job_id%TYPE);
FUNCTION q_job
(p_jobid IN jobs.job_id%TYPE)
RETURN VARCHAR2;
END job_pack;
/
CREATE OR REPLACE PACKAGE BODY job_pack IS
PROCEDURE add_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE)
IS
BEGIN
INSERT INTO jobs (job_id, job_title)
VALUES (p_jobid, p_jobtitle);
END add_job;
PROCEDURE upd_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE)
IS
BEGIN
UPDATE jobs
SET job_title = p_jobtitle
WHERE job_id = p_jobid;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20202,’No job updated.’);
END IF;
END upd_job;
PROCEDURE del_job
(p_jobid IN jobs.job_id%TYPE)
IS
BEGIN
DELETE FROM jobs
WHERE job_id = p_jobid;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR (-20203,’No job deleted.’);
END IF;
END del_job;
FUNCTION q_job
(p_jobid IN jobs.job_id%TYPE)
RETURN VARCHAR2
IS
v_jobtitle jobs.job_title%TYPE;
BEGIN
SELECT job_title
INTO v_jobtitle
FROM jobs
WHERE job_id = p_jobid;
RETURN (v_jobtitle);
END q_job;
END job_pack;
/
8、创建触发器check_sal,当新salar小于旧的salary时终断执行并返回-20002,’Salary may not be reduced’错误。
答:
CREATE OR REPLACE TRIGGER check_sal
BEFORE UPDATE OF salary ON employees
FOR EACH ROW
WHEN (NEW.salary < OLD.salary)
BEGIN
RAISE_APPLICATION_ERROR(-20002,’Salary may not be reduced’);
END check_sal;
linger_52102 (2008-8-08 09:55:57)
第一章 PL/SQL概述
1、PL/SQL程序单元称为什么?由哪几部分组成?每部分的作用是什么?
2、使用PL/SQL编写哪些数据库对象?
第二章 PL/SQL块
1、以下声明不正确,为什么?
a. DECLARE
v_id NUMBER(4);
b. DECLARE
v_x, v_y, v_z VARCHAR2(10);
c. DECLARE
v_birthdate DATE NOT NULL;
d. DECLARE
v_in_stock BOOLEAN := 1;
2、以下语句是否正确?
a. v_days_to_go := v_due_date - SYSDATE;
b. v_sender := USER || ’: ’ || TO_CHAR(v_dept_no);
c. v_sum := $100,000 + $250,000;
d. v_flag := TRUE;
e. v_n1 := v_n2 > (2 * v_n3);
f. v_value := NULL;
3、创建PL/SQL块,在屏幕上输出“My PL/SQL Block Works”
4、PL/SQL块中声明两个变量并进行赋值。
V_CHAR Character (variable length)
V_NUM Number
V_CHAR 值为’42 is the answer’
V_NUM 值为V_CHAR的长度
5、计算以上程序后,在指定位置上变量值为:
a. V_WEIGHT 在位置1是:
b. V_NEW_LOCN在位置1是:
c. V_WEIGHT在位置2是:
d. V_MESSAGE在位置2是:
e. V_NEW_LOCN在位置2是:
1、编写PL/SQL块,查询职员的last name 和salary:
a. 使用var定义输入的salary;
b. 如果没有找匹配salary,则显示“No employee with a salary of <salary>.”;
c. 如果只返回一行,将记录插入到MESSAGES表中,记录包括last_name和salary;
d. 其它错误的,则显示“Some other error occurred.”;
e. MESSAGE表如下:
2、创建PL/SQL块,在指定的工资范围(salary-100,salary+100)查找员工的数目,要求:
a 使用var定义v_salar,指定查询工资
b 使用var定义g_message, 用于存储输出信息变量
c 定义以下异常情况
e_no_emp_returned:
当没有找到员工时,将字串“There is no employee salary between <v_sal-100> and <v_sal+100>”赋给g_message;
e_more_than_one_emp:
当找到员工数目多于一个时,将字串“There is/are <number of emp> between <v_sal-100> and <v_sal+100>” 赋给g_message;
other:
其它异常时将“Some other error occurred.” 赋给g_message;
5. Which of the following are acceptable to the Java compiler:
if (2 == 3) System.out.println("Hi");
if (2 = 3) System.out.println("Hi");
if (true) System.out.println("Hi");
if (2 != 3) System.out.println("Hi");
if (aString.equals("hello")) System.out.println("Hi");
6. Which of the following do not lead to a runtime error?
9. public class MethodOver{public void setVar(int a, int b, float c){}}which overload the setVar?
private void setVar(int a, float c, int b){}
protected void setVar(int a, int b, float c){}
public int setVar(int a, float c, int b){return a;}
public int setVar(int a, float c){return a;}
10. which three are valid declaraction of a float?
Object[] object = new Person[2];
Person [] person = new Person [3];
person = (Person [])object;
int[] i = new int[2];
long[] l = new int[3];
i = (long[])l;
23. What will be the result of compiling the following code:
public class Test {
public static void main (String args []) {
int age;
age = age + 1;
System.out.println("The age is " + age);
}
}
Compiles and runs with no output
Compiles and runs printing out The age is 1
Compiles but generates a runtime error
Does not compile
Compiles but generates a compile time error
32. class Child extends Parents{}
class Parents{}
是否可以这样声明类,在一个文件中?
可以
不可以
33. 给出下列的代码,哪行在编译时可能会有错误?
① public void modify(){
② int i, j, k;
③ i = 100;
④ while ( i > 0 ){
⑤ j = i * 2;
⑥ System.out.println (" The value of j is " + j );
⑦ k = k + 1;
⑧ }
⑨ }
37. Under what situations do you obtain a default constructor?
When you define any class
When the class has no other constructors
When you define at least one constructor
38. 方法名是否可以与构造器的名字相同?
可以
不可以
39. 在try-catch-final块中的退出语句。
public class Test {
public static void main(String[] args){
int a=1;
try {
a=a/0;
}catch(Exception e){
System.out.println("catch");
return;
}finally{
System.out.println("finally");
}
}
}
控制台显示为:
catch
finally
catch
40. 已知有下列类的说明,则下列哪个语句是正确的?
public class Test
{
private float f = 1.0f;
int m = 12;
static int n=1;
public static void main(String arg[])
{
Test t = new Test();
}
}
48. What will be the result of compiling the following code:
public class Test {
static int age;
public static void main (String args []) {
age = age + 1;
System.out.println("The age is " + age);
}
}
Compiles and runs with no output
Compiles and runs printing out The age is 1
Compiles but generates a runtime error
Does not compile
Compiles but generates a compile time error
最新回复
linger_52102 (2008-8-08 09:37:13)
SQL*PLUS上,执行下面的哪些命令将释放持有的锁?(选择三项)
COMMIT;
TRUNCATE TABLE emp;
ALTER TABLE employees ADD UNIQUE (email);
UPDATE employees SET sal=30000 WHERE last_name = ‘King’
ROLLBACK TO SAVEPOINT p1
2.
下面哪些运算符用于多行子查询?(选择二项)
>ANY()
AND
NOT IN()
!=
3.
游标的可以是()
更新游标
游标变量
带参数游标
嵌套游标
4.
Choose two space management parameters used to control the free
space usage in a data block.
PCTINCREASE
PCTFREE
PCTALLOCATED
PCTUSED
5.
以下可能使序列SEQUENCE号不连续?
事务回滚
序列号用于其它表
数据库崩溃
修改了序列号的初始值
6.
创建表orders如下:
CREATE TABLE orders (
SER_NO NUMBER UNIQUE,
ORDER_ID NUMBER,
ORDER_DATE DATE NOT NULL
STATUS VARCHARD2(10) CHECK (status IN ( ‘CREDIT’, ‘CASH’)),
PROD_ID_NUMBER REFERENCES PRODUCTS(PRODUCT_ID),
ORD_TOTAL NUMBER PRIMARY KEY (order_id, order_date));
创建哪些列索引(选择二项)
SER_NO
ORDER_ID
STATUS
PROD_ID
ORD_TOTAL
ORDER_ID ,ORDER_DATE 复合索引
7.
empoyees数据如下:下面子查询不正确的是?last_name department_id salary
Last name department id salary
Getz
10
3000
Davis
20
1500
King
20
2200
Davis
30
5000
Kochhar
5000
...
SELECT * FROM employees where salary > (SELECT MIN(salary) FROM employees GROUP BY department.id);
SELECT * FROM employees WHERE salary = (SELECT AVG(salary) FROM employees GROUP BY department_id);
SELECT DISTINCT department_id FROM employees WHERE salary > ANY (SELECT AVG(salary) FROM employees GROUP BY department_id);
SELECT department_id FROM employees WHERE SALARY > ALL (SELECT AVG(salary) FROM employees GROUP BY department_id);
8.
Which dictionary views would give you information about the total
size of a tablespace? (Choose two.)
DBA_TABLESPACES
DBA_TEMP_FILES
DBA_DATA_FILES
DBA_FREE_SPACE
9.
Select the invalid statements from the list below regarding undo
segment management. (Choose all that apply.)
ALTER SYSTEM SET UNDO_TABLESPACE = ROLLBACK;
ALTER DATABASE SET UNDO_TABLESPACE = UNDOTBS;
ALTER SYSTEM SET UNDO_MANAGEMENT = AUTO;
ALTER SYSTEM SET UNDO_MANAGEMENT = MANUAL;
10.
Choose two extent management options available for tablespaces.
Dictionary-managed
Data file-managed
Locally managed
Remote managed
System-managed
11.
EMP结构如下
LAST_NAME
VARCHAR2(25)
SALARY
NUMBER(6,2)
DEPARTMENT_ID NUMBER(6)
查询不属于任何部门的查询:
SELECT LAST_NAME, SALARY, DEPARTMENT_ID FROM EMP WHERE DEPARTMENT_ID = NULL;
应该更改WHERE子句的列名才能显示期望结果
应该更改WHERE子句的操作符才能显示期望结果
应该删除WHERE子句
显示了期望的结果
12.
Look at the result of the following query and choose the best answer.
SELECT PROPERTY_VALUE FROM database_properties
WHERE property_name = 'DEFAULT_TEMP_TABLESPACE';
PROPERTY_VALUE
-------------------------
APP_TEMP_TS
Newly created users in the database will be assigned APP_TEMP_TS as their temporary tablespace.
Newly created users in the database will be assigned APP_TEMP_TS as their temporary tablespace if the TEMPORARY TABLESPACE clause is omitted in the CREATE USER statement.
Newly created users in the database will be assigned APP_TEMP_TS as their temporary tablespace even if the TEMPORARY TABLESPACE clause is specified in the CREATE USER statement.
Newly created users in the database will be assigned APP_TEMP_TS as their default as well as temporary tablespace, if the DEFAULT TABLESPACE and TEMPORARY TABLESPACE clauses are omitted in the CREATE USER statement.
13.
下面哪个数据字典反映表空间有总容量?
DBA_TABLESPACES
V$TABLESPACE
DBA_FREE_SPACE
DBA_DATA_FILES
14.
下面不是日期的格式码?
ddddFM
SSSS
Minute
yyyySP
15.
下面哪一条SQL语句将创建一个只包含部门号为10的员工数据的新表?
CREATE TABLE ee10 AS (SELECT * FROM employees WHERE department_id=10)
CREATE TABLE ee10, AS (SELECT * FROM employees WHERE department_id=10)
CREATE TABLE (SELECT * FROM employees WHERE department_id=10)
CREATE TABLE 10ee AS (SELECT * FROM employees WHERE department_id=10)
16.
如果你在创建约束时没有指定名字,那么Oracle将自动使用什么名字约定?
PK_n
SYS_n
SYS_Cn
CONS_n
17.
在PL/SQL中,下面 SELECT 语句,如是没有匹配行将会是?
SELECT COUNT(*) INTO V_COUNT
FROM EMP
WHERE SALARY < 10;
发生NO_DATA_FOUND异常
SELECT执行成功
发生TOO_FEW_ROWS 异常
在PL/SQL中不能有COUNT(*)
18.
Which NLS parameter can be specified only as an environment variable?
NLS_LANGUAGE
NLS_LANG
NLS_TERRITORY
NLS_SORT
19.
下面查询职员姓名前3个字?
SELECT SUTBSTR(last_name,1,3) FROM employees;
SELECT SUBSTR(last_name,3,1) FROM employees;
SELECT SUBSTR(last_name,0,3) FROM employees;
SELECT LEFT(last_name3) FROM employees;
20.
表employees中departments含有如下数据:Employees
Last name department_id salary
Getz
10
3000
Davis
20
1500
King
20
2200
Davis
30
5000
Kochhar
5000
Departments
Department_id
Department name
10 Sales
20
Marketing
30
Accounting
40
Administration
编写查询语句得到部门名称和员工姓名,如果没有安排部门的员工也需要显示出来,以下哪个是正确?
SELECT last_name, department_name FROM employees join departments;
SELECT last_name, department_name FROM employees left outer job departments;
SELECT last_name, department_name FROM employees e ,departments d WHERE e.department_id right outer join d.department_id;
SELECT last_name, department_name FROM employees e ,departments d WHERE e.department_id full outer join d.department_id;
21.
When you multiplex the control file, how many control files can you
have for one database?
Four
Eight
Twelve
Unlimited
22.
Which statement allows specifying the parameters PCTFREE and PCTUSED?
CREATE TABLE
ALTER INDEX
ALTER TABLESPACE
All the above
23.
employees表结构些如下:EMPLOYEE_ID
NUMBER
Primary Key
FIRST_NAME VARCHAR2(25)
LAST_NAME
VARCHAR2(25)
NOT NULL
以下哪个语句正确插入employees一条记录?
INSERT INTO employees VALUES ( NULL, ‘John’,’Smith’);
INSERT INTO employees( first_name, last_name) VALUES(’John’,’Smith’);
INSERT INTO employees VALUES (’1000’,’John’,’’);
INSERT INTO employees(first_name,last_name, employee_id) VALUES (’John’,’Smith’,1000);
24.
对执行下面语句的结果,哪一种说法最准确?SELECT DISTINCT department_id,last_name FROM employees
结果中返回的每一行都是惟一的,且都没有空值
每个部门将只显示一次,并随之显示该部门的各个员工姓名
每个部门在结果中只显示一次
将按照员工部门排序
25.
Which data dictionary view would you query to see the temporary
segments in a database?
DBA_SEGMENTS
V$SORT_SEGMENT
DBA_TEMP_SEGMENTS
DBA_TABLESPACES
26.
EMPLOYEES表结构如下:
EMP_ID
NUMBER(4) NOT NULL
LAST_NAME
VARCHAR2(30) NOT NULL
FIRST_NAME
VARCHAR2(30)
DEPT_ID
NUMBER(2)
JOB_CAT
VARCHARD2(30)
SALARY
NUMBER(8,2)
EMP结构如下:
LAST_NAME
VARCNAR2(35) NOT NULL
SALARY
NUMBER(9,2) NOT NULL
COMMISION_PCT NUMBER(4,2)
下面哪一条语句使用约束生效?
ALTER TABLE table_name ENABLE <constraint_name>;
ALTER TABLE table_name ENABLE PRIMARY KEY;
ALTER TABLE table_name ENABLE CONSTRAINT PRMARY KEY <constraint_name>;
ALTER TABLE table_name STATUS ENABLE CONSTRAINT constraint_name;
27.
在PL/SQL中,执行的SELECT语句可以处理多少行数据?
多行,没有限制
多行,但有限制
一行,也可以没有返回
一行,并且只能是一行
28.
下面哪一个SQL语句将删除employees的所有行,如果需要可以恢复被删除的行?
DROP TABLE employees
DELETE employees
TRUNCATE TABLE employees
RELEASE employees
29.
Which command do you use to collect statistics for a table?
ALTER TABLE <TABLE_NAME> COMPUTE STATISTICS
ANALYZE TABLE <TABLE_NAME> COMPUTE STATISTICS
ALTER TABLE <TABLE_NAME> COLLECT STATISTICS
ANALYZE TABLE <TABLE_NAME> COLLECT STATISTICS
30.
下面哪些说法是正确的?
通过ROLLBAK恢复被收删除的表
通过ROLLBACK恢复事务中修改过的记录
通过ROLLBAK恢复被TRUNCATE的数据
ROLLBACK命令总会结束事务
linger_52102 (2008-8-08 09:37:52)
SELECT dept_id, job_cat, MAX(salary) FROM employees WHERE salary > MAX(salary);
SELECT dept_id, job_cat, MAX(salary) FROM employees GROUP BY dept_id, job_cat;
SELECT dept_id, job_cat, MAX(salary) FROM employees;
SELECT dept_id, job_cat, MAX(salary) FROM employees GROUP BY dept_id;
SELECT dept_id, job_cat, MAX(salary) FROM employees GROUP BY dept_id, job_cat, salary;
32. Which initialization parameter must be set to create a control file
using OMF?
DB_CREATE_SPFILE
DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST_n
CONTROL_FILES
33. 从下面哪个数据字典获得用户创建存储过程的代码?
USER_PROCEDURES
USER_OBJECTS
USER_SOURCE
DBA_VIEWS
34. 以下关于索引的说法正确的是?
创建用索引,总能提高查询的速度
创建主键是,总会创建唯一索引
索引总会使DML操作变慢
即使列上有索引,查询时系统可能不会使用
35. 执行下面代码后X结果为?
Declare
X number :=0;
Y number;
Begin
FOR V_COUNTER in 1 .. 10 LOOP
X := X + Y;
END LOOP;
end;
10
110
100
NULL
36. SELECT中使用以下哪个子句,输出结果不会排序?
GROUP BY
DISTINCT
UNION ALL
ORDER BY
37. 以下哪种不是Oracle数据索引类型()
B*TREE
BITMAP
FUNCATION
CLUSTER
38. students结构如下:
STD_ID NUMBER(4)
COURSE_ID VARCHARD2(10)
START_DATE DATE
END_DATE DATE
当前students没有记录,需要增加主键,哪个语句是正确的?
ALTER TABLE students ADD PRIMARY KEY student_id;
ALTER TABLE students ADD CONSTRAINT PRIMARY KEY (student_id);
ALTER TABLE students ADD CONSTRAINT stud_id_pk PRIMARY KEY student_id;
ALTER TABLE students ADD CONSTRAINT stud_id_pk PRIMARY KEY (student_id);
ALTER TABLE students MODIFY CONSTRAINT stud_id_pk PRIMARY KEY (student_id);
39. 表departments结构如下:DEPARTMENT_ID NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)
下面哪条命令向departments插入新记录?
INSERT INTO departments AS SELECT department_id+1, ’HR’,170,17000 from emp WHERE employee_id=111
INSERT INTO departments SELECT department_id+1, ’HR’,170,17000 from emp WHERE employee_id=111
INSERT INTO departments VALUE (65,‘HR’,1700,1700);
INSERT departments VALUES(65,‘HR’,1700,1700);
40. Which parameter is used to set up the directory for Oracle to create
data files, if you do not specify a file name in the DATAFILE clause
when creating or altering tablespaces?
DB_FILE_CREATE_DEST
DB_CREATE_FILE_DEST
DB_8K_CACHE_SIZE
USER_DUMP_DEST
DB_CREATE_ONLINE_LOG_DEST_1
41. Which SQL*Plus command can you use to see whether the database
is in ARCHIVELOG mode?
SHOW DB MODE
ARCHIVELOG LIST
ARCHIVE LOG LIST
LIST ARCHIVELOG
42. 下面的查询,哪一个子句将使查询返回一个出错消息?
SELECT last_name
FROM employees
WHERE salary>
(SELECT avg(salary)
FROM employees
GROUP BY department_id);
SELECT last_name
WHERE salary >
SELECT avg(salary)
GROUP BY department_id
43. 在USER_CONSTRAINTS数据字典中“非空”约束标识是?
C
P
R
F
44. Which storage parameter is used to make sure that each extent is a
multiple of the value specified?
MINEXTENTS
INITIAL
MINIMUM EXTENT
MAXEXTENTS
45. The following are the steps required for relocating a data file belonging
to the USERS tablespace. Choose the correct order in which the
steps are to be performed.
1. Copy the file /disk1/users01.dbf to /disk2/users01.dbf
using an operating system command.
2. ALTER DATABASE RENAME FILE ‘/disk1/users01.dbf’ TO ‘/disk2/users01.dbf’
3. ALTER TABLESPACE USERS OFFLINE
4. ALTER TABLESPACE USERS ONLINE
1, 2, 3, 4
3, 1, 2, 4
3, 2, 1, 4
4, 2, 1, 3
46. 以下对描述正确的是:
表必须有一个主键
表可以有多个主键
表可以有多个唯一键
必须用外建连接两个表
47. 对以下语句,描述正确的是:
SELECT empno,ename,sal FROM emp e WHERE sal >
(SELECT max(min(sal)) sal FROM emp d WHERE d.mgr=e.empno GROUP BY deptno)
使用关联单行子查询
使用关联多行子查询
使用非关联单行子查询
使用非关联多行子查询
48. 下面哪一个不是有效表名
DeptEE
$EE
员工信息表
“_dept”
49. 以下说法中正确的是?
可以创建视图是只读的
视图可以基于多个表的连接,并定时更新连接数据
视图定义存储在数据字典中
视图SELECT可以带输入参数
50. 下面哪个语句查询年薪在$10,000以上的所有员工姓名?
SELECT last_name FROM employees WHERE salary * 12 > to_number(‘$10,000’,’$99,999’)
SELECT last_name FROM employees WHERE salary * 12 > to_number($10,000,’$99,999’)
SELECT last_name FROM employees WHERE salary * 12 > ‘10000’
SELECT last_name FROM employees WHERE salary * 12 > 10,000
linger_52102 (2008-8-08 09:40:19)
1、创建连接服务器连接字oraser,使用SQL*PLUS连接数据库。
SQL>CONNECT SCOTT/TIGER@ORASER
SQL>CONNECT HR/HR@ORASER
2、在ER模型中以下表示什么关系:
3、描述下表的之间的关系:COUNTRIES
DEPARTMENTS
EMPLOYEES
JOBS
JOB_HISTORY
LOCATIONS
REGIONS
.
第二章 编写基本的SQL SELECT语句
1、下面语句是否正确执行:
SELECT last_name, job_id, salary AS Sal
FROM employees;
答:
True
SELECT *
FROM job_grades;
答:
True
2、指出下面语句的错误:
SELECT employee_id, last_name
sal x 12 ANNUAL SALARY
FROM employees;
答:
没有SAL列,SALARY
*乘法
列号没有空格,ANNUAL_SALARY 或 “ANNUAL_SALARY”
last name 与 sal 列之间使用“,”分隔
3、显示DEPARTMENTS结构并查询所有数据。
答:
DESCRIBE departments
SELECT *
FROM departments;
4、显示EMPLOYEES结构,并查询表中单一的JOB结果。
答:
DESCRIBE employees
SELECT DISTINCT job_id
FROM employees;
第三章 限制和排序
1、查询工资超过12000的职员。
答:
SELECT last_name, salary
FROM employees
WHERE salary > 12000;
2、查询编号为176的职员last name和department id。
答:
SELECT last_name, department_id
FROM employees
WHERE employee_id = 176;
3、查询工资不在5000到12000范围内的职员。
答:
SELECT last_name, salary
FROM employees
WHERE salary NOT BETWEEN 5000 AND 12000;
4、查询没有经理的职员的姓名职务。
答:
SELECT last_name, job_id
FROM employees
WHERE manager_id is null;
5、查询last name中有“a”的职员姓名和工资,工资从高到低排序。
答:
SELECT last_name,salary
FROM employees
WHERE last_name like ‘%a%’
ORDER BY salary desc;
6、查询所有职员的last name, job, salary ,其职务是Sales representative 或Stock clerk ,并且工资不等于2,500, 3,500, 或 $7,000。以入职的先后顺序排列。
答:
SELECT last_name, job_id, salary
FROM employees
WHERE job_id IN ('SA_REP', 'ST_CLERK')
AND salary NOT IN (2500, 3500, 7000)
ORDER BY hire_date ASC;
linger_52102 (2008-8-08 09:42:15)
1、显示当前日期,列名为date。
答:
SELECT sysdate "Date"
FROM dual;
2、显示明天是星期几(星期名)?答:
FROM dual;SELECT to_char(sysdate+1 ,’Day’)
3、每个职员增加15%工资(四舍五入到整数),列名为new salary。
答:
SELECT employee_id, last_name, salary,
ROUND(salary * 1.15, 0) "New Salary"
FROM employees;
5、显示今天生日的职员(用Hire_date代替生日)。
答:
SELECT employee_id, last_name, hiredate
SELECT *
FROM employees
WHERE TO_CHAR(hire_date,’mmdd’)=TO_CHAR(sysdate,’mmdd’);
6、显示职员的commission,没有commission时显示“no commission”。
答:
SELECT last_name,
NVL(TO_CHAR(commission_pct), 'No Commission') COMM
FROM employees;
7、对职务进行分类:
AD_PRES
A
ST_MAN
B
IT_PROG
C
SA_REP
D
ST_CLERK
E
答:
SELECT job_id, decode (job_id,
'
ST_CLERK', 'E',
'SA_REP', 'D',
'IT_PROG', 'C',
'ST_MAN', 'B',
'AD_PRES', 'A',
'0')GRADE
FROM employees;
SELECT job_id, CASE job_id
WHEN 'ST_CLERK' THEN 'E'
WHEN 'SA_REP' THEN 'D'
WHEN 'IT_PROG' THEN 'C'
WHEN 'ST_MAN' THEN 'B'
WHEN 'AD_PRES' THEN 'A'
ELSE '0' END GRADE
FROM employees;
8、查询入职日期在Feb 20,1998, 和 May 1, 1998,按入职日期从先到后排序。
答:
FROM employees;SELECT *
WHERE hire_date BETEEN to_date(‘Feb 20,1998’,’Mon dd,yyyy’,’nls_date_language=american’)
AND to_date(‘May 01,1998’,’Mon dd,yyyy’,’nls_date_language=american’)
第五章 多表连接
1、
显示所有职员的last name, department ID, 和department name。
答:
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id(+);
2、显示department ID 为30的职务和所在地点。
答:
SELECT DISTINCT job_id, location_id
FROM employees, departments
WHERE employees.department_id = departments.department_id
AND employees.department_id = 30;
3、显示在Toronto工作的职员last name, job_id, department ID, department name。
答:
SELECT e.last_name, e.job_id, e.department_id,
d.department_name
FROM employees e ,departments d, locations l
WHERE e.department_id = d.department_id
AND
d.location_id = l.location_id
AND
LOWER(l.city) = 'toronto';
SELECT e.last_name, e.job_id, e.department_id,
d.department_name
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
JOIN locations l
ON (d.location_id = l.location_id)
WHERE LOWER(l.city) = 'toronto';
4、显示每个职员的经理last name(没有经理的职员用null显示)。
答:
SELECT w.last_name "Employee", w.employee_id "EMP#",
NVL(m.last_name,’NULL’) "Manager", m.employee_id "Mgr#"
FROM employees w ,employees m
WHERE w.manager_id= m.employee_id(+);
SELECT w.last_name "Employee", w.employee_id "EMP#",
m.last_name "Manager", m.employee_id "Mgr#"
FROM employees w left join employees m
ON (w.manager_id = m.employee_id);
5、显示入职比其经理早的职员名单。
答:
SELECT w.last_name "Employee", w.employee_id "EMP#",
m.last_name "Manager", m.employee_id "Mgr#"
FROM employees w ,employees m
WHERE w.manager_id = m.employee_idAND w.hire_date<m.hire_date;
第六章 分组统计
1、显示所有职员的最高、最低、总计和平均工资。
答:
SELECT ROUND(MAX(salary),0) "Maximum",
ROUND(MIN(salary),0) "Minimum",
ROUND(SUM(salary),0) "Sum",
ROUND(AVG(salary),0) "Average"
FROM employees;
2、每种职务的最高、最低、总计和平均工资。
答:
SELECT job_id, ROUND(MAX(salary),0) "Maximum",
ROUND(MIN(salary),0) "Minimum",
ROUND(SUM(salary),0) "Sum",
ROUND(AVG(salary),0) "Average"
FROM employees
GROUP BY job_id;
3、显示经理的人数。
答:
SELECT COUNT(DISTINCT manager_id) "Number of Managers"
FROM employees;
4、显示工资在5000以上的经理的人数。
答:
FROM employees w, employees mSELECT COUNT(DISTINCT m.employee_id) "Number of Managers"
where w.mamager_id=m.employee_id AND
m.salary>5000;
5、按经理进行分组,显示最少工资在6000以上的组,按工资由高到低进行排序。
答:
SELECT manager_id, MIN(salary)
FROM employees
GROUP BY manager_id
HAVING MIN(salary) > 6000
ORDER BY MIN(salary) DESC;
SELECT manager_id, MIN(salary)
FROM employees
GROUP BY manager_id
HAVING MIN(salary) > 6000
ORDER BY 2 DESC;
6、以下面格式显示入职时间在1995到1998的职员数。
答:
SELECT COUNT(*) total,
SUM(DECODE(TO_CHAR(hire_date, 'YYYY'),1995,1,0))"1995",
SUM(DECODE(TO_CHAR(hire_date, 'YYYY'),1996,1,0))"1996",
SUM(DECODE(TO_CHAR(hire_date, 'YYYY'),1997,1,0))"1997",
SUM(DECODE(TO_CHAR(hire_date, 'YYYY'),1998,1,0))"1998"
FROM employees;
linger_52102 (2008-8-08 09:44:01)
1、显示与Zlotkey 同一部门的职员,但不包含Zlotkey 。
答:
SELECT last_name, hire_date
FROM employees
WHERE department_id = (SELECT department_id
FROM employees
WHERE last_name = 'Zlotkey')
AND last_nae <> 'Zlotkey';
2、显示比所有职员平均工资都高的职员的employee_id和last name。答:
SELECT employee_id, last_name,salary
FROM employees
WHERE salary > (SELECT AVG(salary)
FROM employees);
3、显示last name, department ID, 和 job ID 部门地点ID location ID是1700。
答:
SELECT last_name, department_id, job_id
FROM employees
WHERE department_id IN (SELECT department_id
FROM departments
WHERE location_id = 1700);
4、显示Executive部门的department ID, last name, and job ID。答:
SELECT department_id, last_name, job_id
FROM employees
WHERE department_id IN (SELECT department_id
FROM departments
WHERE department_name = 'Executive');
5、显示比本部门平均工资高的职员的id和last name。答:
SELECT employee_id, last_name
FROM employees w
WHERE salary > (SELECT AVG(salary)
FROM employees m
WHERE m.department_id=w.department_id);
第八章 常用工具1、使用SQL*PLUS以SCOTT/TIGER连接数据库。
1、
将emp结构导出至emp_stru.txt文件。
答:
SQL>SPOOL emp_stru.txt
SQL>DESC emp
SQL>SPOOL OFF
2、
将EMP表数据转换为EXCEL的格式emp.xls。
SQL>SPOOL emp.txt
SQL>SELECT * FROM emp;
SQL>SPOOL OFF
在EXCEL以文本格式打开emp.txt,另存为emp.xls
4、创建显示SCOTT所有表的结构脚本cal_tab_stru.sql。
SQL>SPOOL cal_tab_stru.sql
SQL>SELECT ‘desc ‘||table_name
FROM user_tables;
SQL>SPOOL OFF
SQL>@ cal_tab_rows.sql
第九章 数据维护1、使用下面语句创建表:
CREATE TABLE <姓名>_employess AS SELECT * FROM employees;
2、在 <姓名>_employess表上插入如下行,并提交。
答:
CREATE TABLE my_employee
(id NUMBER(4) CONSTRAINT my_employee_id_nn NOT NULL,
last_name VARCHAR2(25),
first_name VARCHAR2(25),
userid VARCHAR2(8),
salary NUMBER(9,2));
INSERT INTO my_employee
VALUES (1, 'Patel', 'Ralph', 'rpatel', 895);
3、在 <姓名>_employess表上将工资小于为900的改为1000,并提交。
答:
UPDATE my_employee
SET salary = 1000
WHERE salary < 900;
COMMIT;
3、
删除<姓名>_employess表中所有新增的记录数据,并提交。
答:
DELETE my_employee WHERE id IN (1,2,3);
COMMIT;
4、
删除<姓名>_employess表中所有记录数据,并回滚。
答:
DELETE my_employee;
ROLLBACK;
第十章 创建和管理表1、
创建表sz_<姓名>_dept,并将departments的所有行(department_id,department_name)插入 <姓名>_dept。
答:
CREATE TABLE my_dept
(id NUMBER(7),
name VARCHAR2(25));
INSERT INTO my_dept(id,name)
SELECT department_id,department_name FROM departments;
CREATE TABLE mydept
as SELECT department_id “ID”,department_name “NAME”
FROM departments;
CREATE TABLE mydept(id,name)
as SELECT department_id,department_name FROM departments;
2、
创建表<姓名>_emp,并将employees的所有行(employee_id, lastname,first_name, deptment_id)插入 <姓名>_emp。
答:
INSERT INTO my_dept
SELECT department_id, department_
FROM departments;
3、
将<姓名>_emp的结构改为以下结构。
答:
ALTER TABLE my_emp
MODIFY (last_name VARCHAR2(50));
4、
将<姓名>_emp所有数据复制到<姓名>_emp2。
答:
CREATE TABLE my_emp2 AS SELECT * FROM my_emp;
5、将<姓名>_emp2改名为<姓名>_emp_bak,并截断<姓名>_emp_bak。
答:
RENAME
my_emp1 TO my_emp_bak;
TRUNCATE TABLE my_emp_bak;
linger_52102 (2008-8-08 09:45:27)
在<姓名>_emp表上增加主键<姓名>_emp_pk(id)。
答:
ALTER TABLE my_emp
ADD CONSTRAINT my_emp_id_pk PRIMARY KEY (id);
2、在<姓名>_emp表上增加外健<姓名>_emp_fk (dept_id)参照departments(department_id)。
答:
ALTER TABLE my_emp
ADD CONSTRAINT my_emp_dept_id_fk
FOREIGN KEY (dept_id) REFERENCES departments(department_id);
3、<姓名>_emp的last name非空。
答:
ALTER TABLE my_emp MODIFY (last_name not null);
4、在<姓名>_emp增加comm列,创建CHECK约束(comm>=0)。
答:
ALTER TABLE my_emp ADD CONSTRAINT my_emp_comm_ck
CHECK (comm>=0);
5、使以上的CHECK的约束失效。
答:
ALTER TABLE my_emp DISABLE CONSTRAINT my_emp_comm_ck;
第十二章
创建视图1、创建视图<姓名>_EMPLOYEES_VU 基于表EMPLOYEES 的employee numbers、employee names和department IDs,视图使用以下的列名:
答:
CREATE OR REPLACE VIEW my_employees_vu AS
SELECT employee_id, last_name employee, department_id
FROM employees;
2、在<姓名>_EMPLOYEES_DEPT_VU统计每个部门的人数。答:
select department_id,cunt(*)
from my_employees_vu
group by department_id
3、创建视图<姓名>_SALARY_VU 基于表EMPLOYEES, DEPARTMENTS和JOB_GRADES表,视图包含last names, department names, salaries和salary grades,使用Employee, Department, Salary和Grade列名。答:
CREATE OR REPLACE VIEW my_salary_vu
AS
SELECT
e.last_name "Employee",
d.department_name "Department",
e.salary "Salary",
j.grade_level "Grades"
FROM
employees e,
departments d,
job_grades j
WHERE
e.department_id = d.department_id
AND
e.salary BETWEEN j.lowest_sal and j.highest_sal;
3、查询user_views,获取视图的查询语句。
答:
SELECT * FROM user_views;
第十三章 其它数据库对象1、
创建序列号<姓名>_dept_seq用于<姓名>_DEPARTMENTS主键值,序列从200开始最大值不超过1000。
答:
CREATE SEQUENCE my_dept_seq
START WITH 200
MAXVALUE 1000;
2、查询user_sequences获得序列号的信息。
答:
SELECT sequence_name, increment_by, last_number
FROM user_sequences
WHERE sequence_name=’…’;
SELECT sequence_name, increment_by, last_number
FROM seq
WHERE sequence_name=’…’;
3、<姓名>_employees上的外键(department_id)创建非唯一索引<姓名>_emp_deptid_ind答:
CREATE INDEX my_emp_deptid_ind ON my_employees(department_di);
4、在<姓名>_employees上创建复合索引,(department_id,manager_id)
答:
CREATE INDEX my_emp_dept_mgr_ind
ON my_employees(department_di,manager_id);
5、查询user_indexes 获得索引的信息。
答:SELECT * FROM user_indexes where table_name=’..’;
第十四章集合运算
1、使用集合运算,显示不包含ST_CLERK职务的department ID。答:
SELECT department_id
FROM departments
MINUS
SELECT department_id
FROM employees
WHERE job_id = 'ST_CLERK';
2、使用集合运算,列出部门10, 50,和20的job ID和department ID。答:
SELECT job_id, department_id, 'x' dummy
FROM employees
WHERE department_id = 10
UNION ALL
SELECT job_id, department_id, 'y'
FROM employees
WHERE department_id = 50
UNION ALL
SELECT job_id, department_id, 'z'
FROM employees
WHERE department_id = 20
ORDER BY 3;
3、写出复合结果,包含:(1)EMPLOYEES的所有职员的last name 和 department id
(2)DEPARTMENTS的所有部门department id 和department name
答:SELECT last_name,department_id,TO_CHAR(null)
FROM employees
UNION
SELECT TO_CHAR(null),department_id,department_name
FROM departments;
linger_52102 (2008-8-08 09:51:25)
1、PL/SQL概述
1、PL/SQL程序单元称为什么?由哪几部分组成?每部分的作用是什么?
答:
BLOCK
DECLARE 声明变量、数据类型、游标、异常等
EXECUTE 程序主体
EXCEPTION 异常处理
2、使用PL/SQL编写哪些数据库对象?
答:PROCEDURE FUNCTION PACKAGE TRIGGER
2、PL/SQL块
1、以下声明是否正确,为什么?
a. DECLARE
v_id NUMBER(4);
b. DECLARE
v_x, v_y, v_z VARCHAR2(10);
c. DECLARE
v_birthdate DATE NOT NULL;
d. DECLARE
v_in_stock BOOLEAN := 1;
答: a true b false c false d false
2、以下语句是否正确?
a. v_days_to_go := v_due_date - SYSDATE;
b. v_sender := USER || ’: ’ || TO_CHAR(v_dept_no);
c. v_sum := $100,000 + $250,000;
d. v_flag := TRUE;
e. v_n1 := v_n2 > (2 * v_n3);
f. v_value := NULL;
答:a true b true c false d true e true f true
3、创建PL/SQL块,在屏幕上输出“My PL/SQL Block Works”
答:
SET SERVEROUTPUT ON
BEGIN
DBMS_OUTPUT.PUT_LINE(’My PL/SQL Block Works’);
END;
4、PL/SQL块中声明两个变量并进行赋值。
V_CHAR Character (variable length)
V_NUM Number
V_CHAR 值为’42 is the answer’
V_NUM 值为V_CHAR的长度
答:
DECLARE
V_char varchar2(100);
V_num number;
BEGIN
V_char:=’ 42 is the answer’;
V_num:=length(v_char);
END;
5、计算以上程序后,在指定位置上变量值为:
a. V_WEIGHT 在位置1是:2
b. V_NEW_LOCN在位置1是:Western Europe
c. V_WEIGHT在位置2是:601
d. V_MESSAGE在位置2是:Product 10012 is in stock
e. V_NEW_LOCN在位置2是:Illegal because v_new_locn is not visible outside the subblock.
第三章 数据库操作
1、创建PL/SQL块,在屏幕上显示DEPARTMENTS中最大的部门编号。
答:
VAR g_max_deptno NUMBER
DECLARE
v_max_deptno NUMBER;
BEGIN
SELECT max(department_id)
INTO v_max_deptno
FROM departments;
END;
/
print g_max_deptno
2、插入新部门信息,部门编号为当前最大部门编号上增加10。(使用SQL*PLUS的VAR定义新部门的department_name)
答:
VARIABLE dname VARCHAR(20)
EXEC :dname:=’Education’
DECLARE
v_max_deptno departments.department_id%TYPE;
BEGIN
SELECT MAX(department_id) + 10
INTO v_max_deptno
FROM departments;
INSERT INTO departments (department_id, department_name,
location_id)
VALUES (v_max_deptno, :dname, NULL);
COMMIT;
END;
3、将新增加的部门location_id改为1700。(使用SQL*PLUS的VAR定义新部门的location_id)
答:
VAR dept_id NUMBER
VAR dept_loc NUMBER
EXEC :dept_id:=280
EXEC :dept_loc:=1700
DEFINE p_loc = 1700
BEGIN
UPDATE departments
SET location_id = :dept_id
WHERE department_id = :dept_loc;
COMMIT;
END;
4、创建新的PL/SQL块,将增加的部门记录删除。(使用SQL*PLUS的VAR定义新部门号编号)。
答:
VAR dept_id number
EXEC :dept_id:=280
DECLARE
v_result NUMBER(2);
BEGIN
DELETE
FROM departments
WHERE department_id = :dept_id;
v_result := SQL%ROWCOUNT;
COMMIT;
END;
linger_52102 (2008-8-08 09:52:33)
[size=10.5pt]第四章 流程控制
[size=10.5pt]
1、创建表messages (results INT),插入如下记录:[size=10.5pt][size=10.5pt]
答:[size=10.5pt]
[size=10.5pt] [size=10.5pt]CREATE TABLE messages (results VARCHAR2 (60));
[size=10.5pt]
[size=10.5pt]BEGIN
[size=10.5pt]FOR i IN 1..10 LOOP
[size=10.5pt]IF i = 6 or i = 8 THEN
[size=10.5pt]null;
[size=10.5pt]ELSE
[size=10.5pt]INSERT INTO messages(results) VALUES (i);
[size=10.5pt]END IF;
[size=10.5pt]END LOOP;
[size=10.5pt]
[size=10.5pt]COMMIT;
[size=10.5pt]
[size=10.5pt]END;[size=10.5pt]
[size=10.5pt][size=10.5pt]
[size=10.5pt]2[size=10.5pt]、创建[size=10.5pt]PL/SQL[size=10.5pt]块计算职员的奖金:[size=10.5pt][size=10.5pt]a. [size=10.5pt]职员编号由[size=10.5pt]var[size=10.5pt]定义[size=10.5pt][size=10.5pt]b. [size=10.5pt]如果职员的工资小于[size=10.5pt] $5,000[size=10.5pt],奖金为工资的[size=10.5pt]10%[size=10.5pt]c. [size=10.5pt]如果职员的工资在[size=10.5pt] $5,000[size=10.5pt]到[size=10.5pt]$10,000[size=10.5pt],奖金为工资的[size=10.5pt]15%[size=10.5pt]d. [size=10.5pt]如果职员的工资超过[size=10.5pt] $10,000, [size=10.5pt]奖金为工资的[size=10.5pt]20%[size=10.5pt]e. [size=10.5pt]如果职员的工资为空,奖金为[size=10.5pt]0[size=10.5pt]
[size=10.5pt]
答:[size=10.5pt]
[size=10.5pt]VAR v_empno number
[size=10.5pt]
[size=10.5pt]DECLARE
[size=10.5pt]v_sal employees.salary%TYPE;
[size=10.5pt]v_bonus_per NUMBER(7,2);
[size=10.5pt]v_bonus NUMBER(7,2);
[size=10.5pt]BEGIN
[size=10.5pt]SELECT salary
[size=10.5pt]INTO v_sal
[size=10.5pt]FROM employees
[size=10.5pt]WHERE employee_id = :v_empno;
[size=10.5pt]IF v_sal < 5000 THEN
[size=10.5pt]v_bonus_per := .10;
[size=10.5pt]ELSIF v_sal BETWEEN 5000 and 10000 THEN
[size=10.5pt]v_bonus_per := .15;
[size=10.5pt]ELSIF v_sal > 10000 THEN
[size=10.5pt]v_bonus_per := .20;
[size=10.5pt]ELSE
[size=10.5pt]v_bonus_per := 0;
[size=10.5pt]END IF;
[size=10.5pt]v_bonus := v_sal * v_bonus_per;
[size=10.5pt]DBMS_OUTPUT.PUT_LINE (’The bonus for the employee with employee_id ’
[size=10.5pt]|| v_empno || ’ and salary ’ || v_sal || ’ is ’ || v_bonus);
[size=10.5pt]END;[size=10.5pt]
[size=10.5pt][size=10.5pt]第四章 游标
[size=10.5pt]
[size=10.5pt]1[size=10.5pt]、使用游标计算指定部门的职员工资的排名(相同的工资具有相同排名),并存储到[size=10.5pt]dept_temp[size=10.5pt]表中,每次插入前删除所有记录:[size=10.5pt][size=10.5pt]
[size=10.5pt]CREATE TABLE dept_temp
[size=10.5pt](
[size=10.5pt]rank
INT,
[size=10.5pt]department_id
NUMBER(4),
[size=10.5pt]
last_name
VARCHAR2(25),
[size=10.5pt]
job_id
VARCHAR2(10),
[size=10.5pt]salary
NUMBER(8,2)
[size=10.5pt])
[size=10.5pt][size=10.5pt]rank department_id job_id salary
[size=10.5pt]----
------------
------
-----[size=10.5pt]
[size=10.5pt]1
Russell
SA_MAN
14000
2
Partners
SA_MAN
13500
3
Errazuriz
SA_MAN
12000
4
Ozer
SA_REP
11500
5
Cambrault
SA_MAN
11000
5
Abel
SA_REP
11000
7
Zlotkey
SA_MAN
10500
7
Vishney
SA_REP
10500
[size=10.5pt]答:[size=10.5pt]
DECLARE
CURSOR emp_cur(d NUMBER) IS
SELECT last_name, job_id, salary
FROM employees
WHERE department_id = d
ORDER BY salary DESC;
v_prv_sal employees.salary%TYPE;
v_ord
INT := 0;
v_dup
INT := 0;
BEGIN
DELETE dept_temp;
FOR a IN emp_cur(:v_dept) LOOP
IF a.salary = v_prv_sal THEN
v_dup := v_dup + 1;
ELSE
v_ord := v_ord + v_dup + 1;
v_dup := 0;
END IF;
INSERT INTO dept_temp
(rank, last_name, job_id, salary)
VALUES
(v_ord, a.last_name, a.job_id, a.salary);
v_prv_sal := a.salary;
END LOOP;
COMMIT;
END;[size=10.5pt]
[size=10.5pt]
DECLARE
CURSOR emp_cur(d NUMBER) IS
SELECT rank() over(ORDER BY salary DESC) r, last_name, job_id, salary
FROM employees
WHERE department_id = d
ORDER BY salary DESC;
BEGIN
FOR a IN emp_cur(:v_dept) LOOP
INSERT INTO dept_temp
(rank, last_name, job_id, salary)
VALUES
(a.r, a.last_name, a.job_id, a.salary);
END LOOP;
COMMIT;
END;
[size=10.5pt]2[size=10.5pt]、使用嵌套游标显示每个部门的职员名单:[size=10.5pt]10:Administration
WhalenAD_ASST
20:Marketing
HartsteinMK_MAN
FayMK_REP
urchasing
30
RaphaelyPU_MAN
KhooPU_CLERK
BaidaPU_CLERK
TobiasPU_CLERK
HimuroPU_CLERK
ColmenaresPU_CLERK
[size=10.5pt]
答:[size=10.5pt]
DECLARE
CURSOR dept_cur IS
SELECT department_id, department_name FROM departments ORDER BY 1;
CURSOR emp_cur(d NUMBER) IS
SELECT last_name, job_id FROM employees WHERE department_id = d;
BEGIN
FOR a IN dept_cur LOOP
dbms_output.put_line(a.department_id || ':' || a.department_name);
FOR b IN emp_cur(a.department_id) LOOP
dbms_output.put_line(b.last_name || b.job_id);
END LOOP;
END LOOP;
END;
[size=10.5pt]
[size=10.5pt]2[size=10.5pt]、创建[size=10.5pt]PL/SQL[size=10.5pt]块[size=10.5pt], [size=10.5pt]提高工资在[size=10.5pt]3000[size=10.5pt]以上且职务为[size=10.5pt]’SR_CLERK’[size=10.5pt]的职员的工资[size=10.5pt]10%[size=10.5pt]。要求:使用[size=10.5pt]FOR UPDATE[size=10.5pt]和[size=10.5pt]CURRENT OF[size=10.5pt]的语法。[size=10.5pt][size=10.5pt]
答:[size=10.5pt]
[size=10.5pt] DECLARE
CURSOR emp_cur IS
SELECT salary
FROM employees
WHERE salary > 3000
AND job_id = 'SR_CLERK'
FOR UPDATE;
BEGIN
FOR a IN emp_cur LOOP
UPDATE employees SET salary = salary * 1.1 WHERE CURRENT OF emp_cur;
END LOOP;
COMMIT;
END;[size=10.5pt]
[size=10.5pt]
linger_52102 (2008-8-08 09:53:27)
1、编写PL/SQL块,查询职员的last name 和salary:
a. 使用var定义输入的salary;
b. 如果没有找匹配salary,则显示“No employee with a salary of <salary>.”;
c. 如果只返回一行,将记录插入到MESSAGES表中,记录包括last_name和salary;
d. 其它错误的,则显示“Some other error occurred.”;
e. MESSAGE表如下:
答:
VAR emp_sal NUMBER
EXEC :emp_sal:=6000
DECLARE
v_ename employees.last_name%TYPE;
v_sal employees.salary%TYPE := :emp_sal;
BEGIN
SELECT last_name
INTO v_ename
FROM employees
WHERE salary = v_sal;
INSERT INTO messages (results)
VALUES (v_ename || ’ - ’ || v_sal);
EXCEPTION
WHEN no_data_found THEN
INSERT INTO messages (results)
VALUES (’No employee with a salary of ’|| TO_CHAR(v_sal));
WHEN too_many_rows THEN
INSERT INTO messages (results)
VALUES (’More than one employee with a salary of ’||
TO_CHAR(v_sal));
WHEN others THEN
INSERT INTO messages (results)
VALUES (’Some other error occurred.’);
END;
2、创建PL/SQL块,在指定的工资范围(salary-100,salary+100)查找员工的数目,要求:
a 使用var定义v_salar,指定查询工资
b 使用var定义g_message, 用于存储输出信息变量
c 定义以下异常情况
e_no_emp_returned:当没有找到员工时,将字串“There is no employee salary between <v_sal-100> and <v_sal+100>”赋给g_message;
e_more_than_one_emp: 当找到员工数目多于一个时,将字串“There is/are <number of emp> between <v_sal-100> and <v_sal+100>” 赋给g_message;
other:其它异常时将“Some other error occurred.” 赋给g_message;
答:
VARIABLE g_message VARCHAR2(100)
VARIABLE v_sal number
EXEC :v_sal:=7000
DECLARE
v_sal employees.salary%TYPE := :v_sal;
v_low_sal employees.salary%TYPE := v_sal - 100;
v_high_sal employees.salary%TYPE := v_sal + 100;
v_no_emp NUMBER(7);
e_no_emp_returned EXCEPTION;
e_more_than_one_emp EXCEPTION;
BEGIN
SELECT count(last_name)
INTO v_no_emp
FROM employees
where salary between v_low_sal and v_high_sal;
IF v_no_emp = 0 THEN
RAISE e_no_emp_returned;
ELSIF v_no_emp > 0 THEN
RAISE e_more_than_one_emp;
END IF;
EXCEPTION
WHEN e_no_emp_returned THEN
TO_CHAR(v_low_sal) || ’ and ’||
TO_CHAR(v_high_sal);
WHEN e_more_than_one_emp THEN
’ employee(s) with a salary between ’||
TO_CHAR(v_low_sal) || ’ and ’||
TO_CHAR(v_high_sal);
WHEN others THEN
END;
/
第七章 编写数据库子程序
1、创建add_job存储过程,向jobs增加新的职务。Job_id和job_title由参数据输入。使用存储过程add_job增加以下职务:
’IT_DBA’, ’Database Administrator’
’ST_MAN’, ’Stock Manager’
答:
CREATE OR REPLACE PROCEDURE add_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE)
IS
BEGIN
INSERT INTO jobs (job_id, job_title)
VALUES (p_jobid, p_jobtitle);
COMMIT;
END add_job;
EXECUTE add_job (’IT_DBA’, ’Database Administrator’)
EXECUTE add_job (’ST_MAN’, ’Stock Manager’)
2、创建存储过程upd_job更新职务。Job_id和job_title由参数据输入,如果找不到指定的职务,则终断程序的运行返回ora-20202:’No job updated.’错误; 使用存储过程upd_job更改以下职务:
’IT_DBA’, ’Data Administrator’
’IT_WEB’, ’Web Master’
答:
CREATE OR REPLACE PROCEDURE upd_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE)
IS
BEGIN
UPDATE jobs
SET job_title = p_jobtitle
WHERE job_id = p_jobid;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20202,’No job updated.’);
END IF;
END upd_job;
3、创建存储过程del_job删除职务。Job_id参数据输入,如果找不到指定的职务,则终断程序的运行返回ORA-20203,’No jobs deleted.’错误; 使用存储过程upd_job删除以下职务:’IT_DBA’
答:
CREATE OR REPLACE PROCEDURE del_job
(p_jobid IN jobs.job_id%TYPE)
IS
BEGIN
DELETE FROM jobs
WHERE job_id = p_jobid;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20203,’No jobs deleted.’);
END IF;
END DEL_JOB;
4、创建存储过程query_emp,查询指定employee_id的salary和job_id。Employee_id由参数指定,使用输出参数返回查到的salary和job_id。使用query_emp查询employee_id=300的工资和职务。
答:
CREATE OR REPLACE PROCEDURE query_emp
(p_empid IN employees.employee_id%TYPE,
p_sal OUT employees.salary%TYPE,
p_job OUT employees.job_id%TYPE)
IS
BEGIN
SELECT salary, job_id
INTO p_sal, p_job
FROM employees
WHERE employee_id = p_empid;
END query_emp;
VARIABLE g_sal NUMBER
VARIABLE g_job VARCHAR2(15)
EXECUTE query_emp (120,
PRINT g_sal
PRINT g_job
5、创建函数返回job_title,job_id由参数输入。
答:
CREATE OR REPLACE FUNCTION q_job
(p_jobid IN jobs.job_id%TYPE)
RETURN VARCHAR2
IS
v_jobtitle jobs.job_title%TYPE;
BEGIN
SELECT job_title
INTO v_jobtitle
FROM jobs
WHERE job_id = p_jobid;
RETURN (v_jobtitle);
END q_job;
6、创建函数ANNUAL_COMP,计算佣金:
公式:(sal*12) + (commission_pct*salary*12)
答:
CREATE OR REPLACE FUNCTION annual_comp
(p_sal IN employees.salary%TYPE,
p_comm IN employees.commission_pct%TYPE)
RETURN NUMBER
IS
BEGIN
RETURN (NVL(p_sal,0) * 12 + (NVL(p_comm,0)* p_sal * 12));
END annual_comp;
/
7、创建包job_pkg包含:
PROCEDURE ADD_JOB
PROCEDURE UPD_JOB
PROCEDURE DEL_JOB
FUNCTION Q_JOB
答:
CREATE OR REPLACE PACKAGE job_pack IS
PROCEDURE add_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE);
PROCEDURE upd_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE);
PROCEDURE del_job
(p_jobid IN jobs.job_id%TYPE);
FUNCTION q_job
(p_jobid IN jobs.job_id%TYPE)
RETURN VARCHAR2;
END job_pack;
/
CREATE OR REPLACE PACKAGE BODY job_pack IS
PROCEDURE add_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE)
IS
BEGIN
INSERT INTO jobs (job_id, job_title)
VALUES (p_jobid, p_jobtitle);
END add_job;
PROCEDURE upd_job
(p_jobid IN jobs.job_id%TYPE,
p_jobtitle IN jobs.job_title%TYPE)
IS
BEGIN
UPDATE jobs
SET job_title = p_jobtitle
WHERE job_id = p_jobid;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR(-20202,’No job updated.’);
END IF;
END upd_job;
PROCEDURE del_job
(p_jobid IN jobs.job_id%TYPE)
IS
BEGIN
DELETE FROM jobs
WHERE job_id = p_jobid;
IF SQL%NOTFOUND THEN
RAISE_APPLICATION_ERROR (-20203,’No job deleted.’);
END IF;
END del_job;
FUNCTION q_job
(p_jobid IN jobs.job_id%TYPE)
RETURN VARCHAR2
IS
v_jobtitle jobs.job_title%TYPE;
BEGIN
SELECT job_title
INTO v_jobtitle
FROM jobs
WHERE job_id = p_jobid;
RETURN (v_jobtitle);
END q_job;
END job_pack;
/
8、创建触发器check_sal,当新salar小于旧的salary时终断执行并返回-20002,’Salary may not be reduced’错误。
答:
CREATE OR REPLACE TRIGGER check_sal
BEFORE UPDATE OF salary ON employees
FOR EACH ROW
WHEN (NEW.salary < OLD.salary)
BEGIN
RAISE_APPLICATION_ERROR(-20002,’Salary may not be reduced’);
END check_sal;
linger_52102 (2008-8-08 09:55:57)
1、PL/SQL程序单元称为什么?由哪几部分组成?每部分的作用是什么?
2、使用PL/SQL编写哪些数据库对象?
第二章 PL/SQL块
1、以下声明不正确,为什么?
a. DECLARE
v_id NUMBER(4);
b. DECLARE
v_x, v_y, v_z VARCHAR2(10);
c. DECLARE
v_birthdate DATE NOT NULL;
d. DECLARE
v_in_stock BOOLEAN := 1;
2、以下语句是否正确?
a. v_days_to_go := v_due_date - SYSDATE;
b. v_sender := USER || ’: ’ || TO_CHAR(v_dept_no);
c. v_sum := $100,000 + $250,000;
d. v_flag := TRUE;
e. v_n1 := v_n2 > (2 * v_n3);
f. v_value := NULL;
3、创建PL/SQL块,在屏幕上输出“My PL/SQL Block Works”
4、PL/SQL块中声明两个变量并进行赋值。
V_CHAR Character (variable length)
V_NUM Number
V_CHAR 值为’42 is the answer’
V_NUM 值为V_CHAR的长度
5、计算以上程序后,在指定位置上变量值为:
a. V_WEIGHT 在位置1是:
b. V_NEW_LOCN在位置1是:
c. V_WEIGHT在位置2是:
d. V_MESSAGE在位置2是:
e. V_NEW_LOCN在位置2是:
第三章 数据库操作
1、创建PL/SQL块,在屏幕上显示DEPARTMENTS中最大的部门编号。
2、插入新部门信息程序,部门编号为当前最大部门编号上增加10。(使用SQL*PLUS的VAR定义新部门的department_name)
3、将新增加的部门location_id改为1700。(使用SQL*PLUS的VAR定义新部门的location_id)
4、创建新的PL/SQL块,将增加的部门记录删除。(使用SQL*PLUS的VAR定义新部门号编号)。
linger_52102 (2008-8-08 09:56:40)
1、创建表messages (results INT),插入如下记录:
2、创建PL/SQL块计算职员的奖金:
a. 职员编号由var定义
b. 如果职员的工资小于 $5,000,奖金为工资的10%
c. 如果职员的工资在 $5,000到$10,000,奖金为工资的15%
d. 如果职员的工资超过 $10,000, 奖金为工资的20%
e. 如果职员的工资为空,奖金为0
第四章 游标
1、使用游标计算指定部门的职员工资的排名(相同的工资具有相同排名),并存储到dept_temp表中,每次插入前删除所有记录:
CREATE TABLE dept_temp
(
rank INT,
department_id NUMBER(4),
last_name VARCHAR2(25),
job_id VARCHAR2(10),
salary NUMBER(8,2)
)
rank department_id job_id salary
---- ------------ ------ -----
1 Russell SA_MAN 14000
2 Partners SA_MAN 13500
3 Errazuriz SA_MAN 12000
4 Ozer SA_REP 11500
5 Cambrault SA_MAN 11000
5 Abel SA_REP 11000
7 Zlotkey SA_MAN 10500
7 Vishney SA_REP 10500
2、使用嵌套游标显示每个部门的职员名单:
10:Administration
WhalenAD_ASST
20:Marketing
HartsteinMK_MAN
FayMK_REP
30
RaphaelyPU_MAN
KhooPU_CLERK
BaidaPU_CLERK
TobiasPU_CLERK
HimuroPU_CLERK
ColmenaresPU_CLERK
2、创建PL/SQL块, 提高工资在3000以上且职务为’SR_CLERK’的职员的工资10%。要求:使用FOR UPDATE和CURRENT OF的语法。
第六章 异常处理
1、编写PL/SQL块,查询职员的last name 和salary:
a. 使用var定义输入的salary;
b. 如果没有找匹配salary,则显示“No employee with a salary of <salary>.”;
c. 如果只返回一行,将记录插入到MESSAGES表中,记录包括last_name和salary;
d. 其它错误的,则显示“Some other error occurred.”;
e. MESSAGE表如下:
2、创建PL/SQL块,在指定的工资范围(salary-100,salary+100)查找员工的数目,要求:
a 使用var定义v_salar,指定查询工资
b 使用var定义g_message, 用于存储输出信息变量
c 定义以下异常情况
e_no_emp_returned:
当没有找到员工时,将字串“There is no employee salary between <v_sal-100> and <v_sal+100>”赋给g_message;
e_more_than_one_emp:
当找到员工数目多于一个时,将字串“There is/are <number of emp> between <v_sal-100> and <v_sal+100>” 赋给g_message;
other:
其它异常时将“Some other error occurred.” 赋给g_message;
第七章 编写数据库子程序
1、创建add_job存储过程,向jobs增加新的职务。Job_id和job_title由参数据输入。使用存储过程add_job增加以下职务:
’IT_DBA’, ’Database Administrator’
’ST_MAN’, ’Stock Manager’
2、创建存储过程upd_job更新职务。Job_id和job_title由参数据输入,如果找不到指定的职务,则终断程序的运行返回ora-20202:’No job updated.’错误; 使用存储过程upd_job更改以下职务:
’IT_DBA’, ’Data Administrator’
’IT_WEB’, ’Web Master’
3、创建存储过程del_job删除职务。Job_id参数据输入,如果找不到指定的职务,则终断程序的运行返回ORA-20203,’No jobs deleted.’错误; 使用存储过程upd_job删除以下职务:’IT_DBA’
4、创建存储过程query_emp,查询指定employee_id的salary和job_id。Employee_id由参数指定,使用输出参数返回查到的salary和job_id。使用query_emp查询employee_id=300的工资和职务。
5、创建函数返回job_title,job_id由参数输入。
6、创建函数ANNUAL_COMP,计算佣金:
公式:(sal*12) + (commission_pct*salary*12)
7、创建包job_pkg包含:
PROCEDURE ADD_JOB
PROCEDURE UPD_JOB
PROCEDURE DEL_JOB
FUNCTION Q_JOB
8、创建触发器check_sal,当新salar小于旧的salary时终断执行并返回-20002,’Salary may not be reduced’错误。
linger_52102 (2008-8-08 14:52:49)
CREATE TABLE orders (
SER_NO NUMBER UNIQUE,
ORDER_ID NUMBER,
ORDER_DATE DATE NOT NULL
STATUS VARCHARD2(10) CHECK (status IN ( ‘CREDIT’, ‘CASH’)),
PROD_ID_NUMBER REFERENCES PRODUCTS(PRODUCT_ID),
ORD_TOTAL NUMBER PRIMARY KEY (order_id, order_date));
创建哪些列索引(选择二项)
SER_NO
ORDER_ID
STATUS
PROD_ID
ORD_TOTAL
ORDER_ID ,ORDER_DATE 复合索引
Choose two space management parameters used to control the free
space usage in a data block.
PCTINCREASE
PCTFREE
PCTALLOCATED
PCTUSED
Which NLS parameter can be specified only as an environment variable?
NLS_LANGUAGE
NLS_LANG
NLS_TERRITORY
NLS_SORT
When you multiplex the control file, how many control files can you
have for one database?
Four
Eight
Twelve
Unlimited
Which statement allows specifying the parameters PCTFREE and PCTUSED?
CREATE TABLE
ALTER INDEX
ALTER TABLESPACE
All the above
Which data dictionary view would you query to see the temporary
segments in a database?
DBA_SEGMENTS
V$SORT_SEGMENT
DBA_TEMP_SEGMENTS
DBA_TABLESPACES
Which command do you use to collect statistics for a table?
ALTER TABLE <TABLE_NAME> COMPUTE STATISTICS
ANALYZE TABLE <TABLE_NAME> COMPUTE STATISTICS
ALTER TABLE <TABLE_NAME> COLLECT STATISTICS
ANALYZE TABLE <TABLE_NAME> COLLECT STATISTICS
Which initialization parameter must be set to create a control file
using OMF?
DB_CREATE_SPFILE
DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST_n
CONTROL_FILES
[ 本帖最后由 linger_52102 于 2008-8-8 14:55 编辑 ]
linger_52102 (2008-8-13 13:40:49)
1. Which of the following are Java keywords?
goto
malloc
extends
FALSE
2. 谈谈final, finally, finalize的区别,说法正确的是:
final 用于声明属性,方法和类,分别表示属性不可变,注意:如果是基本类型说明变 量本身不能改变,如果是引用类型,说明它不能指向其他的对象了。但对象还是可以改变 的。方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示无论是否出现异常总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
3. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类答(concrete class)? 说法正确的是:
接口可以继承接口。
接口间继承(extends),不能实现(implements)。
抽象类可以实现(implements)接口,但接口不能实现抽象类。
抽象类之间可以用继承(extends)
4. Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)=12
Math.round(11.5)=11
Math.round(-11.5)==-11
Math.round(-11.5)==-12
5. Which of the following are acceptable to the Java compiler:
if (2 == 3) System.out.println("Hi");
if (2 = 3) System.out.println("Hi");
if (true) System.out.println("Hi");
if (2 != 3) System.out.println("Hi");
if (aString.equals("hello")) System.out.println("Hi");
6. Which of the following do not lead to a runtime error?
"john" + " was " + " here"
"john" + 3
3 + 5
5 + 5.5
7. Which methods can be legally applied to a string object?
equals(String)
equals(Object)
trim()
round()
toString()
8. String是最基本的数据类型吗? String 和StringBuffer的区别?
String不是一最基本的数据类型。
String的长度是不可变的
StringBuffer的长度是可变的。
9. public class MethodOver{public void setVar(int a, int b, float c){}}which overload the setVar?
private void setVar(int a, float c, int b){}
protected void setVar(int a, int b, float c){}
public int setVar(int a, float c, int b){return a;}
public int setVar(int a, float c){return a;}
10. which three are valid declaraction of a float?
float foo=-1;
float foo=1.0;
float foo=42e1;
float foo=2.02f;
float foo=3.03d;
float foo=0x0123;
11. 给我一个你最常见到的runtime exception。
IndexOutOfBoundsException 数组越界
NullPointerException 空指针异常
SystemException 系统异常
RemoteException //io exception
12. GC是什么? 为什么要有GC?
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,
Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的
Java语言没有提供释放已分配内存的显示操作方法。
13. 数组转换问题。下面正确的语句是:
Object[] object = new Person[2];
Person [] person = new Person [3];
person = (Person [])object;
int[] i = new int[2];
long[] l = new int[3];
i = (long[])l;
14. Which of the following return true?
"john" == "john" //--------------
"john".equals("john")
"john" = "john"
"john".equals(new Button("john"))
15. &和&&的区别, 说法正确的是:
&是位运算符,表示按位与运算
&&是逻辑运算符,表示逻辑与(and)
-----------------------------------------------------------------------------------
以下是单选题
16. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1; 有错short s1 = 1; s1 += 1;没有错
short s1 = 1; s1 = s1 + 1; 没有错short s1 = 1; s1 += 1;没有错
short s1 = 1; s1 = s1 + 1; 没有错short s1 = 1; s1 += 1;有错
short s1 = 1; s1 = s1 + 1; 有错short s1 = 1; s1 += 1;有错
17. java有没有goto语句?
没有
有
18. 给出下列代码,如何使成员变量m 被方法fun()直接访问?
class Test
{
private int m;
public static void fun()
{
...
}
}
将private int m 改为protected int m
将private int m 改为 public int m
将private int m 改为 static int m
将private int m 改为 int m
19. 下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问?
private
无修饰符
public
protected
20. if(-0.0 == 0.0)是相等还是不等?
相等
不相等
21. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
值传递
引用传递
Integer可以把String转换成int。
22. 说出一些常用的类,接口,请各举5个,下面哪个是正确
常用类-System,ArrayList,FileInputStream,Thread, Collection.
常用接口-Connection, Cloneable, Comparable, Serializable
23. What will be the result of compiling the following code:
public class Test {
public static void main (String args []) {
int age;
age = age + 1;
System.out.println("The age is " + age);
}
}
Compiles and runs with no output
Compiles and runs printing out The age is 1
Compiles but generates a runtime error
Does not compile
Compiles but generates a compile time error
24. integer和long 操作 /和% 的话, 可能会抛出ArithmeticException,比如除0。但是 float与 double不会,即使是除以0。
正确
错误
25. 选择语句case中,允许使用的值有哪些?
int
int,short
int,short,char
int,short,char,byte
[ 本帖最后由 linger_52102 于 2008-8-13 13:45 编辑 ]
linger_52102 (2008-8-13 13:42:26)
会
不会
27. List, Set, Map是否继承自Collection接口?
List,Set是。Map不是
List,Set不是。Map是
List是。Map,Set不是
List, Map,Set是
28. What is the correct declaration of an abstract method that is intended to be public:
public abstract void add();
public abstract void add() {}
public abstract add();
public virtual add();
29. 给出下列代码,则数组初始化中哪项是不正确的?
byte[] array1,array2[];
byte array3[][];
byte [][] array4;
array2 = array1
?array2=array3
?array2=array4
??array3=array4
30. Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
可以
不可以
31. Which of the following is correct:
String temp [] = new String {"j" "a" "z"};
String temp [] = { "j " " b" "c"};
String temp = {"a", "b", "c"};
String temp [] = {"a", "b", "c"};
32. class Child extends Parents{}
class Parents{}
是否可以这样声明类,在一个文件中?
可以
不可以
33. 给出下列的代码,哪行在编译时可能会有错误?
① public void modify(){
② int i, j, k;
③ i = 100;
④ while ( i > 0 ){
⑤ j = i * 2;
⑥ System.out.println (" The value of j is " + j );
⑦ k = k + 1;
⑧ }
⑨ }
line 4
line 6
line 7
line 8
34. Set里的元素能重复吗?
可以
不可以
35. 关于Java成员变量默认初始化的值。
成员变量类型默认初始化取值
化的值。
正确
错误
36. 下列关于继承的哪项叙述是正确的?
在java中允许多重继承
在java中一个类只能实现一个接口
在java中一个类不能同时继承一个类和实现一个接口
java的单一继承使代码更可靠
37. Under what situations do you obtain a default constructor?
When you define any class
When the class has no other constructors
When you define at least one constructor
38. 方法名是否可以与构造器的名字相同?
可以
不可以
39. 在try-catch-final块中的退出语句。
public class Test {
public static void main(String[] args){
int a=1;
try {
a=a/0;
}catch(Exception e){
System.out.println("catch");
return;
}finally{
System.out.println("finally");
}
}
}
控制台显示为:
catch
finally
catch
40. 已知有下列类的说明,则下列哪个语句是正确的?
public class Test
{
private float f = 1.0f;
int m = 12;
static int n=1;
public static void main(String arg[])
{
Test t = new Test();
}
}
t.f;
this.n;
Test.m
Test.f;
41. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能。
都能。
可同时是static, 不可同时是native,可同时是synchronized?
不可同时是static, 不可同时是native,可同时是synchronized?
可同时是static,可同时是native,不可同时是synchronized?
42. What is the legal range of a byte integral type?
0 - 65, 535
(–128) – 127
(–32,768) – 32,767
(–256) – 255
43. Math,String可不可继承?
可以
不可以
44. 数组有没有length()这个方法? String有没有length()这个方法?说法正确的是:
数组有length()这个方法,String有length()这个方法。
数组没有length()这个方法,String没有length()这个方法。
数组没有length()这个方法,String有length()这个方法。
数组有length()这个方法,String没有length()这个方法。
45. What does the zeroth element of the string array passed to the public static void main method contain?
The name of the program
The number of arguments
The first argument if one is present
46. What is the correct ordering for the import, class and package declarations when found in a single file?
package, import, class
class, import, package
import, package, class
package, class, import
47. 运行时异常与一般异常有何异同? java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
正确
错误
48. What will be the result of compiling the following code:
public class Test {
static int age;
public static void main (String args []) {
age = age + 1;
System.out.println("The age is " + age);
}
}
Compiles and runs with no output
Compiles and runs printing out The age is 1
Compiles but generates a runtime error
Does not compile
Compiles but generates a compile time error
49. 同一个文件里是否可以有两个public类?
能
不能
50. Which of the following is illegal:
A. int i = 32;
float f = 45.0;
double d = 45.0;