SQL and PL/SQL Interview questions
1. The most important DDL statements in SQL are:
CREATE TABLE - creates a new database table ALTER TABLE - alters (changes) a database table
DROP TABLE - deletes a database table
CREATE INDEX - creates an index (search key) DROP INDEX - deletes an index
2. Operators used in SELECT statements.
= Equal
<> or != Not equal
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern
<> or != Not equal
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern
3. SELECT statements:
SELECT column_name(s) FROM table_name
SELECT DISTINCT column_name(s) FROM table_name
SELECT column FROM table WHERE column operator value
SELECT column FROM table WHERE column LIKE pattern
SELECT column,SUM(column) FROM table GROUP BY column
SELECT column,SUM(column) FROM table GROUP BY column HAVING SUM(column) condition value
Note that single quotes around text values and numeric values should not be enclosed in quotes. Double quotes may be acceptable in some databases.
SELECT DISTINCT column_name(s) FROM table_name
SELECT column FROM table WHERE column operator value
SELECT column FROM table WHERE column LIKE pattern
SELECT column,SUM(column) FROM table GROUP BY column
SELECT column,SUM(column) FROM table GROUP BY column HAVING SUM(column) condition value
Note that single quotes around text values and numeric values should not be enclosed in quotes. Double quotes may be acceptable in some databases.
4. The SELECT INTO Statement is most often used to create backup copies of tables or for archiving records.
SELECT column_name(s) INTO newtable [IN externaldatabase] FROM source
SELECT column_name(s) INTO newtable [IN externaldatabase] FROM source WHERE column_name operator value
SELECT column_name(s) INTO newtable [IN externaldatabase] FROM source WHERE column_name operator value
5. The INSERT INTO Statements:
INSERT INTO table_name VALUES (value1, value2,....)
INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....)
INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....)
6. The Update Statement:
UPDATE table_name SET column_name = new_value WHERE column_name = some_value
7. The Delete Statements:
DELETE FROM table_name WHERE column_name = some_value
Delete All Rows:
DELETE FROM table_name or DELETE * FROM table_name
Delete All Rows:
DELETE FROM table_name or DELETE * FROM table_name
8. Sort the Rows:
SELECT column1, column2, ... FROM table_name ORDER BY columnX, columnY, ..
SELECT column1, column2, ... FROM table_name ORDER BY columnX DESC
SELECT column1, column2, ... FROM table_name ORDER BY columnX DESC, columnY ASC
SELECT column1, column2, ... FROM table_name ORDER BY columnX DESC
SELECT column1, column2, ... FROM table_name ORDER BY columnX DESC, columnY ASC
9. The IN operator may be used if you know the exact value you want to return for at least one of the columns.
SELECT column_name FROM table_name WHERE column_name IN (value1,value2,..)
10. BETWEEN ... AND
SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2 The values can be numbers, text, or dates.
11. What is the use of CASCADE CONSTRAINTS?
When this clause is used with the DROP command, a parent table can be dropped even when a child table exists.
12. Why does the following command give a compilation error?
DROP TABLE &TABLE_NAME; Variable names should start with an alphabet. Here the table name starts with an '&' symbol.
13. Which system tables contain information on privileges granted and privileges obtained?
USER_TAB_PRIVS_MADE, USER_TAB_PRIVS_RECD
14. Which system table contains information on constraints on all the tables created?obtained?
USER_CONSTRAINTS.
15. What is the difference between TRUNCATE and DELETE commands?
<
TRUNCATE. with and DELETE used be can clause WHERE back. rolled cannot
operation TRUNCATE but back, Hence command. DML a is whereas command
DDL>
16. State true or false. !=, <>, ^= all denote the same operation?
True.
17. State true or false. EXISTS, SOME, ANY are operators in SQL?
True.
18. What will be the output of the following query?
SELECT REPLACE(TRANSLATE(LTRIM(RTRIM('!! ATHEN !!','!'), '!'), 'AN', '**'),'*','TROUBLE') FROM DUAL;?
19. What does the following query do?
SELECT SAL + NVL(COMM,0) FROM EMP;?
This displays the total salary of all employees. The null values in the commission column will be replaced by 0 and added to salary.
This displays the total salary of all employees. The null values in the commission column will be replaced by 0 and added to salary.
20. What is the advantage of specifying WITH GRANT OPTION in the GRANT command?
The privilege receiver can further grant the privileges he/she has obtained from the owner to any other user.
21. Which command executes the contents of a specified file?
START or @.
22. What is the value of comm and sal after executing the following query if the initial value of 'sal' is 10000
UPDATE EMP SET SAL = SAL + 1000, COMM = SAL*0.1;?
UPDATE EMP SET SAL = SAL + 1000, COMM = SAL*0.1;?
sal = 11000, comm = 1000.
23. Which command displays the SQL command in the SQL buffer, and then executes it?
RUN.
24. What command is used to get back the privileges offered by the GRANT command?
REVOKE.
25.
What will be the output of the following query? SELECT
DECODE(TRANSLATE('A','1234567890','1111111111'), '1','YES', 'NO' );? NO.
Explanation : The query checks whether a given string is a numerical digit.
26. Which date function is used to find the difference between two dates?
MONTHS_BETWEEN.
27. What operator performs pattern matching?
LIKE operator.
28. What is the use of the DROP option in the ALTER TABLE command?
It is used to drop constraints specified on the table.
29. What operator tests column for the absence of data?
IS NULL operator.
30. What are the privileges that can be granted on a table by a user to others?
Insert, update, delete, select, references, index, execute, alter, all.
31. Which function is used to find the largest integer less than or equal to a specific value?
FLOOR.
32. Which is the subset of SQL commands used to manipulate Oracle Database structures, including tables?
Data Definition Language (DDL).
33. What is the use of DESC in SQL?
DESC has two purposes. It is used to describe a schema as well as to retrieve rows from table in descending order.
Explanation :
The query SELECT * FROM EMP ORDER BY ENAME DESC will display the output sorted on ENAME in descending order.
Explanation :
The query SELECT * FROM EMP ORDER BY ENAME DESC will display the output sorted on ENAME in descending order.
34. What command is used to create a table by copying the structure of another table?
CREATE TABLE .. AS SELECT command
Explanation:
To copy only the structure, the WHERE clause of the SELECT command should contain a FALSE statement as in the following.
CREATE TABLE NEWTABLE AS SELECT * FROM EXISTINGTABLE WHERE 1=2;
If the WHERE condition is true, then all the rows or rows satisfying the condition will be copied to the new table.
Explanation:
To copy only the structure, the WHERE clause of the SELECT command should contain a FALSE statement as in the following.
CREATE TABLE NEWTABLE AS SELECT * FROM EXISTINGTABLE WHERE 1=2;
If the WHERE condition is true, then all the rows or rows satisfying the condition will be copied to the new table.
35. TRUNCATE TABLE EMP;
DELETE FROM EMP;
Will the outputs of the above two commands differ?
DELETE FROM EMP;
Will the outputs of the above two commands differ?
Both will result in deleting all the rows in the table EMP..
36. What is the output of the following query SELECT TRUNC(1234.5678,-2) FROM DUAL;?
1200.
37. What are the wildcards used for pattern matching.?
_ for single character substitution and % for multi-character substitution.
38. What is the parameter substitution symbol used with INSERT INTO command?
&
39. What is the sub-query?
Sub-query is a query whose return values are used in filtering conditions of the main query.
40. What is correlated sub-query?
Correlated sub-query is a sub-query, which has reference to the main query.
41. Explain CONNECT BY PRIOR?
Retrieves rows in hierarchical order eg.
select empno, ename from emp where.
select empno, ename from emp where.
42. Difference between SUBSTR and INSTR?
INSTR (String1, String2 (n, (m)),
INSTR returns the position of the m-th occurrence of the string 2 in string1. The search begins from nth position of string1.
SUBSTR (String1 n, m)
SUBSTR returns a character string of size m in string1, starting from n-th position of string1.
INSTR returns the position of the m-th occurrence of the string 2 in string1. The search begins from nth position of string1.
SUBSTR (String1 n, m)
SUBSTR returns a character string of size m in string1, starting from n-th position of string1.
43. Explain UNION, MINUS, UNION ALL and INTERSECT?
INTERSECT
- returns all distinct rows selected by both queries. MINUS - returns
all distinct rows selected by the first query but not by the second.
UNION - returns all distinct rows selected by either query UNION ALL -
returns all rows selected by either query, including all duplicates.
44. What is ROWID?
ROWID
is a pseudo column attached to each row of a table. It is 18 characters
long, blockno, rownumber are the components of ROWID.
45. What is the fastest way of accessing a row in a table?
Using ROWID.
CONSTRAINTS
CONSTRAINTS
46. What is an integrity constraint?
Integrity constraint is a rule that restricts values to a column in a table.
47. What is referential integrity constraint?
Maintaining
data integrity through a set of rules that restrict the values of one
or more columns of the tables based on the values of primary key or
unique key of the referenced table.
48. What is the usage of SAVEPOINTS?
SAVEPOINTS
are used to subdivide a transaction into smaller parts. It enables
rolling back part of a transaction. Maximum of five save points are
allowed.
49. What is ON DELETE CASCADE?
When
ON DELETE CASCADE is specified Oracle maintains referential integrity
by automatically removing dependent foreign key values if a referenced
primary or unique key value is removed.
50. What are the data types allowed in a table?
CHAR, VARCHAR2, NUMBER, DATE, RAW, LONG and LONG RAW.
CHAR pads blank spaces to the maximum length.
VARCHAR2 does not pad blank spaces.
For CHAR the maximum length is 255 and 2000 for VARCHAR2.
Only one LONG column is allowed. It is not possible to use LONG column in WHERE or ORDER BY clause.
- To modify the datatype of a column the column must be empty.
- To add a column with NOT NULL constrain, the table must be empty.
The integrity constraints are stored in USER_CONSTRAINTS.
The integrity constraints can be enabled or disabled by ALTER TABLE ENABLE CONSTRAINT / DISABLE CONSTRAINT.
59. If unique key constraint on DATE column is created, will it validate the rows that are inserted with SYSDATE?
It won't, Because SYSDATE format contains time attached with it.
Database link is a named path through which a remote database can be accessed.
Sequence name CURRVAL, sequence name NEXTVAL. It is not possible. Only if you access next value in the session, current value can be accessed.
CYCLE specifies that the sequence continue to generate values after reaching either maximum or minimum value. After pan-ascending sequence reaches its maximum value, it generates its minimum value. After a descending sequence reaches its minimum, it generates its maximum.
NO CYCLE specifies that the sequence cannot generate more values after reaching its maximum or minimum value.
- To protect some of the columns of a table from other users.
- To hide complexity of a query.
- To hide complexity of calculations.
A View can be updated/deleted/inserted if it has only one base table if the view is based on columns from one or more tables then insert, update and delete is not possible.
If changes are made to the tables and these tables are the base tables of a view, then the changes will be reference on the view.
64. Which of the following statements is true about implicit cursors?
1. Implicit cursors are used for SQL statements that are not named.
2. Developers should use implicit cursors with great care.
3. Implicit cursors are used in cursor for loops to handle data processing.
4. Implicit cursors are no longer a feature in Oracle.
1. Record type declaration.
2. Opening and parsing of SQL statements.
3. Fetches records from cursor.
4. Requires exit condition to be defined.
1. Use employee.lname%type.
2. Use employee.lname%rowtype.
3. Look up datatype for EMPLOYEE column on LASTNAME table and use that.
4. Declare it to be type LONG.
1. %found
2. %too_many_rows
3. %notfound
4. %rowcount
5. %rowtype
1. LOOP
2. END LOOP
3. IF-THEN
4. EXIT
69. Which line in the following statement will produce an error?
1. cursor action_cursor is
2. select name, rate, action
3. into action_record
4. from action_table;
5. There are no errors in this statement.
1. open
2. fetch
3. parse
4. None, cursor for loops handle cursor opening implicitly.
1. It causes the cursor to close
2. It causes the cursor to open
3. It loads the current row values into variables
4. It creates the variables to hold the current row values
11. (v_movie_id {Argument Mode} NUMBER, v_cost_per_ticket {argument mode} NUMBER)
12. IS
13. BEGIN
14. IF v_cost_per_ticket > 8.5 THEN
15. SELECT cost_per_ticket
16. INTO v_cost_per_ticket
17. FROM gross_receipt
18. WHERE movie_id = v_movie_id;
19. END IF;
20. END;
Which mode should be used for V_COST_PER_TICKET?
1. IN
2. OUT
3. RETURN
4. IN OUT
73. Read the following code:22. CREATE OR REPLACE TRIGGER update_show_gross
23. {trigger information}
24. BEGIN
25. {additional code}
26. END;
The trigger code should only execute when the column, COST_PER_TICKET, is greater than $3. Which trigger information will you add?
1. WHEN (new.cost_per_ticket > 3.75)
2. WHEN (:new.cost_per_ticket > 3.75
3. WHERE (new.cost_per_ticket > 3.75)
4. WHERE (:new.cost_per_ticket > 3.75)
1. Only one
2. All that apply
3. All referenced
4. None
1. Statement and Row 2. Statement only 3. Row only 4. Oracle Forms trigger
RETURN number IS
v_yearly_budget NUMBER;
BEGIN
SELECT yearly_budget
INTO v_yearly_budget
FROM studio
WHERE id = v_studio_id;
RETURN v_yearly_budget;
END;
Which set of statements will successfully invoke this function within SQL*Plus?
1. VARIABLE g_yearly_budget NUMBER
EXECUTE g_yearly_budget := GET_BUDGET(11);
2. VARIABLE g_yearly_budget NUMBER
EXECUTE :g_yearly_budget := GET_BUDGET(11);
3. VARIABLE :g_yearly_budget NUMBER
EXECUTE :g_yearly_budget := GET_BUDGET(11);
4. VARIABLE g_yearly_budget NUMBER
31. CREATE OR REPLACE PROCEDURE update_theater
32. (v_name IN VARCHAR v_theater_id IN NUMBER) IS
33. BEGIN
34. UPDATE theater
35. SET name = v_name
36. WHERE id = v_theater_id;
37. END update_theater;
79. When invoking this procedure, you encounter the error: ORA-000: Unique constraint(SCOTT.THEATER_NAME_UK) violated.
How should you modify the function to handle this error?
1. An user defined exception must be declared and associated with the error code and handled in the EXCEPTION section.
2. Handle the error in EXCEPTION section by referencing the error code directly.
3. Handle the error in the EXCEPTION section by referencing the UNIQUE_ERROR predefined exception.
4. Check for success by checking the value of SQL%FOUND immediately after the UPDATE statement.
41. v_budget studio.yearly_budget%TYPE;
42. BEGIN
43. v_budget := get_budget(11);
44. IF v_budget < 30000
45. THEN
46. set_budget(11,30000000);
47. END IF;
48. END;
You are about to add an argument to CALCULATE_BUDGET. What effect will this have?
1. The GET_BUDGET function will be marked invalid and must be recompiled before the next execution.
2. The SET_BUDGET function will be marked invalid and must be recompiled before the next execution.
3. Only the CALCULATE_BUDGET procedure needs to be recompiled.
4. All three procedures are marked invalid and must be recompiled.
2. SQLERRM
3. RAISE_APPLICATION_ERROR
4. RAISE_SERVER_ERROR
2. ENABLE TRIGGER check_theater;
3. ALTER TABLE check_theater ENABLE check_theater;
4. ENABLE check_theater;
53. {additional trigger information}
54. BEGIN
55. IF TO_CHAR(sysdate, DY) = MON
56. THEN
57. RAISE_APPLICATION_ERROR(-20000,Gross receipts cannot be deleted on Monday);
58. END IF;
59. END;
This trigger must fire before each DELETE of the GROSS_RECEIPT table. It should fire only once for the entire DELETE statement. What additional information must you add?
1. BEFORE DELETE ON gross_receipt
2. AFTER DELETE ON gross_receipt
3. BEFORE (gross_receipt DELETE)
4. FOR EACH ROW DELETED FROM gross_receipt
60.What is CYCLE/NO CYCLE in a Sequence?
CYCLE specifies that the sequence continue to generate values after reaching either maximum or minimum value. After pan-ascending sequence reaches its maximum value, it generates its minimum value. After a descending sequence reaches its minimum, it generates its maximum. NO CYCLE specifies that the sequence cannot generate more values after reaching its maximum or minimum value. 61. What are the advantages of VIEW? - To protect some of the columns of a table from other users. - To hide complexity of a query. - To hide complexity of calculations. 62. Can a view be updated/inserted/deleted? If Yes - under what conditions? A View can be updated/deleted/inserted if it has only one base table if the view is based on columns from one or more tables then insert, update and delete is not possible. 63. If a view on a single base table is manipulated will the changes be reflected on the base table? If changes are made to the tables and these tables are the base tables of a view, then the changes will be reference on the view. 64. Which of the following statements is true about implicit cursors? 1. Implicit cursors are used for SQL statements that are not named. 2. Developers should use implicit cursors with great care. 3. Implicit cursors are used in cursor for loops to handle data processing. 4. Implicit cursors are no longer a feature in Oracle. 65. Which of the following is not a feature of a cursor FOR loop? 1. Record type declaration. 2. Opening and parsing of SQL statements. 3. Fetches records from cursor. 4. Requires exit condition to be defined. 66. A developer would like to use referential datatype declaration on a variable. The variable name is EMPLOYEE_LASTNAME, and the corresponding table and column is EMPLOYEE, and LNAME, respectively. How would the developer define this variable using referential datatypes? 1. Use employee.lname%type. 2. Use employee.lname%rowtype. 3. Look up datatype for EMPLOYEE column on LASTNAME table and use that. 4. Declare it to be type LONG. 67. Which three of the following are implicit cursor attributes? 1. %found 2. %too_many_rows 3. %notfound 4. %rowcount 5. %rowtype 68. If left out, which of the following would cause an infinite loop to occur in a simple loop? 1. LOOP 2. END LOOP 3. IF-THEN 4. EXIT 69. Which line in the following statement will produce an error? 1. cursor action_cursor is 2. select name, rate, action 3. into action_record 4. from action_table; 5. There are no errors in this statement. 70. The command used to open a CURSOR FOR loop is 1. open 2. fetch 3. parse 4. None, cursor for loops handle cursor opening implicitly. 71. What happens when rows are found using a FETCH statement 1. It causes the cursor to close 2. It causes the cursor to open 3. It loads the current row values into variables 4. It creates the variables to hold the current row values 72. Read the following code: 10. CREATE OR REPLACE PROCEDURE find_cpt 11. (v_movie_id {Argument Mode} NUMBER, v_cost_per_ticket {argument mode} NUMBER) 12. IS 13. BEGIN 14. IF v_cost_per_ticket > 8.5 THEN 15. SELECT cost_per_ticket 16. INTO v_cost_per_ticket 17. FROM gross_receipt 18. WHERE movie_id = v_movie_id; 19. END IF; 20. END; Which mode should be used for V_COST_PER_TICKET? 1. IN 2. OUT 3. RETURN 4. IN OUT 73. Read the following code: 22. CREATE OR REPLACE TRIGGER update_show_gross 23. {trigger information} 24. BEGIN 25. {additional code} 26. END; The trigger code should only execute when the column, COST_PER_TICKET, is greater than $3. Which trigger information will you add? 1. WHEN (new.cost_per_ticket > 3.75) 2. WHEN (:new.cost_per_ticket > 3.75 3. WHERE (new.cost_per_ticket > 3.75) 4. WHERE (:new.cost_per_ticket > 3.75) 74. What is the maximum number of handlers processed before the PL/SQL block is exited when an exception occurs? 1. Only one 2. All that apply 3. All referenced 4. None 77. For which trigger timing can you reference the NEW and OLD qualifiers? 1. Statement and Row 2. Statement only 3. Row only 4. Oracle Forms trigger 78. Read the following code: CREATE OR REPLACE FUNCTION get_budget(v_studio_id IN NUMBER) RETURN number IS v_yearly_budget NUMBER; BEGIN SELECT yearly_budget INTO v_yearly_budget FROM studio WHERE id = v_studio_id; RETURN v_yearly_budget; END; Which set of statements will successfully invoke this function within SQL*Plus? 1. VARIABLE g_yearly_budget NUMBER EXECUTE g_yearly_budget := GET_BUDGET(11); 2. VARIABLE g_yearly_budget NUMBER EXECUTE :g_yearly_budget := GET_BUDGET(11); 3. VARIABLE :g_yearly_budget NUMBER EXECUTE :g_yearly_budget := GET_BUDGET(11); 4. VARIABLE g_yearly_budget NUMBER 31. CREATE OR REPLACE PROCEDURE update_theater 32. (v_name IN VARCHAR v_theater_id IN NUMBER) IS 33. BEGIN 34. UPDATE theater 35. SET name = v_name 36. WHERE id = v_theater_id; 37. END update_theater; 79. When invoking this procedure, you encounter the error: ORA-000: Unique constraint(SCOTT.THEATER_NAME_UK) violated. How should you modify the function to handle this error? 1. An user defined exception must be declared and associated with the error code and handled in the EXCEPTION section. 2. Handle the error in EXCEPTION section by referencing the error code directly. 3. Handle the error in the EXCEPTION section by referencing the UNIQUE_ERROR predefined exception. 4. Check for success by checking the value of SQL%FOUND immediately after the UPDATE statement. 80. Read the following code: 40. CREATE OR REPLACE PROCEDURE calculate_budget IS 41. v_budget studio.yearly_budget%TYPE; 42. BEGIN 43. v_budget := get_budget(11); 44. IF v_budget <> 45. THEN 46. set_budget(11,30000000); 47. END IF; 48. END; You are about to add an argument to CALCULATE_BUDGET. What effect will this have? 1. The GET_BUDGET function will be marked invalid and must be recompiled before the next execution. 2. The SET_BUDGET function will be marked invalid and must be recompiled before the next execution. 3. Only the CALCULATE_BUDGET procedure needs to be recompiled. 4. All three procedures are marked invalid and must be recompiled. |
|
OlĂ ,
ReplyDeleteBrilliant article, glad I slogged through the Oracle PLSQL Tutorial Pointit seems that a whole lot of the details really come back to from my past project.
i creat a view as(see below)
the problem is that i get dublicat rows and with UNION they are deselected,
i dont want to use UNION ALL
so my question is, how can i rewrite the two "select .. " to a Group by expression, Group by: YEAR, Month
and get the same result as UNION ALL
CREAT VIEW v_test_rerytering (.......) AS
select
F.ALDER
age,
cast(P.AR as VARCHAR2(4)) year,
ccast((P.MANAD)as VARCHAR2(2)) month,
cast(K.KON_KOD as VARCHAR2(50)) SEX,
cast('Ext' as VARCHAR2(50)) R_KOD,
F.NR_REK
REK
from test.Table_anstallda F join test.PERIOD P on P.PERIOD =
F.PERIOD
union
select
F.ALDER
age,
cast(P.AR as VARCHAR2(4)) year,
ccast((P.MANAD)as VARCHAR2(2)) month,
cast(K.KON_KOD as VARCHAR2(50)) SEX,
cast('Internal' as VARCHAR2(50)) R_KOD,
F.NR_dism
REK
from test.Table_anstallda F join test.PERIOD P on P.PERIOD_SN =
F.PERIOD;
Please keep providing such valuable information.
Merci Beaucoup,