Wednesday 29 August 2012

Relational Database Model - Codd's Rules - Part 1

Cool Database Fundas: Relational Database Model - Codd's Rules - Part 1: The Background - Dr. Edgar Frank Codd (1923-2003) introduced the "Relational Model" for database management systems in 1970 in a research...

Relational Database Model - Codd's Rules - Part 2

Cool Database Fundas: Relational Database Model - Codd's Rules - Part 2: This is in continuation to the last post " Relational Database Model - Codd's Rules - Part 1 " The following is explanation of the remain...

IT Certifications - How much they're worth

Cool Database Fundas: IT Certifications - How much they're worth: The Background - This time I am touching a seemingly non-technical topic, but important one; at times controversial and almost always lead...

Distributed Database System - Introduction

Cool Database Fundas: Distributed Database System - Introduction: Introduction - Today's business environment has an increasing need for distributed databases as the desire for reliable, scalable and acc...

Distributed Database System - Principles

Cool Database Fundas: Distributed Database System - Principles: Please spend a moment to read the previous post " Distributed Database System - Introduction " as the text below may contain some referenc...

Transaction Concurrency

Cool Database Fundas: Transaction Concurrency: Introduction - Consistent read / write operation while maximising the concurrent access is the key challenge in developing multi-user d...

Transaction Locks

Cool Database Fundas: Transaction Locks: In a previous post we discussed about why we need our databases to allow for concurrent transactions and the related problems and differe...

Database Basics

Cool Database Fundas: Database Basics: DataBase Management Systems (DBMS) - Let us first understand the meaning of this overall term in installments of meaning of each of simp...

What is RDBMS? - Part I

Cool Database Fundas: What is RDBMS? - Part I: Need for non-procedural databases was felt around 1960 for providing an alternative to  programming language interfaces to be replaced wit...

Distributed Database System - Principles

Cool Database Fundas: Distributed Database System - Principles: Please spend a moment to read the previous post " Distributed Database System - Introduction " as the text below may contain some referenc...

What is RDBMS? - Part II

Cool Database Fundas: What is RDBMS? - Part II: You are advised to visit Part I of this same heading as the following text may contain some references to it! There were a few questions...

Distributed Database System - Introduction

Cool Database Fundas: Distributed Database System - Introduction: Introduction - Today's business environment has an increasing need for distributed databases as the desire for reliable, scalable and acc...

What are Tablespaces?

Cool Database Fundas: What are Tablespaces?: "Tablespace" is part of storage architecture of some of the commercial database systems like Oracle or DB2. Some of the database systems (...

Delete vs. Truncate

Cool Database Fundas: Delete vs. Truncate: Delete and Truncate SQL verbs (commands) are frequently used to empty tables. The actual difference between the two is not much clear...

Database Design - Normalization - Normal Form - Pa...

Cool Database Fundas: Database Design - Normalization - Normal Form - Pa...: You are requested to visit " Database Design .... Part II " for continuity with this post. In the last two posts with the same heading we...

Data Integrity Constraints

Cool Database Fundas: Data Integrity Constraints: A Relational Database Management System must implement Data Integrity in the database in declarative manner ( Codd's Rule #10 ) to ensure...

Integrity Constraints - Creation

Cool Database Fundas: Integrity Constraints - Creation: Please Click Here for the explanation and background on the Data Integrity Constraints. Note : The set of commands / statements used he...

Data Integrity - Triggers

Cool Database Fundas: Data Integrity - Triggers: Please Click Here to continue from the background. Integrity Constraints are the most convenient form of implementation of data valida...

Data Integrity Using Views

Cool Database Fundas: Data Integrity Using Views: Data Integrity is implemented in the databases using various Constraints and Triggers . Whereas Integrity Constraints are a non-procedu...

Materialized Views

Cool Database Fundas: Materialized Views: What are Materialized Views? - Let us start with an example - A company has a database with a table "sales" maintaining millions of ...

Materialized Views

Cool Database Fundas: Materialized Views: What are Materialized Views? - Let us start with an example - A company has a database with a table "sales" maintaining millions of ...

Delete vs. Truncate

Cool Database Fundas: Delete vs. Truncate: Delete and Truncate SQL verbs (commands) are frequently used to empty tables. The actual difference between the two is not much clear...

Procedure vs. Function

Cool Database Fundas: Procedure vs. Function: A database (back end) programming language like PL/SQL in Oracle, has been provided to push the processing of the data to the server end w...

What are Index Organized Tables (IOT)?

Cool Database Fundas: What are Index Organized Tables (IOT)?: Introduction - Tables are what, RDBMS is all about. Tables provide a higher level abstraction layer for the logical storage of data, so ...

What are Clustered Tables ?

Cool Database Fundas: What are Clustered Tables ?: For an introduction to the table types and list visit What are Index Organized Tables ?   Clustered Tables - A "Cluster" is a way to...

What are temporary tables ?

Cool Database Fundas: What are temporary tables ?: For an introduction to the table types and list visit : What are Index Organized Tables ? Temporary Tables - "Temporary Tables" are a ...

What are External Tables ?

Cool Database Fundas: What are External Tables ?: For an introduction to the table types and list visit : What are Index Organized Tables ? "External Tables" are probably the types of ta...

What are Object Tables ?

Cool Database Fundas: What are Object Tables ?: For an introduction to the table types and list visit : What are Index Organized Tables ? The era of Relational Database Management Sy...

What are Nested Tables ?

Cool Database Fundas: What are Nested Tables ?: "Nested Table", as the name suggests is table within a table. A normal Heap Organized Table , if has a column whose datatype is table lik...

Choose a suitable table type - Challenge 1

Cool Database Fundas: Choose a suitable table type - Challenge 1: Examination must be an integral part of learning process or other way round, learning is incomplete without an examination. But not such e...

Database Indexes - Usage and Types

Cool Database Fundas: Database Indexes - Usage and Types: In a previous post entitled " Database Indexes - An Overview " we discussed about two major categories of the indexes - B*Tree and Bitmap...

Integrity Constraints - Creation

Cool Database Fundas: Integrity Constraints - Creation: Please Click Here for the explanation and background on the Data Integrity Constraints. Note : The set of commands / statements used he...

Cool Database Fundas: Data Integrity Constraints

Cool Database Fundas: Data Integrity Constraints: A Relational Database Management System must implement Data Integrity in the database in declarative manner ( Codd's Rule #10 ) to ensure...

Cool Database Fundas: Database Indexes - An Overview

Cool Database Fundas: Database Indexes - An Overview: Why create index? - DBMS is all about storing the data, allowing for the easy access and perform transaction on the data. RDBMS insis...

Tuesday 28 August 2012

Oracle Apps: Sample PL/SQL Programs

Oracle Apps: Sample PL/SQL Programs: 1) WRITE A PROGRAM TO PRINT HELLO WORLD  BEGIN  DBMS_OUTPUT.PUT_ LINE ('HELLO WORLD');  END;  /

Sunday 19 August 2012

SQL Queries

SQL Queries

Create the following Tables:

LOCATION
Location_ID
Regional_Group
122
NEW YORK
123
DALLAS
124
CHICAGO
167
BOSTON

DEPARTMENT
Department_ID
Name
Location_ID
10
ACCOUNTING
122
20
RESEARCH
124
30
SALES
123
40
OPERATIONS
167


JOB
Job_ID
Function
667
CLERK
668
STAFF
669
ANALYST
670
SALESPERSON
671
MANAGER
672
PRESIDENT



EMPLOYEE

EMPLOYEE_ID
LAST_NAME
FIRST_NAME
MIDDLE_NAME
JOB_ID
MANAGER_ID
HIREDATE
SALARY
COMM
DEPARTMENT_ID
7369
SMITH
JOHN
Q
667
7902
17-DEC-84
800
NULL
20
7499
ALLEN
KEVIN
J
670
7698
20-FEB-85
1600
300
30
7505
DOYLE
JEAN
K
671
7839
04-APR-85
2850
NULL
30
7506
DENNIS
LYNN
S
671
7839
15-MAY-85
2750
NULL
30
7507
BAKER
LESLIE
D
671
7839
10-JUN-85
2200
NULL
40
7521
WARK
CYNTHIA
D
670
7698
22-FEB-85
1250
500
30


Queries based on the above tables:

Simple Queries:

  1. List all the employee details
  2. List all the department details
  3. List all job details
  4. List all the locations
  5. List out first name,last name,salary, commission for all employees
  6. List out employee_id,last name,department id for all  employees and rename employee id as "ID  of the employee", last name as "Name of the employee", department id as  "department  ID"
  7. List out the employees anuual salary with their names only.


Where Conditions:

  1. List the details about "SMITH"
  2. List out the employees who are working in department 20
  3. List out the employees who are earning salary between 3000 and 4500
  4. List out the employees who are working in department 10 or 20
  5. Find out the employees who are not working in department 10 or 30
  6. List out the employees whose name starts with "S"
  7. List out the employees whose name start with "S" and end with "H"
  8. List out the employees whose name length is 4 and start with "S"
  9. List out the employees who are working in department 10 and draw the salaries more than 3500
  10. list out the employees who are not receiving commission.

Order By Clause:

  1. List out the employee id, last name in ascending order based on the employee id.
  2. List out the employee id, name in descending order based on salary column
  3. list out the employee details according to their last_name in ascending order and salaries in descending order
  4. list out the employee details according to their last_name in ascending order and then on department_id in descending order.


Group By & Having Clause:

  1. How many employees who are working in different departments wise in the organization
  2. List out the department wise maximum salary, minimum salary, average salary of the employees
  3. List out the job wise maximum salary, minimum salary, average salaries of the employees.
  4. List out the no.of employees joined in every month in ascending order.
  5. List out the no.of employees for each month and year, in the ascending order based on the year, month.
  6. List out the department id having atleast four employees.
  7. How many employees in January month.
  8. How many employees who are joined in January or September month.
  9. How many employees who are joined in 1985.
  10. How many employees joined each month in 1985.
  11. How many employees who are joined in March 1985.
  12. Which is the department id, having greater than or equal to 3 employees joined in April 1985.


Sub-Queries

  1. Display the employee who got the maximum salary.
  2. Display the employees who are working in Sales department
  3. Display the employees who are working as "Clerk".
  4. Display the employees who are working in "New York"
  5. Find out no.of employees working in "Sales" department.
  6. Update the employees salaries, who are working as Clerk on the basis of 10%.
  7. Delete the employees who are working in accounting department.
  8. Display the second highest salary drawing employee details.
  9. Display the Nth highest salary drawing employee details


Sub-Query operators: (ALL,ANY,SOME,EXISTS)

  1. List out the employees who earn more than every employee in department 30.
  2. List out the employees who earn more than the lowest salary in department 30.
  3. Find out whose department has not employees.
  4. Find out which department does not have any employees.


Co-Related Sub Queries:

47.Find out the employees who earn greater than the average salary for their department.

Joins

Simple join

48.List our employees with their department names
49.Display employees with their designations (jobs)
50.Display the employees with their department name and regional groups.
51.How many employees who are working in different departments and display with department name.
52.How many employees who are working in sales department.
53.Which is the department having greater than or equal to 5 employees and display the department names in ascending order.
54.How many jobs in the organization with designations.
55.How many employees working in "New York".

Non – Equi Join:

56.Display employee details with salary grades.
57.List out the no. of employees on grade wise.
58.Display the employ salary grades and no. of employees between 2000 to 5000 range of salary.


Self Join:

59.Display the employee details with their manager names.
60.Display the employee details who earn more than their managers salaries.
61.Show the no. of employees working under every manager.

Outer Join:

61.Display employee details with all departments.
62.Display all employees in sales or operation departments.


Set Operators:

63.List out the distinct jobs in Sales and Accounting Departments.
64.List out the ALL jobs in Sales and Accounting Departments.
65.List out the common jobs in Research and Accounting Departments in ascending order.



Answers

  1. SQL > Select * from employee;
  2. SQL > Select * from department;
  3. SQL > Select * from job;
  4. SQL > Select * from loc;
  5. SQL > Select first_name, last_name, salary, commission from employee;
  6. SQL > Select employee_id "id of the employee", last_name "name", department id as "department id" from employee;
  7. SQL > Select last_name, salary*12 "annual salary" from employee
  8. SQL > Select * from employee where last_name='SMITH';
  9. SQL > Select * from employee where department_id=20
  10. SQL > Select * from employee where salary between 3000 and 4500
  11. SQL > Select * from employee where department_id in (20,30)
  12. SQL > Select last_name, salary, commission, department_id from employee where department_id not in (10,30)
  13. SQL > Select * from employee where last_name like 'S%'
  14. SQL > Select * from employee where last_name like 'S%H'
  15. SQL > Select * from employee where last_name like 'S___'
  16. SQL > Select * from employee where department_id=10 and salary>3500
  17. SQL > Select * from employee where commission is Null
  18. SQL > Select employee_id, last_name from employee order by employee_id
  19. SQL > Select employee_id, last_name, salary from employee order by salary desc
  20. SQL > Select employee_id, last_name, salary from employee order by last_name, salary desc
  21. SQL > Select employee_id, last_name, salary from employee order by last_name, department_id desc
  22. SQL > Select department_id, count(*), from employee group by department_id
  23. SQL > Select department_id, count(*), max(salary), min(salary), avg(salary) from employee group by department_id
  24. SQL > Select job_id, count(*), max(salary), min(salary), avg(salary) from employee group by job_id
  25. SQL > Select to_char(hire_date,'month')month, count(*) from employee group by to_char(hire_date,'month') order by month
  26. SQL > Select to_char(hire_date,'yyyy') Year, to_char(hire_date,'mon') Month, count(*) "No. of employees" from employee group by to_char(hire_date,'yyyy'), to_char(hire_date,'mon')
  27. SQL > Select department_id, count(*) from employee group by department_id having count(*)>=4
  28. SQL > Select to_char(hire_date,'mon') month, count(*) from employee group by to_char(hire_date,'mon') having to_char(hire_date,'mon')='jan'
  29. SQL > Select to_char(hire_date,'mon') month, count(*) from employee group by to_char(hire_date,'mon') having to_char(hire_date,'mon') in ('jan','sep')
  30. SQL > Select to_char(hire_date,'yyyy') Year, count(*) from employee group by to_char(hire_date,'yyyy') having to_char(hire_date,'yyyy')=1985
  31. SQL > Select to_char(hire_date,'yyyy')Year, to_char(hire_date,'mon') Month, count(*) "No. of employees" from employee where to_char(hire_date,'yyyy')=1985 group by to_char(hire_date,'yyyy'),to_char(hire_date,'mon')
  32. SQL > Select to_char(hire_date,'yyyy')Year, to_char(hire_date,'mon') Month, count(*) "No. of employees" from employee where to_char(hire_date,'yyyy')=1985 and to_char(hire_date,'mon')='mar' group by to_char(hire_date,'yyyy'),to_char(hire_date,'mon')
  33. SQL > Select department_id, count(*) "No. of employees" from employee where to_char(hire_date,'yyyy')=1985 and to_char(hire_date,'mon')='apr' group by to_char(hire_date,'yyyy'), to_char(hire_date,'mon'), department_id having count(*)>=3
  34. SQL > Select * from employee where salary=(select max(salary) from employee)
  35. SQL > Select * from employee where department_id IN (select department_id from department where name='SALES')
  36. SQL > Select * from employee where job_id in (select job_id from job where function='CLERK'
  37. SQL > Select * from employee where department_id=(select department_id from department where location_id=(select location_id from location where regional_group='New York'))
  38. SQL > Select * from employee where department_id=(select department_id from department where name='SALES' group by department_id)
  39. SQL > Update employee set salary=salary*10/100 wehre job_id=(select job_id from job where function='CLERK')
  40. SQL > delete from employee where department_id=(select department_id from department where name='ACCOUNTING')
  41. SQL > Select * from employee where salary=(select max(salary) from employee where salary <(select max(salary) from employee))
  42. SQL > Select distinct e.salary from employee where & no-1=(select count(distinct salary) from employee where sal>e.salary)
  43. SQL > Select * from employee where salary > all (Select salary from employee where department_id=30)
  44. SQL > Select * from employee where salary > any (Select salary from employee where department_id=30)
  45. SQL > Select employee_id, last_name, department_id from employee e where not exists (select department_id from department d where d.department_id=e.department_id)
  46. SQL > Select name from department d where not exists (select last_name from employee e where d.department_id=e.department_id)
  47. SQL > Select employee_id, last_name, salary, department_id from employee e where salary > (select avg(salary) from employee where department_id=e.department_id)
  48. SQL > Select employee_id, last_name, name from employee e, department d where e.department_id=d.department_id
  49. SQL > Select employee_id, last_name, function from employee e, job j where e.job_id=j.job_id
  50. SQL > Select employee_id, last_name, name, regional_group from employee e, department d, location l where e.department_id=d.department_id and d.location_id=l.location_id
  51. SQL > Select name, count(*) from employee e, department d where d.department_id=e.department_id group by name
  52. SQL > Select name, count(*) from employee e, department d where d.department_id=e.department_id group by name having name='SALES'
  53. SQL > Select name, count(*) from employee e, department d where d.department_id=e.department_id group by name having count (*)>=5 order by name
  54. SQL > Select function, count(*) from employee e, job j where j.job_id=e.job_id group by function
  55. SQL > Select regional_group, count(*) from employee e, department d, location l where e.department_id=d.department_id and d.location_id=l.location_id and regional_group='NEW YORK' group by regional_group
  56. SQL > Select employee_id, last_name, grade_id from employee e, salary_grade s where salary between lower_bound and upper_bound order by last_name
  57. SQL > Select grade_id, count(*) from employee e, salary_grade s where salary between lower_bound and upper_bound group by grade_id order by grade_id desc
  58. SQL > Select grade_id, count(*) from employee e, salary_grade s where salary between lower_bound and upper_bound and lower_bound>=2000 and lower_bound<=5000 group by grade_id order by grade_id desc
  59. SQL > Select e.last_name emp_name, m.last_name, mgr_name from employee e, employee m where e.manager_id=m.employee_id
  60. SQL > Select e.last_name emp_name, e.salary emp_salary, m.last_name, mgr_name, m.salary mgr_salary from employee e, employee m where e.manager_id=m.employee_id and m.salary
  61. SQL > Select m.manager_id, count(*) from employee e, employee m where e.employee_id=m.manager_id group by m.manager_id
  62. SQL > Select last_name, d.department_id, d.name from employee e, department d where e.department_id(+)=d.department_id
  63. SQL > Select last_name, d.department_id, d.name from employee e, department d where e.department_id(+)=d.department_id and d.department_idin (select department_id from department where name IN ('SALES','OPERATIONS'))
  64. SQL > Select function from job where job_id in (Select job_id from employee where department_id=(select department_id from department where name='SALES')) union Select function from job where job_id in (Select job_id from employee where department_id=(select department_id from department where name='ACCOUNTING'))
  65. SQL > Select function from job where job_id in (Select job_id from employee where department_id=(select department_id from department where name='SALES')) union all Select function from job where job_id in (Select job_id from employee where department_id=(select department_id from department where name='ACCOUNTING'))
  66. SQL > Select function from job where job_id in (Select job_id from employee where department_id=(select department_id from department where name='RESEARCH')) intersect Select function from job where job_id in (Select job_id from employee where department_id=(select department_id from department where name='ACCOUNTING')) order by function

SQL and PL/SQL Interview questions



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

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.

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

5. The INSERT INTO Statements:
INSERT INTO table_name 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

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

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.

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;?
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.

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.

35. TRUNCATE TABLE EMP;
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.

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.

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
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.
54. What is difference between CHAR and VARCHAR2? What is the maximum SIZE allowed for each type?
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.


55. How many LONG columns are allowed in a table? Is it possible to use LONG columns in WHERE clause or ORDER BY?
Only one LONG column is allowed. It is not possible to use LONG column in WHERE or ORDER BY clause.

56. What are the pre-requisites to modify datatype of a column and to add a column with NOT NULL constraint?
- 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.


57. Where the integrity constraints are stored in data dictionary?
The integrity constraints are stored in USER_CONSTRAINTS.

58. How will you activate/deactivate integrity 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.

60. What is a database link?
Database link is a named path through which a remote database can be accessed.

60. How to access the current value and next value from a sequence? Is it possible to access the current value in a session before accessing next value?
Sequence name CURRVAL, sequence name NEXTVAL. It is not possible. Only if you access next value in the session, current value can be accessed.

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 < 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.


81. Which procedure can be used to create a customized error message? 1. RAISE_ERROR
2. SQLERRM
3. RAISE_APPLICATION_ERROR
4. RAISE_SERVER_ERROR


82. The CHECK_THEATER trigger of the THEATER table has been disabled. Which command can you issue to enable this trigger? 1. ALTER TRIGGER check_theater ENABLE;
2. ENABLE TRIGGER check_theater;
3. ALTER TABLE check_theater ENABLE check_theater;
4. ENABLE check_theater;


83. Examine this database trigger 52. CREATE OR REPLACE TRIGGER prevent_gross_modification
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.