Job-a-matic

View All Jobs

Jobs powered by Simply Hired

Tuesday, April 28, 2009

OCP Exam 3: Introduction to SQL

1. 

You issue the following select statement in Oracle:

SQL> select e.empno, e.ename, d.loc

from emp e, dept d

3 where e.deptno = d.deptno

4 and substr(e.ename,1,1) = 'S';

Which of the following statements identifies an ANSI-compliant equivalent statement usable on the Oracle database?

select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where substr(emp.ename,1,1) = 'S';

select empno, ename, loc from emp, dept on emp.deptno = dept.deptno where substr(emp.ename,1,1) = 'S';

select empno, ename, loc from emp join dept where emp.deptno = dept.deptno and substr(emp.ename,1,1) = 'S';

select empno, ename, loc from emp join dept on emp.deptno = dept.deptno and substr(emp.ename,1,1) = 'S';

2. 

You are trying to manipulate data on the Oracle database. Which of the following choices identifies a capacity of select statements in Oracle and does not require the use of a subquery?

You can change data in Oracle using select statements.

You can remove data from Oracle using select statements.

You can create a table with the contents of another using select statements.

You can truncate tables using select statements.

3. 

You issue a query in the Oracle database. Which of the following choices does not identify a component of your query if you want the query to execute a mathematical operation on user-defined static expressions?

Column clause

Table clause

The DUAL table

The where clause

4. 

You are manipulating data in Oracle. Which of the following is not a SQL command?

select * from dual;

set define ?

update emp set empno = 6543 where ename = 'SMITHERS';

create table employees (empid varchar2(10) primary key);

5. 

You are defining SQL queries in Oracle. Which of the following database objects cannot be referenced directly from a select statement?

Tables

Sequences

Indexes

Views

6. 

You need to filter return data from your query on the PROFITS table according to the PRODUCT_NAME column. Which of the following clauses in your SQL query will contain reference to the appropriate filter criteria?

select

from

where

having

7. 

A partial listing of output from the PROFITS table is shown in the following code block:

PRODUCT_NAME PRODUCT_TYPE QTR_END_DATE PROFIT

------------ ------------ ------------ -------------

BARNEY DOLL TOY 31-MAR-2001 6575430.30

GAS GRILL APPLIANCE 31-MAR-2001 1234023.88

PENCIL OFFICE 30-JUN-2001 34039.99

Which of the following choices identifies the proper setup of a where clause for a query that calculates the total profits for all appliances sold in the six-month period from January 1 to June 30, 2001?

where product_name = 'GAS GRILL' and qtr_end_date between '01-JAN-2001' and '01-JUL-2001';

where product_type = 'APPLIANCE' and product_name = 'GAS GRILL' and qtr_end_date = '31-JAN-2001' or '30-JUN-2001';

where product_type = 'APPLIANCE' and qtr_end_date between '01-JAN-2001' and '01-JUL-2001';

where product_name = 'GAS GRILL' and qtr_end_date = '01-JAN-2001' or '30-JUN-2001';

Use the contents of the EMP table shown in the following code block to answer the next eight questions:

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

--------- -------- --------- ----- --------- ---- ---- ------

7369 SMITH CLERK 7902 17-DEC-80 800 20

7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

7566 JONES MANAGER 7839 02-APR-81 2975 20

7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

7782 CLARK MANAGER 7839 09-JUN-81 2450 10

7788 SCOTT ANALYST 7566 19-APR-87 3000 20

7839 KING PRESIDENT 17-NOV-81 5000 10

7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

7876 ADAMS CLERK 7788 23-MAY-87 1100 20

7900 JAMES CLERK 7698 03-DEC-81 950 30

7902 FORD ANALYST 7566 03-DEC-81 3000 20

7934 MILLER CLERK 7782 23-JAN-82 1300 10

8. 

Which of the following choices identifies the value that would be returned from the following query: select sum(sal) + sum(comm) from emp where job = 'ANALYST' or ename like 'J%'?

6000

9925

9975

NULL

9. 

Which of the following choices identifies the value that would be returned from the following query: select count(mgr) from emp where deptno = 10?

One

Two

Three

NULL

10. 

Which of the following choices identifies the value returned if you issued the following query: select count(*) from emp where mgr = 7700-2?

Five

Six

Seven

NULL

11. 

Which of the following choices identifies the third employee listed from the top of the output from the following SQL command: select ename, sal from emp where job = 'SALESMAN' order by empno desc?

ALLEN

MARTIN

TURNER

WARD

12. 

Which of the following choices identifies the third employee listed from the top in the output generated from the following SQL command: select ename, job from emp where job = 'SALESMAN' order by 1 desc?

ALLEN

MARTIN

TURNER

WARD

13. 

Which of the following choices identifies the value returned by Oracle when you issue the following query: select substr(job, 1,3) from emp where ename like upper('_ _ar%')?

ANA

CLE

MAN

SAL

14. 

Which of the following choices identifies the value returned by Oracle when you issue: select trunc(months_between(min(hiredate), max(hiredate))) from emp?

24

25

-24

-25

15. 

Which of the following choices identify the value returned by Oracle when you issue the following query: select * from emp where hiredate > '23-JAN-82'? (Choose two.)

ADAMS

MILLER

SCOTT

SMITH

16. 

A table called TEST contains two columns: TESTCOL, defined as a NUMBER(10) datatype; and TESTCOL_2, defined as a VARCHAR2(10) datatype. You issue the following statement on Oracle: insert into test (testcol, testcol_2) values (null, 'FRANCIS'). You then issue the following query against that table: select nvl(testcol,'EMPTY') as testcol from test where testcol_2 = 'FRANCIS'. Which of the following choices correctly identifies the result?

Oracle returns zero as the result.

Oracle returns EMPTY as the result.

Oracle returns NULL as the result.

Oracle returns an error as the result.

17. 

You want to obtain data from the ORDERS table, which contains three columns: CUSTOMER, ORDER_DATE, and ORDER_AMT. Which of the following choices identifies how you would formulate the where clause in a query against the ORDERS table when you want to see orders for customer LESLIE that exceed 2700?

where customer = 'LESLIE';

where customer = 'LESLIE' and order_amt < 2700;

where customer = 'LESLIE' or order_amt > 2700;

where customer = 'LESLIE' and order_amt > 2700;

18. 

Use the following output to answer the question (assume that the information shown comes from the EMP table we've been using in the chapter):

ENAME

----------

SMITH-dog-

ALLEN-dog-

WARD-dog-d

JONES-dog-

MARTIN-dog

BLAKE-dog-

CLARK-dog-

SCOTT-dog-

KING-dog-d

TURNER-dog

ADAMS-dog-

JAMES-dog-

FORD-dog-d

MILLER-dog

Which of the following choices identifies the SQL statement that produced this output?

select trim(trailing '-dog' from ename) as ename from emp;

select rpad(ename, 10, '-dog') as ename from emp;

select substr(ename, 1, 10) as ename from emp;

select lpad(ename, 10, '-dog') as ename from emp;

19. 

Use the following code block to answer the question:

SQL> select _____(-45) as output from dual;

OUTPUT

------

-45

Which of the following choices identifies a single-row function that could not have produced this output?

abs( )

ceil( )

floor( )

round( )

20. 

For a certain row in a table, a VARCHAR2 column contains the value SMITHY, padded to the right with seven spaces by the application. When the length( ) function processes that column value, what will be the value returned?

6

13

30

60

21. 

You issue the following statement in SQL*Plus:

SQL> select ceil(-97.342),

2 floor(-97.342),

3 round(-97.342,0),

4 trunc(-97.342)

5 from dual;

Which of the following choices identifies the function that will not return -97 as the result?

ceil( )

floor( )

round( )

trunc( )

22. 

You issue the following statement in SQL*Plus:

SQL> select ceil(256.342),

2 floor(256.342),

3 round(256.342,0),

4 trunc(256.342)

5 from dual;

Which of the following choices identifies the function that will not return 256 as the result?

ceil( )

floor( )

round( )

trunc( )

23. 

You issue the following query in Oracle:

SQL> select months_between('15-MAR-83', '15-MAR-97') from dual;

What will Oracle return?

14

-14

168

-168

24. 

You want to use a format mask for date information in Oracle. In which of the following situations is this format mask not appropriate?

to_date( )

to_char( )

alter session set nls_date_format

to_number( )

25. 

Two tables, PRODUCT and STORAGE_BOX, exist in a database. Individual products are listed in the table by unique ID number, product name, and the box a particular product is stored in. Individual storage boxes (identified by number) listed in the other table can contain many products, but each box can be found in only one location. Which of the following statements will correctly display the product ID, name, and box location of all widgets in this database?

select p.prod_id, p.prod_name, b.box_loc from product p, storage_box b where p.prod_id = b.prod_id and prod_name = 'WIDGET';

select p.prod_id, p.prod_name, b.box_loc fromproduct p, storage_box b where prod_name = 'WIDGET';

select p.prod_id, p.prod_name, b.box_loc from product p, storage_box b where p.stor_box_num = b.stor_box_num and p.prod_name = 'WIDGET';

select prod_id, prod_name, box_loc from product, storage_box where stor_box_num = stor_box_num and prod_name = 'WIDGET';

26. 

You want to join information from three tables as part of developing a report. The tables are EMP, DEPT, and SALGRADE. Only records corresponding to employee, department location, and salary range are required for employees in grades ten and higher for the organization. How many comparison operations are required for this query?

Two

Three

Four

Five

27. 

You want to join the contents of two tables, PRODUCT and STORAGE, to list the location of all boxes containing widgets. PRODUCT has three columns: ID, NAME, and BOX#. STORAGE has two columns: BOX# and LOC. Which of the following choices will not give the desired result?

select product.id, product.name, storage.loc from product, storage where product.box# = storage.box#;

select product.id, product.name, storage.loc from product join storage on product.box# = storage.box#;

select product.id, product.name, storage.loc from product natural join storage on product.box# = storage.box#;

select product.id, product.name, storage.loc from product natural join storage;

28. 

You are defining an outer join statement. Which of the following choices is true concerning outer join statements?

Because outer join operations permit NULL values from one of the tables, you do not have to specify equality comparisons to join those tables.

In outer join statements on tables A and B, you specify the right outer join when you want all of table A's rows, even when no corresponding record exists in table B.

In outer join statements on tables A and B, you specify the left outer join when you want all of table B's rows, even when no corresponding record exists in table A.

Even though outer join operations permit NULL values from one of the tables, you still need to specify equality comparisons to join those tables.

29. 

Two tables, PRODUCT and STORAGE_BOX, exist in a database. Individual products are listed in the table by unique ID number, product name, and the box a particular product is stored in. Individual storage boxes (identified by number) listed in the other table can contain many products, but the box can be found in only one location. Which of the following statements will correctly display the product ID, name, and box location of all widgets in this database that have or have not been assigned to a storage box?

select p.prod_id, p.prod_name, b.box_loc from product p left outer join storage_box b on p.stor_box_num = b.stor_box_num where p.prod_name = 'WIDGET'(+);

select p.prod_id, p.prod_name, b.box_loc from product p left outer join storage_box b on p.stor_box_num = b.stor_box_num where p.prod_name = 'WIDGET';

select p.prod_id, p.prod_name, b.box_loc from product p right outer join storage_box b where b.stor_box_num = p.stor_box_num (+) and p.prod_name = 'WIDGET';

select p.prod_id, p.prod_name, b.box_loc from product p full outer join storage_box b on p.stor_box_num = b.stor_box_num where b.stor_box_num is NULL;

30. 

You issue the following command in Oracle:

SQL> select e.ename, a.street_address, a.city, a.state, a.post_code

from emp e, addr a

3 where e.empno = a.empno (+)

4 and a.state = 'TEXAS';

Which of the following choices shows the ANSI/ISO equivalent statement?

select e.ename, a.street_address, a.city, a.state, a.post_code from emp e outer join addr a on e.empno = a.empno where a.state = 'TEXAS';

select e.ename, a.street_address, a.city, a.state, a.post_code from emp e left outer join addr a on e.empno = a.empno where a.state = 'TEXAS';

select e.ename, a.street_address, a.city, a.state, a.post_code from emp e right outer join addr a on e.empno = a.empno where a.state = 'TEXAS';

select e.ename, a.street_address, a.city, a.state, a.post_code from emp e right outer join addr a where e.empno = a.empno (+) and a.state = 'TEXAS';

31. 

Examine the following output from SQL*Plus:

PRODUCT.ID PRODUCT.NAME BOX.LOCATION

---------- ------------ ------------

578-X WIDGET IDAHO

TENNESSEE

456-Y WIDGET

Which of the following choices identifies the type of query that likely produced this result?

Full outer join

Left outer join

Right outer join

Equijoin

32. 

You are developing a query on the PROFITS table, which stores profit information by company region, product type, and quarterly time period. Which of the following SQL statements will display a cross-tabulation of output showing profits by region, product type, and time period?

select region, prod_type, time, sum(profit) from profits group by region, prod_type, time;

select region, prod_type, time from profits group by rollup (region, prod_type, time);

select region, prod_type, time from profits group by cube (region, prod_type, time);

select region, prod_type, time, sum(profit) from profits group by cube (region, prod_type, time);

33. 

Which of the following choices identifies a group by query that will not result in an error from Oracle when run against the database?

select deptno, job, sum(sal) from emp group by job, deptno;

select sum(sal), deptno, job from emp group by job, deptno;

select deptno, job, sum(sal) from emp;

select deptno, sum(sal), job from emp group by job, deptno;

34. 

Review the following SQL statement:

SQL> select a.deptno, a.job, b.loc, sum(a.sal)

2 from emp a, dept b

3 where a.deptno = b.deptno

4 group by a.deptno, a.job, b.loc

5 order by sum(a.sal);

Which of the following choices identifies the column upon which the order of output from this query will be returned?

A.DEPTNO

A.JOB

B.LOC

sum(A.SAL)

35. 

You are developing a query on the PROFITS table, which stores profit information by company region, product type, and quarterly time period. Which of the following choices identifies a query that will obtain the average profits greater than $100,000 by product type, region, and time period?

select region, prod_type, period, avg(profit) from profits where avg(profit) > 100000 group by region, prod_type, period;

select region, prod_type, period, avg(profit) from profits where avg(profit) > 100000 order by region, prod_type, period;

select region, prod_type, period, avg(profit) from profits group by region, prod_type, period having avg(profit) > 100000;

select region, prod_type, period, avg(profit) from profits group by region, prod_type, period having avg(profit) < 100000;

36. 

The company has an employee expense application with two tables. One table, called EMP, contains all employee data. The other, called EXPENSE, contains expense vouchers submitted by every employee in the company. Which of the following queries will obtain the employee ID and name for those employees who have submitted expenses whose total value exceeds their salary?

select e.empno, e.ename from emp e where e.sal < (select sum(x.vouch_amt) from expense x) and x.empno = e.empno;

select e.empno, e.ename from emp e where e.sal < (select x.vouch_amt from expense x where x.empno = e.empno);

select e.empno, e.ename from emp e where sal < (select sum(x.vouch_amt) from expense x where x.empno = e.empno);

select e.empno, e.ename from emp e where exists (select sum(x.vouch_amt) from expense x where x.empno = e.empno);

37. 

Take a look at the following statement:

SQL> select ename

2 from emp

3 where empno in

4 ( select empno

5 from expense

6 where vouch_amt > 10000);

Which of the following choices identifies a SQL statement that will produce the same output as the preceding statement, rewritten to use the exists operator?

select e.ename from emp e where exists (select x.empno from expense x where x.vouch_amt > 10000) and x.empno = e.empno;

select e.ename from emp e where exists (select x.empno from expense x where x.vouch_amt > 10000 and x.empno = e.empno);

select e.ename from emp e where x.empno = e.empno and exists (select x.empno from expense x where x.vouch_amt > 10000);

select e.ename from emp e, expense x where x.empno = e.empno and x.vouch_amt > 10000 and exists (select x.empno from expense x where x.vouch_amt > 10000);

38. 

Use the following code block to answer the question:

SQL> select deptno, job, avg(sal)

2 from emp

3 group by deptno, job

4 having avg(sal) >


 

5 ( select sal

6 from emp

7 where ename = 'MARTIN');

Which of the following choices identifies the type of subquery used in the preceding statement?

A single-row subquery

A multirow subquery

A from clause subquery

A multicolumn subquery

39. 

The company's sales database has two tables. The first, PROFITS, stores the amount of profit made on products sold by the different corporate regions in different quarters. The second, REGIONS, stores the name of each departmental region, the headquarter location for that region, and the name of the region's vice president. Which of the following queries will obtain total profits on toys for regions headed by SMITHERS, FUJIMORI, and LAKKARAJU?

select sum(profit) from profits where region in ( select region from regions where reg_head in ('SMITHERS', 'FUJIMORI', 'LAKKARAJU')) and product = 'TOYS';

select sum(profit) from profits where region in ( select region from regions where reg_head in ('SMITHERS', 'FUJIMORI', 'LAKKARAJU') and product = 'TOYS');

select sum(profit) from profits where region = ( select region from regions where reg_head in ('SMITHERS', 'FUJIMORI', 'LAKKARAJU')) and product = 'TOYS';

select sum(profit) from profits where region in ( select region from regions where reg_head in ('SMITHERS', 'FUJIMORI', 'LAKKARAJU') and product = 'TOYS';

40. 

The following code block shows a query containing a subquery:

SQL> select dname, avg(sal) as dept_avg

2 from emp, dept

3 where emp.deptno = dept.deptno

4 group by dname having avg(sal) >


 

5 (select avg(sal) * 1/4

6 from emp, dept

7 where emp.deptno = dept.deptno)

8 order by avg(sal);

Which of the following choices identifies a clause you might use to redefine this query to remove redundancy of group function execution in the subquery and in the main query?

group by

order by

with

having

41. 

Use the output in the code block to answer the following question:

SQL> select e.deptno, e.ename, e.job, e.sal

2 from emp e

3 where e.sal =

4 (select max(e2.sal)

5 from emp e2

6* where nvl(e.deptno,99) = nvl(e2.deptno, 99));

DEPTNO ENAME JOB SAL

--------- ---------- --------- ---------

30 BLAKE MANAGER 2850

10 CLARK MANAGER 2450

20 SCOTT ANALYST 3000

KING PRESIDENT 5000

20 FORD ANALYST 3000

In order to display a value of 99 in the DEPTNO column in the preceding return set, which of the following SQL statements might be appropriate?

select nvl(e.deptno, 99), e.ename, e.job, e.sal from emp e where (e.deptno, e.sal) =(select max(e2.sal) from emp e2 where nvl(e.deptno, 99) = nvl(e2.deptno, 99));

select nvl(e.deptno, 99), e.ename, e.job, e.sal from emp e where e.sal =(select max(e2.sal) from emp e2 where nvl(e.deptno,99) = nvl(e2.deptno, 99));

select nvl(e.deptno,99), e.ename, e.job, e.sal from emp e where (e.deptno, e.sal) =(select e2.deptno, max(e2.sal) from emp e2 where nvl(e.deptno, 99) = nvl(e2.deptno, 99));

select nvl(e.deptno, 99), e.ename, e.job, e.sal from emp e where (e.deptno, e.sal) =(select e2.deptno, max(e2.sal) from emp e2 where nvl(e.deptno, 99) = nvl(e2.deptno, 99) group by e2.deptno);

42. 

Your company's sales database contains one table, PROFITS, which stores profits listed by product name, sales region, and quarterly time period. If you wanted to obtain a listing of the five best-selling products in company history, which of the following SQL statements would you use?

select p.prod_name, p.profit from (select prod_name, profit from profits order by profit desc) where rownum <= 5;

select p.prod_name, p.profit from (select prod_name, sum(profit) from profits group by prod_name order by sum(profit) desc) subq where p.prod_name = subq.prod_name;

select prod_name, profit from (select prod_name, sum(profit) from profits group by prod_name order by sum(profit) desc) where rownum <=5;

select prod_name, profit from (select prod_name, sum(profit) from profits order by sum(profit) desc) where rownum <=5;

43. 

Your sales database consists of one table, PROFITS, which lists profits for every product type the company sells listed by quarter and by sales region. You need to develop a report that users can run interactively to show them the profits on toys for a given quarter. You have concerns about the users of this report because they have frequently complained about the readability and usability of your reports. Which of the following choices shows the contents of the script you should use for your report?

select profit from profits where prod_type = 'TOYS' and time_period = '&v_period';

define v_periodselect profit from profits where prod_type = 'TOYS' and time_period = '&v_period';

accept v_period prompt 'Enter the time period => 'select profit from profits where prod_type = 'TOYS' and time_period = '&v_period';

accept v_periodselect profit from profits where prod_type = 'TOYS' and time_period = '&v_period';

44. 

Review the following code block containing the contents of a script called dates.sql:

accept v_hiredate prompt 'enter hire date => '

select empno, ename, job

from emp

where trunc(hiredate) = trunc('&v_hiredate');

Which of the following aspects of the script must be changed in order for the script to function properly?

Variable v_hiredate must be changed to accept DATE information.

The trunc( ) function in the query should be eliminated.

The prompt clause in the accept command is unnecessary.

Nothing; the script will work fine as is.

45. 

You are creating tables in the Oracle database. Which of the following statements identifies a table-creation statement that is not valid?

create table cats (c_name varchar2(10), c_weight number, c_owner varchar2(10));

create table my_cats as select * from cats where owner = 'ME';

create global temporary table temp_cats (c_name varchar2(10), c_weight number, c_owner varchar2(10));

create table cats-over-5-lbs as select c_name, c_weight from cats where c_weight > 5;

46. 

Your attempt to create a table in Oracle results in the following error: ORA-00955 - name is already used by existing object. Which of the following choices does not identify an appropriate correction for this situation?

Create the object as a different user.

Drop the existing object with the same name.

Change the column names in the object being created.

Rename the existing object.

47. 

The PROFITS column inside the SALES table is declared as NUMBER(10,2). Which of the following values cannot be stored in that column?

5392845.324

871039453.1

75439289.34

60079829.25

48. 

Employee KING was hired on November 17, 1981. You issue the following query on your Oracle database: select vsize(hiredate) from emp where ename = 'KING;. Which of the following choices identifies the value returned?

4

7

9

17

49. 

You define the PRODUCT_NAME column in your SALES table to be CHAR(40). Later, you add one row to this table with the value CAT_TOYS for PRODUCT_NAME. You then issue the following command: select vsize(product_name) from sales. Which of the following choices best identifies the value returned?

8

12

40

4000

50. 

The JOB table contains three columns: JOB_NAME, JOB_DESC, and JOB_WAGE. You insert a new row into the JOB_DESC table using the following command:

SQL> insert into job (job_name, job_desc)

2 values ('LACKEY','MAKES COFFEE');

Later, you query the table, and receive the following result:

SQL> select * from job where job_name = 'LACKEY';

JOB_NAME JOB_DESC JOB_WAGE

--------- ------------ --------

LACKEY MAKES COFFEE 35

Which of the following choices identifies how JOB_WAGE was populated with data?

The row for LACKEY in the JOB table already existed with JOB_WAGE set to 35.

A default clause on the JOB_WAGE column defined when the table was created specified the value when the row was inserted.

The values clause in the insert statement contained a hidden value that was added when the row was added.

The only possible explanation is that a later update statement issued against the JOB table added the JOB_WAGE value.

51. 

You want to reduce the size of a non-NULL NUMBER(10) column to NUMBER(6). Which of the following steps must be completed after the appropriate alter table command is issued?

Copy column records to a temporary storage location.

Set the NUMBER column to NULL for all rows.

Create a temporary location for NUMBER data.

Copy column records from the temporary location back to the main table.

52. 

You just issued the following statement: alter table sales drop column profit;. Which of the following choices identifies when the column will actually be removed from Oracle?

Immediately following statement execution

After the alter table drop unused columns command is issued

After the alter table set unused column command is issued

After the alter table modify command is issued

53. 

You want to increase the size of a non-NULL VARCHAR2(5) column to VARCHAR2(10). Which of the following steps must be accomplished after executing the appropriate alter table command?

Set the VARCHAR2 column to NULL for all rows.

Create a temporary location for VARCHAR2 data.

Copy the column records from the temporary location back to the main table.

Nothing; the statement is executed automatically.

54. 

You want to increase the size of the PRODUCT_TYPE column, declared as a VARCHAR(5) column, to VARCHAR2(10) in the SALES table. Which of the following commands is useful for this purpose?

alter table sales add (product_type varchar2(10));

alter table sales modify product_type varchar2(10));

alter table sales set unused column product_type varchar2(10));

alter table sales drop column product_type;

55. 

You drop a table in an Oracle database that is the parent table in a parent-child data relationship. Which of the following objects will not be dropped when you drop the parent table?

Associated constraints

The child column

Associated triggers

Associated indexes

56. 

The PROFITS table in your database has a primary key on the PRODUCT_NAME and SALE_PERIOD columns. Which of the following statements could not have been used to define this primary key?

create table profits (product_name varchar2(10), sale_period varchar2(10), profit number, constraint pk_profits_01 primary key (product_name, sale_period));

alter table profits add constraint pk_profits_01 primary key (product_name, sale_period) deferrable initially immediate;

alter table profits add (constraint pk_profits_01 primary key (product_name, sale_period));

create table profits (product_name varchar2(10) primary key, sale_period varchar2(10) primary key, profit number);

57. 

You are defining check constraints on your SALES table, which contains two columns: PRODUCT_TYPE and UNIT_SALES. Which of the following choices identify a properly defined check constraint? (Choose two.)

alter table sales add constraint ck_sales_01 check (product_type in ('TOYS', 'HOT DOGS', 'PALM PILOTS'));

alter table sales add constraint ck_sales_01 check (product_type in (select product_type from valid_products));

alter table sales modify (product_type varchar2(30) check (product_type in ('TOYS', 'HOT DOGS', 'PALM PILOTS')));

alter table sales add (product_name varchar2(30) check (product_name <> 'AK-47'));

58. 

Use the following code block to answer the question:

SQL> create table prices

2 ( product_name varchar2(30),

3 price number(10,4));

Table created.

SQL> alter table prices add constraint pk_prices_01

2 primary key (product_name);

Table altered.

SQL> insert into prices values ('DOGGY', 499.99);

1 row created.

SQL> alter table prices disable constraint pk_prices_01;

Table altered.

SQL> insert into prices values ('DOGGY', 449.99);

1 row created.

SQL> alter table prices enable novalidate constraint pk_prices_01;

What happens next?

Existing entries are checked for violations, PK_PRICES_01 is enabled, and Oracle checks subsequent entries for violations immediately.

Existing entries are checked for violations, PK_PRICES_01 is not enabled, and Oracle does not check subsequent entries for violations immediately.

Existing entries are not checked for violations, PK_PRICES_01 is enabled, and Oracle checks subsequent entries for violations immediately.

Existing entries are checked for violations, PK_PRICES_01 is not enabled, Oracle checks subsequent entries for violations immediately.

59. 

Your attempt to disable a constraint yields the following error: ORA-02297: cannot disable constraint-dependencies exist. Which of the following types of constraints is likely causing interference with your disablement of this one?

Check constraint

Not NULL constraint

Foreign key constraint

Unique constraint

60. 

You are disabling a not NULL constraint on the UNIT_PRICE column in the SALES table. Which of the following choices identifies the correct statement for performing this action?

alter table sales modify (unit_prices null);

alter table sales modify (unit_prices not null);

alter table sales add (unit_prices null);

alter table sales add (unit_prices not null);

Answers

1. 

A. select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where substr(emp.ename,1,1) = 'S';

Explanation Choice A identifies the correct ANSI-compliant syntax for setup of table joins in Oracle9i. Choice B is incorrect because the on keyword is used only in the presence of the join keyword, which is not present in the syntax of that choice. Choice C is incorrect because the join condition must be identified as part of the on clause when the join keyword is present. Finally, choice D is incorrect because determining whether the first character in the ENAME column is S is not a join condition—it is a filtering condition. Thus, that condition should not be included in the on clause, but rather in a where clause. (Topic 4.1)

2. 

C. You can create a table with the CONTENTS of another using select statements.

Explanation Choice C is correct because the create table as select command involves a select statement that is not used as a subquery. Choices A and B are incorrect because the update and delete commands must include a subquery in order for you to change or remove data with the use of a select command. Finally, it is not possible to include a subquery in a truncate command. (Topic 6.1)

3. 

D. The where clause

Explanation If you are using a select statement to perform a mathematical operation on static expressions, you do not need to use the where clause. Choice A is incorrect because your query must include the static expressions and the math operation in the column clause. Choice B is incorrect because all SQL statements need to include a from clause. Finally, choice C is incorrect because your from clause in this scenario will reference the DUAL table. (Topic 2.1)

4. 

B. set define ?

Explanation The set command is not a SQL command in Oracle. Rather, it is an Oracle tool command that operates in a tool-specific way. For SQL*Plus, the set command enables you to define aspects of your SQL operating environment. Choices A and C are incorrect because the select and update commands are part of SQL data manipulation language. Choice D is incorrect because the create table command is part of SQL data definition language. (Topic 1.3)

5. 

C. Indexes

Explanation You cannot reference an index directly from a SQL command, but Oracle may use one behind the scenes to improve performance under certain conditions. Choice A is incorrect because the select command enables you to query Oracle for the contents of a table. You can also reference sequences directly in select commands, making choice B incorrect as well. Finally, choice D is incorrect because you can also reference views directly using SQL select commands. (Topic 12.2)

6. 

C. where

Explanation Filter conditions are always properly placed in the where clause of your SQL query. Choice A is incorrect because the columns you want to see in the output are listed in the select clause. Choice B is incorrect because the tables you want to query are listed in the from clause. Finally, choice D is incorrect because the having clause acts as an additional filter usually when you want to see only the output that conforms to filter conditions when a group by clause is used. (Topic 2.1)

7. 

C. where product_type = 'APPLIANCE' and qtr_end_date between '01-JAN-2001' and '01-JUL-2001';

Explanation Because you want to get the total profits for all appliances for the first six months of 2001, choice C is your best answer because it filters based on that criteria in the columns PRODUCT_TYPE and QTR_END_DATE. Choice A is incorrect because that where clause filters on the PRODUCT_NAME column, and although gas grills are certainly appliances, other appliances could be listed in the PROFITS table that are not gas grills that we would want to include in the total profits calculation. Choice B is incorrect because again, not all appliances are gas grills. Furthermore, the filter condition on the QTR_END_DATE column is malformed. Finally, choice D is incorrect because no filter condition appears on the PRODUCT_TYPE column and the filter condition on the QTR_END_DATE column is malformed. (Topic 2.1)

8. 

D. NULL

Explanation This is a difficult question that tests your knowledge of how group functions react when NULL information is given. Take another look at the contents of the COMM column in the EMP table. Many rows in that table contain NULL values for the COMM column. When NULL data is fed into group functions, the result is always NULL. Thus, although the sum of salaries and commissions for analysts or employees whose names begin with the letter J is 9925, Oracle returns NULL as the answer. (Topic 5.2)

9. 

B. Two

Explanation Again, this difficult question tests your knowledge on how group functions react when NULL information is given. Although three employees have a value of ten in the DEPTNO column, Oracle does not count KING's record because the MGR column for KING's record contains a NULL value. Thus, choice C is incorrect. (Topic 5.2)

10. 

A. Five

Explanation 7700 minus 2 equals 7698. Five employees have a value in the MGR column of 7698, so the answer is choice A. All other choices are incorrect. Be sure you understand that you can include math operations on static expressions in the filter comparisons of your SQL queries. (Topic 1.3)

11. 

D. WARD

Explanation Take a moment to reread the question text, and attempt to rephrase what the question is asking for in your own words. First, this question asks you to identify the employees who are salesmen. Second, it asks you to list the output in descending order based on EMPNO, meaning that the employee with the highest value for EMPNO gets listed first, followed by the second highest, and so on. The listed output will be TURNER, MARTIN, WARD, and ALLEN, in that order. Finally, the question asks you to identify the employee listed third from the top of that list. Thus, choice D is the correct answer. (Topic 2.2)

12. 

B. MARTIN

Explanation Take a moment to reread the question text, and try to rephrase the question in your own words. First, this question asks you to figure out which employees are salesmen. Second, the question asks you to list the output in descending order based on the values in the first column in the output: the ENAME column. The listed output will be WARD, TURNER, MARTIN, and ALLEN, in that order. Finally, the question asks you to identify the employee listed third from the top of that list. Thus, choice B is the correct answer. (Topic 2.2)

13. 

C. MAN

Explanation Recall that when the like keyword is used, Oracle will use the wildcard characters _ and % to identify data via pattern matching. The _ character indicates that this single letter in the text string can be anything, whereas the % character indicates that the prior or subsequent text in the string can be anything. In this case, we are looking for the row whose value for ENAME can contain any letter for the first two characters, followed by AR, followed by anything. Only one name in the list matches this criteria—CLARK. The value in the JOB column for CLARK is MANAGER, and the first three characters of that text string are MAN. Thus, choice C is correct. (Topic 3.2)

14. 

C. -24

Explanation The result Oracle produces when the query in this question is issued is -24, so choice C is correct. The result will be negative because Oracle subtracts the greater, or more recent hire date from the lesser, more distant hire date. Thus, choices A and B are incorrect. Choice D is incorrect because the trunc() function truncates the value to the right of the decimal point and returns the value -24, not -25. (Topic 3.2)

15. 

A and C. ADAMS and SCOTT

Explanation Oracle will only return rows where the value in the HIREDATE column is greater or more recent than January 23, 1982. Only two rows contain values meeting this criterion. They are shown in choices A and C. Choices B and D are both incorrect because the hire dates shown in the HIREDATE column for those two rows are both less recent than January 23, 1982. (Topic 1.2)

16. 

D. Oracle returns an error as the result.

Explanation Any substitution value specified using the nvl() function must be the same datatype as the column specified in the call to that function. Thus, because the TESTCOL column is of NUMBER datatype and 'EMPTY' is a text string, Oracle returns an error. Had we specified the TESTCOL_2 column instead of TESTCOL in our call to nvl(), then choice B would have been the correct answer. (Topic 3.2)

17. 

D. where customer = 'LESLIE' and order_amt > 2700;

Explanation To see order information for LESLIE where the total order exceeds $2,700, you must use the where clause identified in choice D. Choice A is incorrect because Oracle will indiscriminately return every order LESLIE has placed. Choice B is incorrect because Oracle will return orders LESLIE placed whose total is less than $2,700. Finally, choice C is incorrect because Oracle will return all orders that LESLIE placed and all orders for more than $2,700, even if LESLIE didn't place the order—this is too much information. (Topic 2.1)

18. 

B. select rpad(ename, 10, '-dog') as ename from emp;

Explanation Each employee name is padded to the right with the text -dog repeated over and over to fill up to ten places. Thus, we have to use the rpad() function. Choice A is incorrect because the trim() function removes text specified from the string you pass to the function. Choice C is incorrect because the substr() function returns a subset of text from a string you pass to the function. Finally, choice D is incorrect because the lpad() function pads to the left with the text you specify in order to fill up to a specific number of spaces. (Topic 3.2)

19. 

A. abs()

Explanation The abs() function returns the absolute value of a number, defined as the distance from zero of that number. Absolute values are always positive, so this function could not have produced the output identified in the question. Choices B, C, and D are all incorrect because the ceil(), floor(), and round() functions all could have produced the amount given. (Topic 3.2)

20. 

B. 13

Explanation Blank spaces are still counted as part of the overall length of a text string. Because SMITHY has six characters and seven blank spaces, the length() function returns 13 for the length of this string. Choice A is incorrect because the value given doesn't take into account the blank spaces padded into the value stored in the column. Choice D would have been correct if the column had been declared as a CHAR(60) column rather than a VARCHAR2(60) column. Finally, you have no logical basis for arriving at 30 as the answer, so choice C can be eliminated immediately. (Topic 3.2)

21. 

B. floor()

Explanation The floor() function always rounds to the lower integer value when given a decimal to work with, and because -98 is smaller than -97.342, that is the result floor() returns. Choices A, C, and D are all incorrect because ceil(), round(), and trunc() all return -97 as the result of this query. (Topic 3.2)

22. 

A. ceil()

Explanation The ceil() function always rounds up to the next highest integer value when presented with a decimal, and because 257 is the next highest integer, that is what ceil() returns. Choices B, C, and D are all incorrect because those functions round down to the next lowest integer when given the decimal value in this question. (Topic 3.2)

23. 

D. -168

Explanation Oracle returns -168 as the result of this query because 168 months are between March 15, 1983, and March 15, 1997. The result is negative because 1983 is a lesser value than 1997, and because Oracle subtracts the second value from the first, the result is negative. Had the dates passed into months_between () been reversed, choice C would have been the correct answer. Choices A and B are obviously incorrect. (Topic 3.2)

24. 

D. to_number()

Explanation Although date information is stored internally within Oracle as a number, you cannot use the to_number() function to convert the date to an actual number, thus making it unnecessary and wrong to use a date format mask with the to_number() function. Choices A, B, and C all indicate functions or situations where it is appropriate to use a date format mask. (Topic 3.3)

25. 

C. select p.prod_d, p.prod_name, b.box_loc from product p, storage_box b where p.stor_box_num = b.stor_box_num and p.prod_name = 'WIDGET';

Explanation The join and filter conditions required for this query are represented correctly in choice C because the common column in both tables is joined and the filtering condition on PROD_NAME for all widgets is represented correctly. Choice A is incorrect because the PRODUCT and STORAGE_BOX tables do not share the PROD_ID column in common—they share the STOR_BOX_NUM column in common. Choice B is incorrect because no joining condition exists between the two tables, which will cause the output to form a Cartesian product. Finally, choice D is incorrect because the join condition refers to the STOR_BOX_NUM columns ambiguously in both tables. (Topic 4.1)

26. 

B. Three

Explanation You will need n - 1 join conditions, where n is the number of tables, plus a filter comparison, to obtain the result requested in this question. Because three tables are present, you will need two join conditions, plus the filter condition, for a total of three comparison operations. (Topic 4.1)

27. 

C. select product.id, product.name, storage.loc from product natural join storage on product.box# = storage.box#;

Explanation Natural joins do not require you to identify a join condition because Oracle assumes the join will be executed on the common columns in both tables. Thus, the on clause in choice C is unnecessary, and will result in an error. Choice A identifies the traditional way to define a join in Oracle, whereas choice B identifies the ANSI/ISO-compliant way to define a join in Oracle. Finally, choice D is incorrect because it properly defines how to specify a natural join in Oracle. (Topic 4.1)

28. 

D. Even though outer join operations permit NULL values from one of the tables, you still need to specify equality comparisons to join those tables.

Explanation Choice D is the logical opposite of choice A, and therefore is the correct answer. For this reason, choice A is also incorrect. Choice B is incorrect because you specify a left join in order to see all of table A's rows, even when no corresponding record exists in table B. Finally, choice C is incorrect because you specify a right join in order to see all of table B's rows, even when no corresponding record exists in table A. (Topic 4.2)

29. 

B. select p.prod_id, p.prod_name, b.box_loc from produ ct p left outer jon storage_box b on p.stor_box_num = b.stor_box_num where p.prod_name = 'WIDGET';

Explanation Choice B is the only statement that properly defines an outer join meeting the criteria specified by the question. Choices A and C are easy targets to eliminate because they combine the ANSI/ISO outer join syntax with the traditional Oracle syntax—this is not permitted in the Oracle database, and Oracle will return an error if you attempt to do so. Choice D is incorrect because it specifies a full outer join of all rows in both tables that would otherwise not have been returned if an equijoin was executed. (Topic 4.2)

30. 

C. select e.ename, a.street_address, a.city, a.state, a.post_code from emp e right outer join addr a on e.empno = a.empno where a.state = 'TEXAS';

Explanation Choice C is correct because the Oracle outer join operator is on the right side of the join comparison operation. This signifies that you must execute a right outer join using the ANSI/ISO syntax. Choice A is incorrect because the left or right keyword is missing from the statement. Choice B is incorrect because a left outer join will return records from EMP even where no corresponding record exists in ADDR. Choice D is incorrect because the traditional Oracle syntax for outer joins is incorrectly used in the same statement as the ANSI/ISO syntax. (Topic 4.2)

31. 

A. Full outer join

Explanation The output in this question clearly shows a situation where records from both PRODUCT and BOX are returned even when no corresponding record exists in either table. This is precisely the functionality provided by full outer joins. Choices B and C are incorrect because full outer joins return both the records from left and right outer joins. Finally, choice D is incorrect because an equijoin operation would not have returned the second or the third records listed in the output of the query. (Topic 4.2)

32. 

D. select region, prod_type, time, sum(profit) from profits group by cube (region, prod_type, time);

Explanation When you see a question indicating that the output of a query should produce a cross-tabulation of information, you should automatically know that the result requested is produced by the cube keyword. Choice A identifies a properly formed column clause containing a group function needed by the group by clause, but does not contain the needed cube keyword, so it is therefore incorrect. Choice B is incorrect because the column clause contains no group function. Choice C is incorrect for the same reason. (Topic 5.2)

33. 

A. select deptno, job, sum(sal) from emp group by job, deptno;

Explanation The statement in choice A is correct because it contains reference to a group function. The group by clause is correct even though the columns referenced are in a different order than they appear in the column clause of the query, which is acceptable so long as all non-group columns are listed before the group expression. Choice B is incorrect because the group expression is listed before the non-group expressions, which results in an error. Choice C is incorrect because no group by clause appears in the query, resulting in an error. Finally, choice D is incorrect for the same reason that choice B is incorrect—the group expression is listed to the left of a non-group expression, resulting in an error. (Topic 5.2)

34. 

D. sum(A.SAL)

Explanation When an order by clause is present, then Oracle lists output of the query according to the expression included in the order by clause. Otherwise, Oracle sorts the output by columns listed in the group by clause. Thus, choices A, B, and C are all incorrect. (Topic 5.1)

35. 

C. select region, prod_type, period, avg(profit) from profits group by region, prod_type, period having avg(profit) > 100000;

Explanation Choice C contains a well-formed column clause and group by clause, and uses the having clause to filter the results according to the criteria identified in the question. A careful read of choice D enables you to discard it, because the having clause in that choice filters results where average profits are less than $100,000, not greater than that amount. Choices A and B inappropriately attempt to use the where clause in order to filter unwanted data. (Topic 5.4)

36. 

C. select e.empno, e.ename from emp e where sal < (select sum(x.vouch_amt) from expense x where x.empno = e.empno);

Explanation To obtain the correct result, you will need to have Oracle calculate the total amount for all vouchers submitted by each employee listed in the EMP table, and only choice C correctly shows the correlated subquery required for the task. Choice A shows the sum of all vouchers in the EXPENSE table, an amount that will surely be greater than everyone's salary. Choice B is incorrect because it likely results in an error where a single-row subquery expected by the parent query returns more than one row. Choice D is incorrect because the exists operator is an inappropriate comparison between parent and subquery, given the need for a listing of employees whose expense vouchers total more than the employee's salary. (Topic 6.4)

37. 

B. select e.ename from emp e where exists (select x.empno from expense x where x.vouch_amt > 10000 and x.empno = e.empno);

Explanation The statement in choice B is correct because it properly uses the exists operator and forms the correlated subquery required to obtain the same result as the query shown in the question. Choice A is incorrect because the reference to the EXPENSE table in the parent query is out of scope. Choice C is incorrect for the same reason. Finally, the where clause forming a join and using the exists operation in choice D is redundant and therefore incorrect. (Topic 6.2)

38. 

A. A single-row subquery

Explanation The way to determine what kind of subquery is shown in this question is to determine how much output is produced by the query. Because only one record in the EMP table contains the value 'MARTIN' for ENAME, this subquery returns only one row and is therefore a single-row subquery. Choice B is incorrect for this reason. Choice C is incorrect because a from clause subquery is the same as an inline view, and no subquery is shown in the from clause of the query in this question. Finally, choice D is incorrect because the subquery does not contain reference to multiple columns. (Topic 6.3)

39. 

A. select sum(profit) from profits where region in (select region from regions where reg_head in ('SMITHERS', 'FUJIMORI', 'LAKKARAJU')) and product = 'TOYS';

Explanation To obtain the correct result, you need a multiple-row subquery listing the regions headed by the region heads identified in the question. You also want a filtering condition on the PRODUCT column so only toys are returned. Choice A gives you all these things. Choice B is incorrect because the subquery incorrectly includes filter conditions operating on the REGIONS table that are meant to operate on the PROFITS table. Choice C is incorrect because the equality comparison between the REGION column and the values returned from the subquery will result in an error because the single-row subquery the parent query expects will in fact return more than one row. Finally, choice D is incorrect for the same reason as choice B, and because of a missing parenthesis at the end of the query. (Topic 6.1)

40. 

C. with

Explanation The with clause can be used to define a summary dataset to avoid redundancy in both the parent query and the subquery in Oracle. You would not use the group by clause for this purpose, eliminating choice A, nor would you use the order by clause for this purpose, eliminating choice B. Finally, you would not use the having clause for this purpose, eliminating choice D. (Topic 6.1)

41. 

B. select nvl(e.deptno,99), e.ename, e.job, e.sal from emp e where e.sal = (select max(e2.sal) from emp e2 where nvl(e.deptno,99) = nvl(e2.deptno, 99));

Explanation Even SQL experts should find this question challenging. You are asked to determine which of these statements will return 99 in the DEPTNO column where the DEPTNO column is currently NULL in the dataset shown in the question. The most obvious answer is to find the query where the column clause contains a nvl() function on the DEPTNO column in the column clause. The problem is that all the choices contain references to the nvl() function in the column clause. Thus, you have to look beyond that factor for other clues, and your best bet is to try to find reasons to eliminate wrong answers rather than clues to find the right answer. Your first clue comes in choice A, where the parent query where clause tips you off that the multiple-column subquery is expected by the parent query but not provided, making that choice incorrect. Second, you should notice that in choice C, the group expression in the subquery necessitates a group by clause that is not provided in the subquery, making that choice incorrect as well. If you noticed these important clues, you've narrowed down your odds of guessing the right answer to 50/50. If you recall that 99 is not a value actually stored in the DEPTNO column and that group by clauses ignore NULL values by default, you should be able to eliminate choice D therefore leaving you with the correct answer, choice B. (Topic 6.1)

42. 

C. select prod_name, profit from (select prod_name, sum(profit) from profits group by prod_name order by sum(profit) desc) where rownum <=5;

Explanation Choice C correctly indicates the query containing an inline view that will produce a listing of the five best-selling products in the company's history. Choice A is incorrect because profits are not grouped by product name over the entire company's history in the inline view, but rather broken out by quarter, which will produce the wrong result. Choice B is incorrect because you do not need to join the contents of the PROFITS table with the inline view. Moreover, choice B does nothing to filter out the five top-selling products in company history. Finally, the inline view in choice D does not contain a group by clause, which will result in an error due to the presence of the group function in the inline view's column clause, making that choice incorrect. (Topic 6.3)

43. 

C. accept v_period prompt 'Enter the time period => 'select profit from profits where prod_type = 'TOYS' and time_period = '&v_period';

Explanation Because the users have complained about readability and interaction according to the text of the question, you should base your answer on the choice that provides interactive definition of the time period and does so with a readable prompt. Choice C provides for these conditions. Choice D is close but does not provide for a readable prompt, so that choice is incorrect. Choice A is incorrect because the prompt Oracle will use does not address the readability requirement. Choice B is incorrect because the use of the define command limits interaction between SQL*Plus and the user. (Topic 7.1)

44. 

A. Variable v_hiredate must be changed to accept DATE information.

Explanation When variables are defined using the accept command in SQL*Plus, Oracle implicitly defines the datatype as CHAR. You must therefore specify the datatype when the variable is meant to accept non-CHAR information. Thus, choice A is the answer. Choice B is incorrect because the trunc() function is acceptable in this query. Choice C is incorrect because you needn't eliminate the prompt clause. Finally, the script does not work fine as is, so choice D is incorrect. (Topic 7.1)

45. 

D. create table cats-over-5-lbs as select c_name, c_weight from cats where c_weight > 5;

Explanation You cannot include hyphens or dashes as part of the name of any table in Oracle, thus making choice D the correct answer. Choice A is incorrect because that choice identifies a proper create table command. Choice B is incorrect because that choice identifies a proper create table as select command. Choice C is incorrect because that choice identifies a proper create global temporary table command. (Topic 9.2)

46. 

C. Change the column names in the object being created.

Explanation Changing the column names in a table when an object with that table's name already exists in Oracle will not prevent the same error from happening again. Instead, you should create the table as a different user, drop the existing object with the same name, or rename the existing object. Thus, choice C is correct, and all other choices are incorrect. (Topic 9.4)

47. 

B. 871039453.1

Explanation Because the column was defined as datatype NUMBER(10,2), Oracle only permits numbers with up to eight places to the left of the decimal point to be placed into the column on this table. Thus, choice B is correct because that number has nine digits to the left of the decimal point. Choices C and D both identify proper numbers for this column. The number in choice A can also be stored in this column, but Oracle implicitly rounds off to the hundredths place to the right of the decimal point. (Topic 9.3)

48. 

B. 7

Explanation The vsize() function returns a value of 7 for all columns of DATE datatype, no matter what the actual date appears to be. The information about KING's specific value for HIREDATE is only there to distract you. (Topic 3.3)

49. 

C. 40

Explanation The vsize() function always returns a value equivalent to the size of the CHAR column regardless of the actual value stored in that column. This is because Oracle pads whatever value you specify for storage in a CHAR column with blanks up to the width of the CHAR column. Had the column been defined as a VARCHAR2 column, choice A would have been correct. All other choices should be easy to eliminate once you understand Oracle datatypes. (Topic 3.3)

50. 

B. A default clause on the JOB_WAGE column defined when the table was created specified the value when the row was inserted.

Explanation The purpose of a default clause is to specify a default value for a column whenever users don't explicitly identify the value to populate in the column for a row being added to the table. Choice A is incorrect because an insert statement will not populate column values for existing rows in the table. Choice C is incorrect because you cannot hide values in a values clause of an insert statement. Finally, choice D is incorrect because changing the JOB_WAGE column via a later update statement isn't the only way this value could have been added to the table. (Topic 9.3)

51. 

D. Copy column records from the temporary location back to the main table.

Explanation If you review all choices carefully before selecting an answer, you should notice that several steps of the process required to perform the task identified by the question are listed as choices. Its up to you to put those steps in order. The correct order is: C, A, B, D. The question then states that you have just completed the step identified in choice B. Thus, the only step left to perform is the one identified in choice D, the correct answer. (Topic 9.4)

52. 

A. Immediately following statement execution

Explanation Oracle drops the PROFIT column as soon as the statement identified in the answer choice is executed. Choices B and C identify the other way to remove columns from Oracle using the set unused column and drop unused columns clauses. However, we didn't see that option being used in the question, so those choices are incorrect. Finally, you cannot remove a column using the alter table modify command. (Topic 9.4)

53. 

D. Nothing; the statement is executed automatically.

Explanation Once you've issued the appropriate alter table statement to increase the size of a column, you are done with this task. Oracle will then automatically increase the size of the column. Choices A, B, and C identify steps appropriate for either decreasing the size of a column or altering that column's datatype, and therefore are incorrect. (Topic 9.4)

54. 

B. alter table sales modify product_type varchar2(10);

Explanation To increase the size of a column, you use the alter table modify command shown in choice B. Choice A is incorrect because that choice adds an extra column to the table unnecessarily. Choices C and D are incorrect because they identify steps in a process for removing a column from the table, which is not required by the question. (Topic 9.4)

55. 

B. The child column

Explanation Dropping a parent table will not remove the common column from the child table, making choice B the correct answer. Choice A is incorrect because associated constraints on the parent table are most certainly removed when you drop the parent table. Triggers and indexes on the parent table are dropped when the parent table is dropped as well, making choices C and D incorrect. (Topic 9.5)

56. 

D. create table profits (product_name varchar2(10) primary key, sale_period varchar2(10) primary key, profit number);

Explanation The primary key clause used for defining a primary key as a column constraint for both the PRODUCT_NAME and SALE_PERIOD columns as shown in choice D is not permitted in the Oracle database. Other choices show composite primary keys defined properly. (Topic 10.2)

57. 

B. alter table sales add constraint ck_sales_01 check (product_type in (select product_type from valid_products));

Explanation You cannot use subqueries when defining valid values for check constraints—all values must be static. Choices A, C, and D all identify check constraints defined with static valid values and are permitted within the Oracle database. (Topic 10.2)

58. 

B. Existing entries are checked for violations, PK_PRICES_01 is not enabled, and Oracle does not check subsequent entries for violations immediately.

Explanation Oracle ignores the novalidate keyword because the constraint wasn't defined as deferrable in the question. Oracle thus checks existing entries for violations, and finds violations. PK_PRICES_01 will not be enabled, and Oracle does not check for future violations because the constraint isn't enabled. Choices A, C, and D are all incorrect for this reason. (Topic 10.2)

59. 

C. Foreign key constraint

Explanation Foreign key constraints in child tables create dependencies that later make it difficult to disable primary key constraints on parent tables. Choice A is incorrect because check constraints cannot create relationships between tables. Choice B is incorrect for the same reason. Finally, unique constraints also cannot create relationships between tables and is incorrect as well. (Topic 10.1)

60. 

A. alter table sales modify (unit_prices null);

Explanation The syntax for removing a not NULL constraint from a table is shown correctly in choice A. Choice B is incorrect because it defines a not NULL constraint. Choices C and D identify improper syntax for defining nullabililty in Oracle columns. (Topic 10.2)

OCP Exam 2: Introduction to SQL

1. 

You join data from two tables, COW_MILK (C) and CARTON_CRATE (C1), into one result set and display that set in your session. The tables have a common column, called CARTON_NUM in both tables. You want to see the data in table COW_MILK for BESS the cow and all corresponding information in CARTON_CRATE, but if no data is in CARTON_NUM, you don't want to see the data in COW_MILK. Which of the following choices correctly displays the where clause you should use?

where C.COW_NAME <> 'BESS' AND C.CARTON_NUM = C1.CARTON_NUM;

where C.CARTON_NUM = C1.CARTON_NUM;

where C.COW_NAME = 'BESS';

where C.COW_NAME = 'BESS' AND C.CARTON_NUM = C1.CARTON_NUM;

where C.COW_NAME = 'BESS' AND C.CARTON_NUM = C1.CARTON_NUM (+);

2. 

You create a table with a primary key that is populated on insert with a value from a sequence, and then you add several hundred rows to the table. You then drop and recreate the sequence with the original sequence code. Suddenly, your users are getting constraint violations. Which of the following explanations is most likely the cause?

Dropping a sequence also removes any associated primary keys.

Any cached sequence values before the sequence was dropped are unusable.

The table is read-only.

The insert statements contain duplicate data due to the reset sequence.

3. 

You are developing SQL statements for the application. Which of the following SQL operations requires the use of a subquery?

in

exists

between

like

4. 

Review the following transcript from a SQL*Plus session:

SELECT CEIL(4093.505) FROM DUAL;

CEIL(4093.505)

--------------------

4094

Which single-row function could not be used to produce 4093 from the number passed to the ceil( ) function?

round( )

trunc( )

floor( )

abs( )

5. 

You have a script you plan to run using SQL*Plus that contains several SQL statements that update banking information for one person in several different tables based on name. Because the script only changes information for one person, you want the ability to enter the name only once and have that information reused throughout the script. Which of the following options is the best way to accomplish this goal in such a way that you don't need to modify the script each time you want to run it?

Use define to capture the name value for each run.

Use accept to capture the name value for each run.

Use the & character to specify lexical substitution for names at runtime.

Hard-code names in all SQL statements, and change the value for each run.

6. 

You need to undo some data changes. Which of the following data changes cannot be undone using the rollback command?

update

truncate

delete

insert

7. 

You are developing some code to handle transaction processing. Each of the following items signifies the beginning of a new transaction except one. Which is it?

savepoint

set transaction

Opening a new session

commit

8. 

The following SQL statement is invalid:

SELECT PRODUCT, BRAND

WHERE UPC_CODE = '650-35365656-34453453454-45';

Which of the following choices indicates an area of change that would make this statement valid?

A select clause

A from clause

A where clause

An order by clause

9. 

You are at the beginning of your current transaction and want to prevent your transaction from being able to change data in the database. To prevent any statements in the current transaction from altering database tables, which statement is used?

set transaction

rollback

commit

savepoint

10. 

Your application searches for data in the EMP table on the database on a nullable column indicating whether a person is male or female. To improve performance, you decide to index the table. The table contains more than 2,000,000 rows, and the column contains few NULL values. Which of the following indexes would be most appropriate?

Nonunique B-tree index

Unique B-tree index

Bitmap index

Primary key index

11. 

Your employee expense application stores information for invoices in one table. Each invoice can have several items, which are stored in another table. Each invoice may have one or more items, or none at all, but every item must correspond to one invoice. The relationship between the INVOICE table and INVOICE_ITEM table is best described as which of the following?

Parent to child

Detail to master

Primary key to foreign key

Foreign key to primary key

12. 

You issue the following statement:

SELECT DECODE(UPC_CODE, 40390, 'DISCONTINUED', 65421, 'STALE',

90395, 'BROKEN', 'ACTIVE') FROM INVENTORY;

If the value for UPC_CODE is 20395, what information will this statement display?

DISCONTINUED

STALE

BROKEN

ACTIVE

13. 

You are developing advanced queries for an Oracle database. Which of the following where clauses makes use of Oracle's capability to logically test values against a set of results returned without explicitly knowing what the set is before executing the query?

where COL_A = 6

where COL_A in (6,7,8,9,10)

where COL_A between 6 AND 10

where COL_A in (select NUM from TAB_OF_NUMS)

14. 

You are developing a multiple-row query to handle a complex and dynamic comparison operation in the Olympics. Two tables are involved. CONTESTANT lists all contestants from every country, and MEDALS lists every country and the number of gold, silver, and bronze medals they have. If a country has not received one of the three types of medals, a zero appears in the column. Thus, a query will always return data, even for countries that haven't won a medal. Which of the following queries shows only the contestants from countries with more than ten medalists of any type?

select NAME from CONTESTANT C, MEDALS M where C.COUNTRY = M.COUNTRY;

select NAME from CONTESTANT where COUNTRY C in (select COUNTRY from MEDALS M where C.COUNTRY = M.COUNTY)

select NAME from CONTESTANT where COUNTRY C = (select COUNTRY from MEDALS M where C.COUNTRY = M.COUNTY)

select NAME from CONTESTANT where COUNTRY in (select COUNTRY from MEDALS where NUM_GOLD + NUM_SILVER + NUM_BRONZE > 10)

15. 

You issue the following query in a SQL*Plus session:

SELECT NAME, AGE, COUNTRY FROM CONTESTANT

WHERE (COUNTRY, AGE) IN ( SELECT COUNTRY, MIN(AGE)

FROM CONTESTANT GROUP BY COUNTRY);

Which of the following choices identifies both the type of query and the expected result from the Oracle database?

Single-row subquery, the youngest contestant from one country

Multiple-row subquery, the youngest contestant from all countries

Multiple-column subquery, the youngest contestant from all countries

Multiple-column subquery; Oracle will return an error because = should replace in

16. 

The contents of the CONTESTANTS table are listed as follows:

NAME AGE COUNTRY

---------------- -------------- ---------------

BERTRAND 24 FRANCE

GONZALEZ 29 SPAIN

HEINRICH 22 GERMANY

TAN 39 CHINA

SVENSKY 30 RUSSIA

SOO 21

You issue the following query against this table:

SELECT NAME FROM CONTESTANT

WHERE (COUNTRY, AGE) IN ( SELECT COUNTRY, MIN(AGE)

FROM CONTESTANT GROUP BY COUNTRY);

Which of the following contestants will not be listed among the output?

SOO

HEINRICH

BERTRAND

GONZALEZ

17. 

An object in Oracle contains many columns that are functionally dependent on the key column for that object. The object requires segments to be stored in areas of the database other than the data dictionary. The object in question is correctly referred to as which of the following objects?

Synonym

Table

Sequence

View

18. 

You need to compute an N-dimensional cross-tabulation in your SQL statement output for reporting purposes. Which of the following clauses can be used for this purpose?

having

cube

rollup

trim( )

19. 

You are indexing Oracle data in an application. The index will be on a column containing sequential numbers with at least seven significant digits. Most, if not all, entries will start with the digit 1. Which of the following indexes is best suited for the task?

B-tree indexes

Reverse-key indexes

Bitmap indexes

Descending indexes

20. 

You need to store a large block of text data in Oracle. These text blocks will be around 3,500 characters in length. Which datatype should you use for storing these large objects?

VARCHAR2

CLOB

BLOB

BFILE

21. 

Dropping a table has which of the following effects on a non-unique index created for the table?

It has no effect.

The index is dropped.

The index is rendered invalid.

The index contains NULL values.

22. 

Which of the following statements about indexes is true?

Columns with low cardinality are handled well by B-tree indexes.

Columns with low cardinality are handled poorly by bitmap indexes.

Columns with high cardinality are handled well by B-tree indexes.

23. 

Which of the following methods should you use to add to the number of columns selected by a view?

Add more columns to the underlying table.

Issue the alter view statement.

Use a correlated subquery in conjunction with the view.

Drop and recreate the view with references to select more columns.

24. 

Which of the following choices is a valid parameter for sequence creation?

identified by

using temporary tablespace

maxvalue

on delete cascade

25. 

The following options each show a line in a statement issued against the Oracle database. Which line will produce an error?

create view EMP_VIEW_01

as select E.EMPID, E.LASTNAME, E.FIRSTNAME, A.ADDRESS

from EMPLOYEE E, EMPL_ADDRESS A

where E.EMPID = A.EMPID

with check option;

This statement contains no errors.

26. 

You are granting privileges on your table to another user. Which object privilege enables the user to create his or her own table with a foreign key on a column in your table?

references

index

select

delete

27. 

Which of the following statements about roles are true? (Choose three.)

Roles can be granted to other roles.

Privileges can be granted to roles.

Roles can be granted to users.

Roles can be granted to synonyms.

28. 

After referencing NEXTVAL, what happens to the value in CURRVAL?

It is incremented by one.

It is now in PREVVAL.

It is equal to NEXTVAL.

It is unchanged.

29. 

The EMP_SALARY table has two columns: EMP_USER and SALARY. EMP_USER is set to be the same as the Oracle username. To support user MARTHA, the salary administrator, you create a view with the following statement:

CREATE VIEW EMP_SAL_VW

AS SELECT EMP_USER, SALARY

FROM EMP_SALARY

WHERE EMP_USER <> 'MARTHA';

MARTHA is supposed to be able to view and update anyone's salary in the company except her own through this view. Which of the following clauses do you need to add to your view-creation statement in order to implement this functionality?

with admin option

with grant option

with security option

with check option

30. 

The INVENTORY table has three columns: UPC_CODE, UNITS, and DELIV_DATE. The primary key is UPC_CODE. New records are added daily through a view. The view was created using the following code:

CREATE VIEW DAY_INVENTORY_VW

AS SELECT UPC_CODE, UNITS, DELIV_DATE

FROM INVENTORY

WHERE DELIV_DATE = SYSDATE

WITH check OPTION;

What happens when a user tries to insert a record with duplicate UPC_CODE?

The statement fails due to the with check option clause.

The statement succeeds.

The statement fails due to the primary key constraint.

The statement inserts everything except the date.

31. 

You are cleaning information out of the Oracle database. Which of the following statements gets rid of all views that use a table at the same time you eliminate the table from the database?

drop view

alter table

drop index

alter table drop constraint

32. 

You create a view with the following statement:

CREATE VIEW BASEBALL_TEAM_VW

AS SELECT B.JERSEY_NUM, B.POSITION, B.NAME

FROM BASEBALL_TEAM B

WHERE B.NAME = USER;

What will happen when user JONES attempts to select a listing for user SMITH?

The select receives an error.

The select succeeds.

The select receives NO ROWS SELECTED.

The select adds data only to BASEBALL_TEAM.

33. 

Which of the following integrity constraints automatically create an index when defined? (Choose two.)

Foreign keys

unique constraints

not NULL constraints

Primary keys

34. 

Which of the following dictionary views gives information about the position of a column in a primary key?

ALL_PRIMARY_KEYS

USER_CONSTRAINTS

ALL_IND_COLUMNS

ALL_TABLES

35. 

Developer ANJU executes the following statement: create table ANIMALS as select * from MASTER.ANIMALS;. What is the effect of this statement?

A table named ANIMALS is created in the MASTER schema with the same data as the ANIMALS table owned by ANJU.

A table named ANJU is created in the ANIMALS schema with the same data as the ANIMALS table owned by MASTER.

A table named ANIMALS is created in the ANJU schema with the same data as the ANIMALS table owned by MASTER.

A table named MASTER is created in the ANIMALS schema with the same data as the ANJU table owned by ANIMALS.

36. 

User JANKO would like to insert a row into the EMPLOYEE table that has three columns: EMPID, LASTNAME, and SALARY. The user would like to enter data for EMPID 59694 and LASTNAME Harris, but no salary. Which statement would work best?

insert into EMPLOYEE values (59694,'HARRIS', NULL);

insert into EMPLOYEE values (59694,'HARRIS');

insert into EMPLOYEE (EMPID, LASTNAME, SALARY) values (59694,'HARRIS');

insert into EMPLOYEE (select 59694 from 'HARRIS');

37. 

No relationship officially exists between two tables. Which of the following choices is the strongest indicator of a parent-child relationship?

Two tables in the database are named VOUCHER and VOUCHER_ITEM, respectively.

Two tables in the database are named EMPLOYEE and PRODUCTS, respectively.

Two tables in the database were created on the same day.

Two tables in the database contain none of the same columns.

38. 

Which of the following are valid database table datatypes in Oracle? (Choose three.)

CHAR

VARCHAR2

BOOLEAN

NUMBER

39. 

Omitting the where clause from a delete statement has which of the following effects?

The delete statement fails because no records are present to delete.

The delete statement prompts the user to enter criteria for the deletion.

The delete statement fails because of syntax error.

The delete statement removes all records from the table.

40. 

The following options each show a line in a statement. Which line will produce an error?

create table GOODS

(GOODNO NUMBER,

GOOD_NAME VARCHAR2(20) check(GOOD_NAME in (select NAME from AVAIL_GOODS)),

constraint PK_GOODS_01

primary key (GOODNO));

This statement has no errors.

41. 

Which of the following is the transaction control that prevents more than one user from updating data in a table?

Locks

Commits

Rollbacks

Savepoints

42. 

Which of the following methods should you use to increase the number of nullable columns for a table?

Use the alter table statement.

Ensure that all column values are NULL for all rows.

First, increase the size of adjacent column datatypes, and then add the column.

Add the column, populate the column, and then add the not NULL constraint.

43. 

A user issues the statement select count(*) from EMPLOYEE. The query takes an inordinately long time and returns a count of zero. Which of the following is the most cost-effective solution?

Upgrade the hardware.

Truncate the table.

Upgrade the version of Oracle.

Delete the high-water mark.

44. 

You are creating some tables in your database as part of the logical data model. Which of the following constraints have an index associated with them that is generated automatically by Oracle?

unique

foreign key

check

not NULL

45. 

Each of the following statements is true about referential integrity except one. Which is it?

The referencing column in the child table must correspond with a primary key in the parent.

All values in the referenced column in the parent table must be present in the referencing column in the child.

The datatype of the referenced column in the parent table must be identical to the referencing column in the child.

All values in the referencing column in the child table must be in present in the referenced column in the parent.

46. 

You are managing constraints on a table in Oracle. Which of the following choices correctly identifies the limitations on check constraints?

Values must be obtained from a lookup table.

Values must be part of a fixed set defined by create or alter table.

Values must include reserved words like sysdate and user.

Column cannot contain a NULL value.

47. 

Which of the following is not a group function?

avg( )

sqrt( )

sum( )

max( )

48. 

In order to perform an inner join, which criteria must be true?

The common columns in the join do not need to have shared values.

The tables in the join need to have common columns.

The common columns in the join may or may not have shared values.

The common columns in the join must have shared values.

49. 

Once defined, how long will a variable remain defined in SQL*Plus?

Until the database is shut down

Until the instance is shut down

Until the statement completes

Until the session completes

50. 

You want to change the prompt Oracle uses to obtain input from a user. Which of the following choices are used for this purpose? (Choose two.)

Change the prompt in the config.ora file.

Alter the prompt clause of the accept command.

Enter a new prompt in the login.sql file.

A prompt in Oracle cannot be changed.

51. 

No search criteria for the EMPLOYEE table are known. Which of the following options is appropriate for use when search criteria are unknown for comparison operations in a select statement? (Choose two.)

select * from EMPLOYEE where EMPID = &empid;

select * from EMPLOYEE where EMPID = 69494;

select * from EMPLOYEE where EMPID = (select empid from invoice where INVOICE_NO = 4399485);

select * from EMPLOYEE;

52. 

Which of the following is the default character for specifying substitution variables in select statements?

Ampersand

Ellipses

Quotation marks

Asterisk

53. 

A user is setting up a join operation between tables EMPLOYEE and DEPT. The user wants the query to return some of the employees in the EMPLOYEE table, but the employees are not assigned to department heads yet. Which select statement is most appropriate for this user?

select e.empid, d.head from EMPLOYEE e, dept d;

select e.empid, d.head from EMPLOYEE e, dept d where e.dept# = d.dept#;

select e.empid, d.head from EMPLOYEE e, dept d where e.dept# = d.dept# (+);

select e.empid, d.head from EMPLOYEE e, dept d where e.dept# (+) = d.dept#;

54. 

Which of the following uses of the having clause are appropriate? (Choose three.)

To put returned data into sorted order

To exclude certain data groups based on known criteria

To include certain data groups based on unknown criteria

To include certain data groups based on known criteria

55. 

Which of the following best describes a Cartesian product?

A group function

Produced as a result of a join select statement with no where clause

The result of fuzzy logic

A special feature of Oracle server

56. 

Which of the following methods is used to change the default character that identifies runtime variables?

Modifying the init.ora file

Modifying the login.sql file

Issuing the define variablename command

Issuing the set define command

57. 

User THOMAS has been granted the role SALES_ANALYZER, which gives her access the SALES table for writing reports. However, when she tries to do so, she gets this error: ORA-00942: table or view does not exist. Which of the following statements can she issue in order to resolve the problem?

alter user thomas default role sales_analyzer;

set role sales_analyzer;

grant select on sales to sales_analyzer;

grant sales_analyzer to thomas;

58. 

User FRANKLIN owns the PROFITS table and the SALES_ANALYZER role, which has already been granted to DAVIS. FRANKLIN grants select privileges on PROFITS to the SALES_ANALYZER role. At what point will that privilege be made available to DAVIS?

The next time DAVIS logs into Oracle

The next time FRANKLIN grants the SALES_ANALYZER role to DAVIS

The next time FRANKLIN grants the privilege to SALES ANALYZER

Immediately after the privilege is granted to SALES_ANALYZER

59. 

User IMADBA wants to give user DAVIS, a brand-new employee who started today, the ability to create tables in the Oracle database. Which of the following choices identifies a step that doesn't need to take place before DAVIS can start creating tables?

create user davis identified by new_employee;

grant create session to davis;

grant create table to davis;

grant create public synonym to davis;

60. 

You are granting privileges on the Oracle database. Which of the following choices identifies a system privilege enabling you to connect to the database?

CONNECT

RESOURCE

create session

references

Answers

1. 

D. where C.COW_NAME = 'BESS' AND C.CARTON_NUM = C1.CARTON_NUM;

Explanation Two components are required in your where clause—you need a join clause and something that only pulls records from COW_MILK for BESS. The right answer is where C.COW_NAME = 'BESS' AND C.CARTON_NUM = C1.CARTON_NUM;. Another choice is similar to this one, but because it uses the not equal (<>) clause for getting information only for BESS, it is not the choice you want. The other two choices are incomplete, and therefore wrong. (Topic 2.1)

2. 

D. The insert statements contain duplicate data due to the reset sequence.

Explanation The correct answer is that the insert statements contain duplicate data due to the reset sequence. When you drop and re-create the sequence from its original code, you reset the start value for that sequence. Subsequent insert statements will then attempt to add rows where the value in the primary key is duplicated information. The question has no information about read-only status, so you should assume that the answer concerning the table being read-only is not correct. Dropping a sequence does nothing to a table's primary key—no relationship exists between the two. Finally, although it is true that any cached sequence values that existed when the sequence was dropped are now unusable, this point has little relevance to the question at hand. (Topic 12.1)

3. 

B. exists

Explanation Only when using the exists statement must you use a correlated subquery. Although you can use a subquery with your use of in, you are not required to do so because you can specify a set of values instead. The between keyword indicates a range of values and does not permit the use of a subquery. The like keyword is used for wildcard comparisons and also does not permit the use of a subquery. (Topic 2.1)

4. 

D. abs()

Explanation All of the functions except for abs() will give you a result of 4093 when you pass them 4093.505. abs() returns the absolute value of the number you pass into the function. round() can give you a result of 4093 if you also pass in a second parameter defining the precision to which you want to round the function, whereas trunc() will give you a result of 4093 with only 4093.505 as input. floor() gives you a result of 4093, because it is the logical opposite of the ceil() function. (Topic 3.2)

5. 

B. Use accept to capture the name value for each run.

Explanation The accept command is the best way to handle the situation. Although you could use define to assign a value to a variable used throughout the script, only accept enables you to dynamically enter a value for that variable. Lexical substitutions identified with the & character will only work for the current statement, meaning that the same value assigned in one statement will not be used in the next statement unless you reenter it. (Topic 7.3)

6. 

B. truncate

Explanation Once a truncate operation is complete, that's it—the change is made and saved. This is because truncate is not a DML operation that can be performed as part of a transaction. The truncate command is a DDL operation, and as such, it has an implied commit at the end of its execution. If you want to get the data back after truncating, you need to recover it. For the other operations listed as choices in this question—insert, update, and delete statements—Oracle enables you to discard the changes using the rollback command. (Topic 9.5)

7. 

A. savepoint

Explanation savepoint operations simply act as logical breakpoints in a transaction. They do not cause Oracle to save or discard data, but merely act as a breakpoint with which you can perform partial transaction rollbacks later. The set transaction and commit commands indicate the beginning of a new transaction. Creating a new session with Oracle implicitly begins a transaction as well. (Topic 8.6)

8. 

B. A from clause

Explanation No SQL statement can survive without a from clause. For this reason, Oracle provides you with the DUAL table, so that you can perform arithmetic operations on expressions and not on table data while still satisfying this syntactic construct. Because this statement already has a select clause, you don't need to add another. The where clause is optional, but because the statement already has one, you don't need to add another. Finally, your SQL statement does not require an order by clause. (Topic 1.2)

9. 

A. set transaction

Explanation The set transaction command is used to define the transaction state to be read-only. rollback and commit statements are used to end the transaction. The savepoint command denotes logical breakpoints for the transaction. (Topic 8.6)

10. 

C. Bitmap index

Explanation Bitmap indexes work well in situations where the data in the column is static. In this case, the column contains gender information, which rarely changes. The number of distinct possible values is limited to only two as well. Thus, this column is a bad candidate for B-tree indexes of any sort, but perfect for bitmap indexes. Remember that B-tree indexes work well for columns with high cardinality or number of distinct values corresponding to the overall number of entries in the column. (Topic 12.2)

11. 

A. Parent to child

Explanation This question describes the relationship between the INVOICE and INVOICE_ITEM table, and the appropriate answer is parent to child. This is because the relationship described between invoices and invoice items is optional, given that invoices may have no invoice items, but that all invoice items must have a corresponding invoice. (Topic 10.2)

12. 

D. ACTIVE

Explanation The decode() function acts as a case statement. The first parameter indicates the column whose values you want decoded. If the value in the column equals parameter 2, then decode() returns parameter 3. If the value in the column equals parameter 4, decode() returns parameter 5, and so on. If the value in the column doesn't equal any of the other parameters specified, then decode() returns the default value specified as the last parameter. Thus, because the column value is not specified for any of the parameters, the returned value is the default, ACTIVE. (Topic 3.2)

13. 

D. where COL_A in (select NUM from TAB_OF_NUMS)

Explanation The where clause in choice D is an excellent example of the definition of a subquery, which is the example being asked for in the question. Choice A is not a comparison operation between a column and a set of values, because only one value is being compared. Choice B is a comparison of a column to a set of values, but the set is static and defined at the time the query is issued. Choice C is a range-comparison operation, a variant on choice B, and therefore also wrong. Only choice D enables Oracle to dynamically generate the list of values to which COL_A will be compared. (Topic 6.2)

14. 

D. select NAME from CONTESTANT where COUNTRY in (select COUNTRY from MEDALS where NUM_GOLD + NUM_SILVER + NUM_BRONZE > 10)

Explanation The query in choice D is correct because it contains the subquery that correctly returns a subset of countries that have contestants who won ten or more medals of any type. Choice A is incorrect because it contains a join operation, not a subquery. Choice B is simply a rewrite of choice A to use a multiple-row subquery, but does not go far enough to restrict return data. Choice C is a single-row subquery that does essentially the same thing as choice B. (Topic 6.4)

15. 

C. Multiple-column subquery, the youngest contestant from all countries

Explanation Because the main query compares against the results of two columns returned in the subquery, this is a multiple-column subquery that will return the youngest contestant from every country in the table. This multiple-column subquery is also a multiple-row subquery, but because the defining factor is that two columns are present, you should focus more on that fact than on the rows being returned. This fact eliminates choices A and B. The subquery does return multiple rows, however. You should also be sensitive to the fact that the main query must use an in clause, not the equal sign (=), making choice D incorrect as well. (Topic 6.3)

16. 

A. SOO

Explanation The correct answer is SOO because the subquery operation specified by the in clause ignores NULL values implicitly. Thus, because SOO has no country defined, that row is not selected as part of the subquery. As a result, SOO won't show up as having the youngest age in the results of this query. (Topic 6.4)

17. 

B. Table

Explanation The object being referred to is a table. A table has many columns, each of which is functionally dependent on the key column. Choice A is incorrect because a synonym is simply another name you can use to reference a table, not an actual table itself. A sequence is a number generator in Oracle that, again, does not require storage in a segment other than a dictionary segment, making choice C incorrect. Finally, a view is similar to a table in that it contains many columns, each of which is functionally dependent on the key. However, views contain no data needing to be stored in a segment, so choice D is wrong as well. (Topic 9.1)

18. 

B. cube

Explanation The cube keyword included in a group by clause of a SQL statement in Oracle8i enables you to perform N-dimensional cross-tabulations within the Oracle database, returning the result set directly to the client. This keyword is useful in queries within data warehouses. Choice C is incorrect because even though the rollup keyword was also added to SQL queries in Oracle8i, this keyword supports subtotal and grand total calculations of grouped data. Although the having expression is also available in group operations, choice A is incorrect because you do not need to define a having clause in order to use either cube or rollup. Finally, choice D is incorrect because the trim() function combines the capabilities of ltrim() and rtrim(). (Topic 5.3)

19. 

B. Reverse-key indexes

Explanation A reverse-key index is one where the contents of the indexed column are reversed. This gives a higher amount of lead-in selectivity than a straight B-tree index would, because the cardinality of the root node in the B-tree would be low. This is based on the fact that most records would begin with the digit 1 (recall the question content if you don't understand why), whereas the reverse of that key would have greater cardinality. Be careful of choice A because although cardinality is high, choice B gives a better option for performance. Choice C is incorrect because bitmap indexes are designed for low-cardinality records like status or gender. Finally, choice D indicates an index type that wouldn't suit this situation. (Topic 12.2)

20. 

A. VARCHAR2

Explanation Because the text blocks are within the size limits imposed in Oracle8i for the VARCHAR2 datatype, it is best to use the scalar type rather than a large object for simplicity sake. If the block were larger than 4,000 bytes, you would most likely use a CLOB, but because the size requirement is less than 4,000 bytes, choice C is incorrect. You would use a BLOB to store binary large objects, making choice B incorrect. Finally, the text block is not stored as an external file (you would not use the BFILE type), making choice D incorrect. (Topic 9.3)

21. 

B. The index is dropped.

Explanation Like automatically generated indexes associated with a table's primary key, the indexes created manually on a table to improve performance will be dropped if the table is dropped. Choices A, C, and D are therefore invalid. (Topic 12.2)

22. 

C. Columns with high cardinality are handled well by B-tree indexes.

Explanation Columns with low cardinality are the bane of B-tree indexes, eliminating choice A. Furthermore, bitmap indexes are primarily used for performance gains on columns with low cardinality, eliminating choice B. (Topic 12.2)

23. 

D. Drop and recreate the view with references to select more columns.

Explanation Choice A is incorrect because adding columns to the underlying table will not add columns to the view, but will likely invalidate the view. Choice B is incorrect because the alter view statement simply recompiles an existing view definition, whereas the real solution here is to change the existing view definition by dropping and recreating the view. Choice C is incorrect because a correlated subquery will likely worsen performance, and underscores the real problem—a column must be added to the view. (Topic 11.2)

24. 

C. maxvalue

Explanation The maxvalue option is a valid option for sequence creation. Choices A and B are both part of the create user statement, whereas choice D is a part of a constraint declaration in an alter table or create table statement. (Topic 12.1)

25. 

F. This statement contains no errors.

Explanation Even though the reference to with check option is inappropriate, considering that inserts into complex views are not possible, the statement will not actually produce an error when compiled. Therefore, the view has no errors. This is not something that can be learned. It requires hands-on experience with Oracle. (Topic 11.4)

26. 

A. references

Explanation The references privilege gives the user the ability to refer back to your table in order to link to it via a foreign key from his or her table to yours. Choice B is incorrect because the index privilege enables the user to create an index on a table, whereas choice C is incorrect because the select privilege enables users to query data in your table. Finally, choice D is incorrect because the delete privilege is only required for enabling the other user to delete data into your table. (Topic 13.3)

27. 

A, B, and C. Roles can be granted to other roles, privileges can be granted to roles, and roles can be granted to users.

Explanation Choice D is the only option not available to managing roles. Roles cannot be granted to synonyms. (Topic 13.2)

28. 

C. It is equal to NEXTVAL.

Explanation Once NEXTVAL is referenced, the sequence increments the integer and changes the value of CURRVAL to be equal to NEXTVAL. (Topic 12.1)

29. 

D. with check option

Explanation The appropriate clause is with check option. You can add this clause to a create view statement so that the view will not let you to add rows to the underlying table that cannot then be selected in the view. The with admin option and with grant option clauses are used to assign administrative ability to users along with granting them a privilege. The with security option is a work of fiction—it does not exist in Oracle. (Topic 11.4)

30. 

C. The statement fails due to the primary key constraint.

Explanation It should be obvious that the statement fails—the real question here is why. The reason is because of the primary key constraint on UPC_CODE. As soon as you try to add a duplicate record, the table will reject the addition. Although the view has with check option specified, this is not the reason the addition fails. It would be the reason an insert fails if you attempt to add a record for a day other than today, however. (Topic 10.2)

31. 

A. drop view

Explanation When a table is dropped, Oracle eliminates all related database objects, such as triggers, constraints, and indexes. However, Oracle does not remove views. Views are actually considered separate objects, and although the view will not function properly after you drop the underlying table, Oracle will keep the view around after the table is dropped. (Topic 11.2)

32. 

C. The select receives NO ROWS SELECTED.

Explanation Although the query will succeed (translation: you won't receive an error), you must beware of the distracter in choice B. In reality, choice C is the better answer because it more accurately identifies what really will occur when you issue this statement. This view will behave as any select statement would when you list criteria in the where clause that no data satisfies—by returning NO ROWS SELECTED. This is not an error condition, but you wouldn't call it a successful search for data either, making both those choices incorrect. Finally, select statements never add data to a table. (Topic 1.2)

33. 

B and D. unique constraints and primary keys

Explanation Every constraint that enforces uniqueness creates an index to assist in the process. The two integrity constraints that enforce uniqueness are unique constraints and primary keys. (Topic 10.2)

34. 

C. ALL_IND_COLUMNS

Explanation This view is the only one listed that provides column positions in an index. Because primary keys create an index, the index created by the primary key will be listed with all the other indexed data. Choice A is incorrect because no view exists in Oracle called ALL_PRIMARY_KEYS. Choice B is incorrect because, although USER_CONSTRAINTS lists information about the constraints in a database, it does not contain information about the index created by the primary key. Choice D is incorrect because ALL_TABLES contains no information related to the position of a column in an index. (Topic 12.2)

35. 

C. A table named ANIMALS is created in the ANJU schema with the same data as the ANIMALS table owned by MASTER.

Explanation This question requires you to look carefully at the create table statement in the question and to know some things about table creation. First, a table is always created in the schema of the user who created it. Second, because the create table as select clause was used, choices B and D are both incorrect because they identify the table being created as something other than ANIMALS, among other things. Choice A identifies the schema into which the ANIMALS table will be created as MASTER, which is incorrect for the reasons just stated. (Topic 9.2)

36. 

A. insert into EMPLOYEE values (59694,'HARRIS', NULL);

Explanation This choice is acceptable because the positional criteria for not specifying column order are met by the data in the values clause. When you would like to specify that no data be inserted into a particular column, one method of doing so is to insert a NULL. Choice B is incorrect because not all columns in the table have values identified. When using positional references to populate column data, values must be present for every column in the table. Otherwise, the columns that will be populated should be named explicitly. Choice C is incorrect because when a column is named for data insert in the insert into clause, a value must definitely be specified in the values clause. Choice D is incorrect because using the multiple row insert option with a select statement is not appropriate in this situation. (Topic 8.2)

37. 

A. Two tables in the database are named VOUCHER and VOUCHER_ITEM, respectively.

Explanation This choice implies the use of a naming convention similar to the one we discussed earlier, where the two tables with a foreign key relationship are given similar names. Although it is not guaranteed that these two tables are related, the possibility is strongest in this case. Choice B implies the same naming convention, and because the two tables' names are dissimilar, it is unlikely that the tables are related in any way. Choice C is incorrect because the date a table is created has absolutely no bearing on what function the table serves in the database. Choice D is incorrect because two tables cannot be related if no common columns exist between them. (Topic 10.1)

38. 

A, B, and D. CHAR, VARCHAR2, and NUMBER

Explanation BOOLEAN is the only invalid datatype in this listing. Although BOOLEAN is a valid datatype in PL/SQL, it is not a datatype available in the Oracle database, meaning that you cannot create a column in a table that uses the BOOLEAN datatype. (Topic 9.3)

39. 

D. The delete statement removes all records from the table.

Explanation Only one effect is produced by leaving off the where clause from any statement that permits one: The requested operation is performed on all records in the table. (Topic 8.4)

40. 

C. GOOD_NAME VARCHAR2(20) check(GOOD_NAME in (select NAME from AVAIL_GOODS)),

Explanation A check constraint cannot contain a reference to another table, nor can it reference a virtual column, such as ROWID or SYSDATE. The other lines of the create table statement contain correct syntax. (Topic 10.2)

41. 

A. Locks

Explanation Locks are the mechanisms that prevent more than one user at a time from making changes to the database. All other options refer to the commands that are issued to mark the beginning, middle, and end of a transaction. Remember, the commit and rollback keywords end the current transaction and begin a new one, whereas the savepoint keyword marks a logical breakpoint within the transaction. (Topic 8.6)

42. 

A. Use the alter table statement.

Explanation The alter table statement is the only choice offered that enables the developer to increase the number of columns per table. Choice B is incorrect because setting a column to all NULL values for all rows does simply that. Choice C is incorrect because increasing the adjacent column sizes simply increases the sizes of the columns. Choice D is incorrect because the listed steps outline how to add a column with a not NULL constraint, something not specified by the question. (Topic 9.4)

43. 

B. Truncate the table.

Explanation Choices A and C may work, but an upgrade of hardware and software will cost far more than truncating the table (choice B). Choice D is partly correct, as some change will be required to the high-water mark, but the change is to reset, not eliminate entirely. (Topic 9.5)

44. 

A. unique

Explanation Only unique and primary key constraints require Oracle to generate an index that supports or enforces the uniqueness of the column values. foreign key, check, and not NULL constraints do not require an index. (Topic 10.1)

45. 

B. All values in the referenced column in the parent table must be present in the referencing column in the child.

Explanation Referential integrity is from child to parent, not vice versa. The parent table can have many values that are not present in child records, but the child record must correspond to something in the parent. Thus, the correct answer is all values in the referenced column in the parent table must be present in the referencing column in the child. (Topic 10.1)

46. 

B. Values must be part of a fixed set defined by create or alter table.

Explanation A check constraint may only use fixed expressions defined when you create or alter the table with the constraint definition. The reserved words like sysdate and user, or values from a lookup table, are not permitted, making those answers incorrect. Finally, NULL values in a column are constrained by not NULL constraints, a relatively unsophisticated form of check constraints. (Topic 10.1)

47. 

B. sqrt()

Explanation Square root operations are performed on one column value. (Topic 3.2)

48. 

B. The tables in the join need to have common columns.

Explanation It is possible that a join operation will produce no return data, just as it is possible for any select statement not to return any data. Choices A, C, and D represent the spectrum of possibilities for shared values that may or may not be present in common columns. However, joins themselves are not possible without two tables having common columns. (Topic 4.1)

49. 

D. Until the session completes

Explanation A variable defined by the user during a session with SQL*Plus will remain defined until the session ends or until the user explicitly undefines the variable. (Topic 1.3)

50. 

B and C. Alter the prompt clause of the accept command and enter a new prompt in the login.sql file.

Explanation Choice D should be eliminated immediately, leaving the user to select between choices A, B, and C. Choice A is incorrect because config.ora is a feature associated with Oracle's client/server network communications product. Choice C is correct because you can use the set sqlprompt command within your login.sql file. This is a special Oracle file that will automatically configure aspects of the SQL*Plus session, such as the default text editor, column and NLS data formats, and other items. (Topic 7.1)

51. 

A and C. select * from EMPLOYEE where EMPID = &empid; and select * from EMPLOYEE where EMPID = (select empid from invoice where INVOICE_NO = 4399485);

Explanation Choice A details the use of a runtime variable that can be used to have the user input appropriate search criteria after the statement has begun processing. Choice C details the use of a subquery that enables the user to select unknown search criteria from the database using known methods for obtaining the data. Choice B is incorrect because the statement simply provides a known search criterion; choice D is incorrect because it provides no search criteria at all. (Topic 7.1)

52. 

A. Ampersand

Explanation The ampersand (&) character is used by default to define runtime variables in SQL*Plus. (Topic 7.1)

53. 

C. select e.empid, d.head from EMPLOYEE e, dept d where e.dept# = d.dept# (+);

Explanation Choice C details the outer join operation most appropriate to this user's needs. The outer table in this join is the DEPT table, as identified by the (+) marker next to the DEPT# column in the comparison operation that defines the join. (Topic 4.2)

54. 

B, C, and D. To exclude certain data groups based on known criteria, to include certain data groups based on unknown criteria, and to include certain data groups based on known criteria

Explanation All exclusion or inclusion of grouped rows is handled by the having clause of a select statement. Choice A is not an appropriate answer because sort order is given in a select statement by the order by clause. (Topic 5.4)

55. 

B. Produced as a result of a join select statement with no where clause

Explanation A Cartesian product is the result dataset from a select statement where all data from both tables is returned. A potential cause of a Cartesian product is not specifying a where clause for the join select statement. (Topic 4.1)

56. 

D. Issuing the set define command

Explanation Choice A is incorrect because a change to the init.ora file alters the parameters Oracle uses to start the database instance. Choice B is incorrect because, although the login.sql file can define many properties in a SQL*Plus session, the character that denotes runtime variables is not one of them. Choice C is incorrect because the define command is used to define variables used in a session, not an individual statement. (Topic 1.3)

57. 

B. set role sales_analyzer;

Explanation The problem likely occurs because SALES_ANALYZER was not the default role assigned to THOMAS. She can enable this role using the set role command, making choice B the correct answer. Because the appropriate privileges are already granted to THOMAS via the role, the grant command needn't be issued, making choices C and D incorrect. Finally, choice A is incorrect because a user cannot alter his or her own user settings using the alter user statement to change role information; he or she can only use the alter user statement to change his or her own password. (Topic 13.2)

58. 

D. Immediately after the privilege is granted to SALES_ANALYZER

Explanation Access to objects granted by giving the appropriate privilege to the appropriate role takes effect immediately. DAVIS does not need to log into Oracle again, making choice A incorrect. Choice B is incorrect because the SALES_ANALYZER role needn't be granted to DAVIS again. Finally, choice C is incorrect because the privilege needn't be granted to SALES_ANALYZER again. (Topic 13.3)

59. 

D. grant create public synonym to davis;

Explanation DAVIS doesn't need the ability to create public synonyms in order to create tables. Thus, choice D is correct. However, DAVIS will need a user ID setup on Oracle by IMADBA, making choice A incorrect. DAVIS will also need the ability to log into Oracle using the privilege identified in choice B and the ability to create tables given by the privilege in choice C. Thus, those other answers are incorrect. (Topic 12.3)

60. 

C. create session

Explanation The create session privilege enables you to connect to the Oracle database, making C the correct answer. Choices A and B both identify Oracle-created roles that already have the appropriate privileges for logging into Oracle granted to them, but remember—these are roles, not privileges themselves. Finally, choice D is incorrect because the references privilege is an object privilege that does not give you the ability to connect to Oracle. (Topic 13.3)