What is the difference between a "where" clause and a "having" clause?
"Where" is
a kind of restiriction statement. You use where clause to restrict all
the data from
DB.Where clause is using before result retrieving. But Having clause is
using after retrieving the data. Having clause is a kind of filtering
command.
You should always wear formal dresses for an interview - please check Why you should wear formal for an interview
Formal dresses for men
Formal dresses for women
What is the basic form of a SQL
statement to read data out of a table?
The basic form to read data out of table is
‘SELECT * FROM table_name; ‘ An
answer: ‘SELECT * FROM table_name WHERE
xyz= ‘whatever’;’ cannot be called
basic form because of WHERE clause.
What structure can you implement for the database to speed up table reads?
Follow the rules of DB tuning we have to:
Properly use indexes ( different types of indexes)
properly locate different DB objects across different tablespaces,
files and
so on
create a special space (tablespace) to locate some of the data with
special
datatype ( for example CLOB, LOB and …)
What are the tradeoffs with
having indexes?
Faster selects, slower updates.
Extra storage space to store indexes. Updates are slower because in
addition to updating the table you have to
update the index.
What is a "join"?
‘Join’ used to connect two or more tables
logically with or without common
field.
What is "normalization"? "Denormalization"? Why do you sometimes want to denormalize?
Normalizing data means eliminating
redundant information from a table and
organizing the data so that future changes to
the table are easier. Denormalization
means allowing redundancy in a table. The
main benefit of denormalization is
improved performance with simplified data
retrieval and manipulation. This is done
by reduction in the number of joins needed
for data processing.
What is a
"constraint"?
A constraint allows you to apply simple
referential integrity checks to a table.
There are four primary types of constraints
that are currently supported by SQL
Server: PRIMARY/UNIQUE - enforces
uniqueness of a particular table column.
SQL Interview Questions
http://marancollects.blogspot.com 2/14
DEFAULT - specifies a default value for a
column in case an insert operation does not
provide one. FOREIGN KEY - validates that
every value in a column exists in a
column of another table. CHECK - checks
that every value stored in a column is in
some specified list. Each type of
constraint performs a specific type of action. Default
is not a constraint. NOT NULL is one more
constraint which does not allow values in
the specific column to be null. And also it
is the only constraint which is not a table
level constraint.
What types of index data
structures can you have?
An index helps to faster search values in
tables. The three most commonly
used index-types are: - B-Tree: builds a tree
of possible values with a list of row IDs
that have the leaf value. Needs a lot of
space and is the default index type for most
databases. - Bitmap: string of bits for
each possible value of the column. Each bit
string has one bit for each row. Needs only
few space and is very fast.(however,
domain of value cannot be large, e.g.
SEX(m,f); degree(BS,MS,PHD) - Hash: A
hashing algorithm is used to assign a set
of characters to represent a text string
such as a composite of keys or partial
keys, and compresses the underlying data.
Takes longer to build and is supported by
relatively few databases.
What is a "primary
key"?
A PRIMARY INDEX or PRIMARY KEY is something
which comes mainly from
database theory. From its behavior is
almost the same as an UNIQUE INDEX, i.e.
there may only be one of each value in this
column. If you call such an INDEX
PRIMARY instead of UNIQUE, you say
something about your table design, which I am
not able to explain in few words. Primary
Key is a type of a constraint enforcing
uniqueness and data integrity for each row
of a table. All columns participating in a
primary key constraint must possess the NOT
NULL property.
What is a "functional dependency"? How does it relate to database table design?
Functional dependency relates to how one
object depends upon the other in
the database. for example,
procedure/function sp2 may be called by procedure sp1.
Then we say that sp1 has functional
dependency on sp2.
What is a "trigger"?
Triggers are stored procedures created in
order to enforce integrity rules in a
database. A trigger is executed every time
a data-modification operation occurs (i.e.,
insert, update or delete). Triggers are
executed automatically on occurance of one of
the data-modification operations. A trigger
is a database object directly associated
SQL Interview Questions
http://marancollects.blogspot.com 3/14
with a particular table. It fires whenever
a specific statement/type of statement is
issued against that table. The types of
statements are insert,update,delete and query
statements. Basically, trigger is a set of
SQL statements A trigger is a solution to the
restrictions of a constraint. For instance:
1.A database column cannot carry PSEUDO
columns as criteria where a trigger can. 2.
A database constraint cannot refer old
and new values for a row where a trigger
can.
Why can a "group by"
or "order by" clause be expensive to process?
Processing of "group by" or
"order by" clause often requires creation of
temporary tables to process the results of
the query, which is depending of the
resultset can be very expensive.
What is "index
covering" of a query?
Index covering means that "Data can be
found only using indexes, without
touching the tables"
What is a SQL view?
An output of a query can be stored as a
view. View acts like small table which
meets our criterion. View is a precomplied
SQL query which is used to select data
from one or more tables. A view is like a
table but it doesn’t physically take any
space. View is a good way to present data
in a particular format if you use that query
quite often. View can also be used to
restrict users from accessing the tables
directly.
SQL:
SQL is an English like language consisting
of commands to store, retrieve,
maintain & regulate access to your
database.
SQL*Plus:
SQL*Plus is an application that recognizes
& executes SQL commands &
specialized SQL*Plus commands that can
customize reports, provide help & edit
facility & maintain system variables.
NVL:
Null value function converts a null value
to a non-null value for the purpose of
evaluating an expression. Numeric Functions
accept numeric I/P & return numeric
values. They are MOD, SQRT, ROUND, TRUNC
& POWER.
Date Functions:
Date Functions are ADD_MONTHS, LAST_DAY,
NEXT_DAY,
MONTHS_BETWEEN & SYSDATE.
Character Functions:
SQL Interview Questions
http://marancollects.blogspot.com 4/14
Character Functions are INITCAP, UPPER,
LOWER, SUBSTR & LENGTH.
Additional functions are GREATEST &
LEAST. Group Functions returns results based
upon groups of rows rather than one result
per row, use group functions. They are
AVG, COUNT, MAX, MIN & SUM.
TTITLE & BTITLE:
TTITLE & BTITLE are commands to control
report headings & footers.
COLUMN:
COLUMN command define column headings &
format data values.
BREAK:
BREAK command clarify reports by
suppressing repeated values, skipping
lines & allowing for controlled break
points.
COMPUTE:
Command control computations on subsets
created by the BREAK command.
SET:
SET command changes the system variables
affecting the report
environment.
SPOOL:
SPOOL command creates a print file of the
report.
JOIN:
JOIN is the form of SELECT command that
combines info from two or more
tables. Types of Joins are Simple (Equijoin
& Non-Equijoin), Outer & Self join.
Equijoin returns rows from two or more
tables joined together based upon an
equality condition in the WHERE clause.
Non-Equijoin returns rows from two or more
tables based upon a relationship other than
the equality condition in the WHERE
clause. Outer Join combines two or more
tables returning those rows from one table
that have no direct match in the other
table. Self Join joins a table to itself as though
it were two separate tables.
Union:
Union is the product of two or more tables.
Intersect:
Intersect is the product of two tables
listing only the matching rows.
Minus:
Minus is the product of two tables listing
only the non-matching rows.
Correlated
Subquery:
SQL Interview Questions
http://marancollects.blogspot.com 5/14
Correlated Subquery is a subquery that is
evaluated once for each row
processed by the parent statement. Parent
statement can be Select, Update or
Delete. Use CRSQ to answer multipart
questions whose answer depends on the value
in each row processed by parent statement.
Multiple
columns:
Multiple columns can be returned from a
Nested Subquery.
Sequences:
Sequences are used for generating sequence
numbers without any overhead
of locking. Drawback is that after
generating a sequence number if the transaction is
rolled back, then that sequence number is
lost.
Synonyms:
Synonyms is the alias name for table,
views, sequences & procedures and are
created for reasons of Security and
Convenience. Two levels are Public - created by
DBA & accessible to all the users.
Private - Accessible to creator only. Advantages
are referencing without specifying the
owner and Flexibility to customize a more
meaningful naming convention.
Indexes:
Indexes are optional structures associated
with tables used to speed query
execution and/or guarantee uniqueness.
Create an index if there are frequent
retrieval of fewer than 10-15% of the rows
in a large table and columns are
referenced frequently in the WHERE clause.
Implied tradeoff is query speed vs.
update speed. Oracle automatically update
indexes. Concatenated index max. is 16
columns.
Data types:
Max. columns in a table is 255. Max. Char
size is 255, Long is 64K & Number
is 38 digits. Cannot Query on a long
column. Char, Varchar2 Max. size is 2000 &
default is 1 byte. Number(p,s) p is
precision range 1 to 38, s is scale -84 to 127.
Long Character data of variable length upto
2GB. Date Range from Jan 4712 BC to
Dec 4712 AD. Raw Stores Binary data
(Graphics Image & Digitized Sound). Max. is
255 bytes. Mslabel Binary format of an OS
label. Used primarily with Trusted Oracle.
Order of SQL statement execution Where
clause, Group By clause, Having clause,
Order By clause & Select.
Transaction:
Transaction is defined as all changes made
to the database between
successive commits.
SQL Interview Questions
http://marancollects.blogspot.com 6/14
Commit:
Commit is an event that attempts to make
data in the database identical to
the data in the form. It involves writing
or posting data to the database and
committing data to the database. Forms
check the validity of the data in fields and
records during a commit. Validity check are
uniqueness, consistency and db
restrictions.
Posting:
Posting is an event that writes Inserts,
Updates & Deletes in the forms to the
database but not committing these
transactions to the database.
Rollback:
Rollback causes work in the current
transaction to be undone.
Savepoint:
Savepoint is a point within a particular
transaction to which you may rollback
without rolling back the entire
transaction.
Set
Transaction:
Set Transaction is to establish properties
for the current transaction.
Locking:
Locking are mechanisms intended to prevent
destructive interaction between
users accessing data. Locks are used to
achieve.
Consistency:
Assures users that the data they are
changing or viewing is not changed until
they are thro’ with it.
Integrity:
Assures database data and structures reflects
all changes made to them in
the correct sequence. Locks ensure data
integrity and maximum concurrent access
to data. Commit statement releases all
locks. Types of locks are given below.
Data Locks protects data i.e. Table or Row
lock. Dictionary Locks protects the
structure of database object i.e. ensures
table’s structure does not change for the
duration of the transaction. Internal Locks
& Latches protects the internal database
structures. They are automatic. Exclusive
Lock allows queries on locked table but no
other activity is allowed. Share Lock
allows concurrent queries but prohibits updates
to the locked tables. Row Share allows
concurrent access to the locked table but
prohibits for a exclusive table lock. Row
Exclusive same as Row Share but prohibits
locking in shared mode. Shared Row
Exclusive locks the whole table and allows users
SQL Interview Questions
http://marancollects.blogspot.com 7/14
to look at rows in the table but prohibit
others from locking the table in share or
updating them. Share Update are synonymous
with Row Share.
Deadlock:
Deadlock is a unique situation in a multi
user system that causes two or more
users to wait indefinitely for a locked
resource. First user needs a resource locked by
the second user and the second user needs a
resource locked by the first user. To
avoid dead locks, avoid using exclusive
table lock and if using, use it in the same
sequence and use Commit frequently to
release locks.
Mutating
Table:
Mutating Table is a table that is currently
being modified by an Insert, Update
or Delete statement. Constraining Table is
a table that a triggering statement might
need to read either directly for a SQL
statement or indirectly for a declarative
Referential Integrity constraints. Pseudo
Columns behaves like a column in a table
but are not actually stored in the table.
E.g. Currval, Nextval, Rowid, Rownum, Level
etc.
SQL*Loader:
SQL*Loader is a product for moving data in
external files into tables in an
Oracle database. To load data from external
files into an Oracle database, two types
of input must be provided to SQL*Loader :
the data itself and the control file. The
control file describes the data to be
loaded. It describes the Names and format of the
data files, Specifications for loading data
and the Data to be loaded (optional).
Invoking the loader sqlload
username/password controlfilename.
Explain
MySQL architecture.
The front layer takes care of network
connections and security
authentications, the middle layer does the
SQL query parsing, and then the query is
handled off to the storage engine. A
storage engine could be either a default one
supplied with MySQL (MyISAM) or a
commercial one supplied by a third-party vendor
(ScaleDB, InnoDB, etc.)
Explain
MySQL locks.
Table-level locks allow the user to lock
the entire table, page-level locks allow
locking of certain portions of the tables
(those portions are referred to as tables),
row-level locks are the most granular and
allow locking of specific rows.
Explain
multi-version concurrency control in MySQL.
Each row has two additional columns
associated with it - creation time and
deletion time, but instead of storing
timestamps, MySQL stores version numbers.
SQL Interview Questions
http://marancollects.blogspot.com 8/14
What are
MySQL transactions?
A set of instructions/queries that should
be executed or rolled back as a single
atomic unit.
What’s
ACID?
Automicity - transactions are atomic and
should be treated as one in case of
rollback. Consistency - the database should
be in consistent state between multiple
states in transaction. Isolation - no other
queries can access the data modified by a
running transaction. Durability - system
crashes should not lose the data.
Which
storage engines support transactions in MySQL?
Berkeley DB and InnoDB.
How do you
convert to a different table type?
ALTER TABLE customers TYPE = InnoDB
How do you
index just the first four bytes of the column?
ALTER TABLE customers ADD INDEX
(business_name(4))
What’s the
difference between PRIMARY KEY and UNIQUE in MyISAM?
PRIMARY KEY cannot be null, so essentially
PRIMARY KEY is equivalent to
UNIQUE NOT NULL.
How do you
prevent MySQL from caching a query?
SELECT SQL_NO_CACHE …
1.62 What’s the
difference between query_cache_type 1 and 2?
The second one is on-demand and can be
retrieved via SELECT SQL_CACHE …
If you’re worried about the SQL portability
to other servers, you can use SELECT /*
SQL_CACHE */ id FROM … - MySQL will
interpret the code inside comments, while
other servers will ignore it.
What is
DDL, DML and DCL?
If you look at the large variety of SQL
commands, they can be divided into
three large subgroups. Data Definition
Language deals with database schemas and
descriptions of how the data should reside
in the database, therefore language
statements like CREATE TABLE or ALTER TABLE
belong to DDL. DML deals with data
manipulation, and therefore includes most
common SQL statements such SELECT,
INSERT, etc. Data Control Language includes
commands such as GRANT, and mostly
concerns with rights, permissions and other
controls of the database system.
How do you
get the number of rows affected by query?
SELECT COUNT (user_id) FROM users would
only return the number of
user_id’s.
SQL Interview Questions
http://marancollects.blogspot.com 9/14
If the value in the column is repeatable, how do you find out the unique
values?
Use DISTINCT in the query, such as SELECT
DISTINCT user_firstname FROM
users; You can also ask for a number of
distinct values by saying SELECT COUNT
(DISTINCT user_firstname) FROM users;
How do you
return the a hundred books starting from 25th?
SELECT book_title FROM books LIMIT 25, 100.
The first number in LIMIT is
the offset, the second is the number.
You wrote a search engine that should retrieve 10 results at a time, but at the same time you’d like to know how many rows there’re total. How do you display that to the user?
SELECT SQL_CALC_FOUND_ROWS page_title FROM
web_pages LIMIT 1,10;
SELECT FOUND_ROWS(); The second query (not
that COUNT() is never used) will
tell you how many results there’re total,
so you can display a phrase "Found
13,450,600 results, displaying 1-10".
Note that FOUND_ROWS does not pay
attention to the LIMITs you specified and
always returns the total number of rows
affected by query.
How would you write a query to select all teams that won either 2, 4, 6 or 8 games?
SELECT team_name FROM teams WHERE team_won
IN (2, 4, 6, 8)
How would you select all the users, whose phone
number is null?
SELECT user_name FROM users WHERE
ISNULL(user_phonenumber);
What does this query mean: SELECT user_name, user_isp FROM users LEFT JOIN isps USING (user_id)
It’s equivalent to saying SELECT user_name,
user_isp FROM users LEFT JOIN
isps WHERE users.user_id=isps.user_id
How do you
find out which auto increment was assigned on the last insert?
SELECT LAST_INSERT_ID() will return the last
value assigned by the
auto_increment function. Note that you
don’t have to specify the table name.
What does
–i-am-a-dummy flag to do when starting MySQL?
Makes the MySQL engine refuse UPDATE and
DELETE commands where the
WHERE clause is not present.
On
executing the DELETE statement I keep getting the error about foreign
key constraint failing. What do I do?
SQL Interview Questions
http://marancollects.blogspot.com 10/14
What it means is that so of the data that
you’re trying to delete is still alive in
another table. Like if you have a table for
universities and a table for students, which
contains the ID of the university they go
to, running a delete on a university table
will fail if the students table still
contains people enrolled at that university. Proper
way to do it would be to delete the
offending data first, and then delete the
university in question. Quick way would
involve running SET foreign_key_checks=0
before the DELETE command, and setting the
parameter back to 1 after the DELETE
is done. If your foreign key was formulated
with ON DELETE CASCADE, the data in
dependent tables will be removed
automatically.
When would
you use ORDER BY in DELETE statement?
When you’re not deleting by row ID. Such as
in DELETE FROM
techinterviews_com_questions ORDER BY
timestamp LIMIT 1. This will delete the
most recently posted question in the table
techinterviews_com_questions.
How can
you see all indexes defined for a table?
SHOW INDEX FROM techinterviews_questions;
How would
you change a column from VARCHAR(10) to VARCHAR(50)?
ALTER TABLE techinterviews_questions CHANGE
techinterviews_content
techinterviews_CONTENT VARCHAR(50).
How would
you delete a column?
ALTER TABLE techinterviews_answers DROP
answer_user_id.
How would
you change a table to InnoDB?
ALTER TABLE techinterviews_questions ENGINE
innodb;
When you
create a table, and then run SHOW CREATE TABLE on it, you
occasionally get different results than what you typed in. What does
MySQL
modify in your newly created tables?
VARCHARs with length less than 4 become
CHARs.
CHARs with length more than 3 become
VARCHARs.
NOT NULL gets added to the columns declared
as PRIMARY KEYs.
Default values such as NULL are specified
for each column
How do I find out all databases starting with ‘tech’ to which I have access to?
SHOW DATABASES LIKE ‘tech%’;
How do you
concatenate strings in MySQL?
CONCAT (string1, string2, string3)
How do you
get a portion of a string?
SQL Interview Questions
http://marancollects.blogspot.com 11/14
SELECT SUBSTR(title, 1, 10) from techinterviews_questions;
What’s the
difference between CHAR_LENGTH and LENGTH?
The first is, naturally, the character
count. The second is byte count. For the
Latin characters the numbers are the same,
but they’re not the same for Unicode
and other encodings.
How do you
convert a string to UTF-8?
SELECT (techinterviews_question USING
utf8);
What do %
and _ mean inside LIKE statement?
% corresponds to 0 or more characters, _ is
exactly one character.
What does
+ mean in REGEXP?
At least one character.
How do you
get the month from a timestamp?
SELECT MONTH(techinterviews_timestamp) from
techinterviews_questions;
How do you
offload the time/date handling to MySQL?
SELECT
DATE_FORMAT(techinterviews_timestamp, ‘%Y-%m-%d’) from
techinterviews_questions; A similar TIME_FORMAT
function deals with time.
How do you
add three minutes to a date?
ADDDATE(techinterviews_publication_date,
INTERVAL 3 MINUTE)
What’s the
difference between Unix timestamps and MySQL timestamps?
Internally Unix timestamps are stored as
32-bit integers, while MySQL
timestamps are stored in a similar manner,
but represented in readable YYYY-MM-DD
HH:MM:SS format.
How do you
convert between Unix timestamps and MySQL timestamps?
UNIX_TIMESTAMP converts from MySQL
timestamp to Unix timestamp,
FROM_UNIXTIME converts from Unix timestamp
to MySQL timestamp.
What are
ENUMs used for in MySQL?
You can limit the possible values that go
into the table. CREATE TABLE
months (month ENUM ‘January’, ‘February’,
‘March’,…); INSERT months VALUES
(’April’);
How are
ENUMs and SETs represented internally?
As unique integers representing the powers
of two, due to storage
optimizations.
How do you
start and stop MySQL on Windows?
net start MySQL, net stop MySQL
How do you
start MySQL on Linux?
SQL Interview Questions
http://marancollects.blogspot.com 12/14
/etc/init.d/mysql start
Explain
the difference between mysql and mysqli interfaces in PHP?
mysqli is the object-oriented version of
mysql library functions.
What’s the
default port for MySQL Server?
3306
What does
tee command do in MySQL?
tee followed by a filename turns on MySQL
logging to a specified file. It can
be stopped by command notee.
Can you
save your connection settings to a conf file?
Yes, and name it ~/.my.conf. You might want
to change the permissions on
the file to 600, so that it’s not readable
by others.
How do you
change a password for an existing user via mysqladmin?
mysqladmin -u root -p password
"newpassword"
Use
mysqldump to create a copy of the database?
mysqldump -h mysqlhost -u username -p
mydatabasename > dbdump.sql
Have you
ever used MySQL Administrator and MySQL Query Browser?
Describe the tasks you accomplished with
these tools.
What are
some good ideas regarding user security in MySQL?
There is no user without a password. There
is no user without a user name.
There is no user whose Host column contains
% (which here indicates that the user
can log in from anywhere in the network or
the Internet). There are as few users as
possible (in the ideal case only root) who
have unrestricted access.
Explain
the difference between MyISAM Static and MyISAM Dynamic.
In MyISAM static all the fields have fixed
width. The Dynamic MyISAM table
would include fields such as TEXT, BLOB,
etc. to accommodate the data types with
various lengths. MyISAM Static would be
easier to restore in case of corruption, since
even though you might lose some data, you
know exactly where to look for the
beginning of the next record.
What does
myisamchk do?
It compressed the MyISAM tables, which
reduces their disk usage.
Explain
advantages of InnoDB over MyISAM?
Row-level locking, transactions, foreign
key constraints and crash recovery.
Explain
advantages of MyISAM over InnoDB?
Much more conservative approach to disk
space management - each MyISAM
table is stored in a separate file, which
could be compressed then with myisamchk if
SQL Interview Questions
http://marancollects.blogspot.com 13/14
needed. With InnoDB the tables are stored
in tablespace, and not much further
optimization is possible. All data except
for TEXT and BLOB can occupy 8,000 bytes
at most. No full text indexing is available
for InnoDB. TRhe COUNT(*)s execute
slower than in MyISAM due to tablespace
complexity.
What are
HEAP tables in MySQL?
HEAP tables are in-memory. They are usually
used for high-speed temporary
storage. No TEXT or BLOB fields are allowed
within HEAP tables. You can only use
the comparison operators = and <=>.
HEAP tables do not support
AUTO_INCREMENT. Indexes must be NOT NULL.
How do you
control the max size of a HEAP table?
MySQL config variable max_heap_table_size.
What are
CSV tables?
Those are the special tables, data for
which is saved into comma-separated
values files. They cannot be indexed.
Explain
federated tables.
Introduced in MySQL 5.0, federated tables
allow access to the tables located
on other databases on other servers.
What is
SERIAL data type in MySQL?
BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT
What happens when the column is set to AUTO INCREMENT and you reach the maximum value for that table?
It stops incrementing. It does not overflow
to 0 to prevent data losses, but
further inserts are going to produce an
error, since the key has been used already.
Explain
the difference between BOOL, TINYINT and BIT.
Prior to MySQL 5.0.3: those are all
synonyms. After MySQL 5.0.3: BIT data
type can store 8 bytes of data asnd should
be used for binary data.
Explain
the difference between FLOAT, DOUBLE and REAL.
FLOATs store floating point numbers with 8
place accuracy and take up 4
bytes. DOUBLEs store floating point numbers
with 16 place accuracy and take up 8
bytes. REAL is a synonym of FLOAT for now.
If you specify the data type as DECIMAL (5,2), what’s the range of values that can go in this table?
999.99 to -99.99. Note that with the
negative number the minus sign is
considered one of the digits.
What happens if a table has one column defined as
TIMESTAMP?
SQL Interview Questions
http://marancollects.blogspot.com 14/14
That field gets the current timestamp
whenever the row gets altered.
But what
if you really want to store the timestamp data, such as the
publication date of the article?
Create two columns of type TIMESTAMP and
use the second one for your real
data.
Explain
data type TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP
The column exhibits the same behavior as a
single timestamp column in a
table with no other timestamp columns.
What does
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP data type do?
On initialization places a zero in that
column, on future updates puts the
current value of the timestamp in.
Explain TIMESTAMP DEFAULT ‘2006:09:02 17:38:44′ ON UPDATE CURRENT_TIMESTAMP.
A default value is used on initialization,
a current timestamp is inserted on
update of the row.
If I created a column with data type VARCHAR(3), what would I expect to see in MySQL table?
CHAR(3), since MySQL automatically adjusted
the data type.
What is the difference between a "where" clause and a
"having" clause?
"Where" is
a kind of restiriction statement. You use where clause to restrict all
the data from
DB.Where clause is using before result retrieving. But Having clause is
using after retrieving the data. Having clause is a kind of filtering
command.
What is the difference between a "where" clause and a
"having" clause?
"Where" is a kind of restiriction
statement. You use where clause to restrict all
the data from DB.Where clause is using
before result retrieving. But Having clause is
using after retrieving the data.Having
clause is a kind of filtering command.
What is the basic form of a SQL statement to read data out of a
table?
The basic form to read data out of table is
‘SELECT * FROM table_name; ‘ An
answer: ‘SELECT * FROM table_name WHERE
xyz= ‘whatever’;’ cannot be called
basic form because of WHERE clause.
How to debug the procedure ?
Answer :
You can use DBMS_OUTPUT oracle supplied
package or DBMS_DEBUG pasckage.
What is
trigger,cursor,functions in pl-sql and we need sample programs about it?
Answer :
Trigger is an event driven PL/SQL block. Event
may be any DML transaction.
Cursor is a stored select statement for that
current session. It will not be stored in the database, it is a logical
component.
Function is a set of PL/SQL statements or a
PL/SQL block, which performs an operation and must return a value.
Can Commit,Rollback ,Savepoint be used in Database Triggers?If yes than HOW? If no Why?With Reasons In pl/sql functions what is use of out parameter even though we have return statement.
Answer :
With out parameters you
can get the more than one out values in the calling program. It is recommended
not to use out parameters in functions. If you need more than one out values
then use procedures instead of functions.
How we can create a table through procedure ?
Answer: You can create table from procedure
using Execute immediate command.
create procedure p1 is
begin
EXECUTE IMMEDIATE 'CREATE TABLE temp AS
SELECT * FROM emp ' ;
END;
What is ref cursor.
Ref Cursor is cursor variable. It is a
pointer to a result set. It is useful in scenarios when result set is created in
one program and the processing of the same in some other, might be written in
different language, e.g. firing the select is done in PL/SQL and the processing
will be done in java. Its a run time
query binding with the cursor variable. Normal cursors are static cursors becaz
they get acquited of query at the compile time.
What is pl/sql?what are the advantages of
pl/sql?
PL/SQL(a product of Oracle) is the
'programming language' extension of sql.
It is a full-fledged language although it
is specially designed for database centric activities.
PL/SQL is Very Usefully Language &
Tools of Oracle to Manipulate,Restrict,Validate & Control the Unauthorized
Access of Data From the Database.
We Can easily show multiple records of the
multiple table at same time.
And Using control statement like Loops
& If else & Select case we control the database.
State the
advantage and disadvantage of Cursor?
Answer :
Advantage :
In pl/sql if you want perform some actions
more than one records you should user these cursors only. bye using these
cursors you process the query records. you can easily move the records and you
can exit from procedure when you required by using cursor attributes.
disadvantage:
using implicit/explicit cursors are
depended by sutiation. if the result set is les than 50 or 100 records it is
better to go for implicit cursors. if the result set is large then you should
use exlicit cursors. other wise it will put burdon on cpu.
State the difference between implicit and explicit
cursor's.
Answer : Implicit
Cursor are declared and used by the oracle internally. whereas the explicit
cursors are declared and used by the user. more over implicitly cursors are no
need to declare oracle creates and process and closes autometically. the
explicit cursor should be declared and closed by the user.
Implict cursor can be used to handle single
record (i.e) the select query used should not yield more than one row.if u have
handle more than one record then Explict cursor should be used.
What is difference between stored procedures and application procedures,stored function and application function?
Answer : Stored
procedures are sub programs stored in the database and can be called &
execute multiple times where in an application procedure is the one being used
for a particular application same is the way for function
Stored Procedure/Function is a compiled
database object, which is used for fast response from Oracle Engine.Difference
is Stored Procedure must return multiple value and function must return single
value .
Explian
rowid,rownum?What are the pseduocolumns we have?
Answer :
ROWID - Hexa decimal number each and every row
having unique.Used in searching
ROWNUM - It is a integer number also unique
for sorting Normally TOP N Analysys.
Other Psudo Column are
NEXTVAL,CURRVAL Of sequence are some
exampls
ROWID : It gives the hexadecimal string
representing the address of a row.
It gives the location in database where row
is physically stored.
ROWNUM: It gives a sequence number in which
rows are retrieved from the database.
1What is the starting "oracle error number"?What is meant by forward declaration in functions?
Answer : One
must declare an identifier before referencing it. Once it is declared it can be
referred even before defining it in the PL/SQL. This rule applies to function
and procedures also
ORACLE ERROR NO starts with ORA 00001
In a Distributed Database System Can we
execute two queries simultaneously ? Justify ?
Answer : As
Distributed database system based on 2 phase commit,one query is independent of
2 nd query so of course we can run.
How we can create a table in PL/SQL block.
insert records into it??? is it possible by some procedure or function?? please
give example...
Answer : CREATE
OR REPLACE PROCEDURE ddl_create_proc (p_table_name IN VARCHAR2)
AS
l_stmt VARCHAR2(200);
BEGIN
DBMS_OUTPUT.put_line('STARTING ');
l_stmt := 'create table '|| p_table_name ||
' as (select * from emp )';
execute IMMEDIATE l_stmt;
DBMS_OUTPUT.put_line('end ');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('exception '||SQLERRM
|| 'message'||sqlcode);
END;
We can create table in procedure as
explained in above case. but we can't create or perform any DDL in functions.
Question : How to avoid using cursors? What to use
instead of cursor and in what cases to do so?
Answer :
just use subquery in for clause
ex:
for emprec in (select * from emp)
loop
dbms_output.put_line(emprec.empno);
end loop;
no exit statement needed
implicit open,fetch,close occurs
We have avoided declaration of cursor.the
given example will create cursor with some system generated name.
How to
disable multiple triggers of a table at at a time?
Answer :
ALTER TABLE<TABLE NAME> DISABLE ALL
TRIGGER
ALTER TABLE TT_DCB DISABLE ALL TRIGGERS
can we declare a column having number data
type and its scale is larger than pricesion
ex: column_name NUMBER(10,100),
column_name NUMBAER(10,-84)
Ans:
Yes,
we can declare a column with above
condition.
table created successfully.
We can create the table like
create table as1(id number(10,11))
but we cant insert the data into the table.
it will give error
What are the Restrictions on Cursor Variables?
Answer :
Currently, cursor
variables are subject to the following restrictions:You cannot declare cursor
variables in a package spec. For example, the following declaration is not
allowed:CREATE PACKAGE emp_stuff AS TYPE EmpCurTyp IS REF CURSOR RETURN
emp%ROWTYPE; emp_cv EmpCurTyp; -- not allowedEND emp_stuff;You cannot pass
cursor variables to a procedure that is called through a database link.If you
pass a host cursor variable to PL/SQL, you cannot fetch from it on the server
side unless you also open it there on the same server call.You cannot use
comparison operators to test cursor variables for equality, inequality, or
nullity.You cannot assign nulls to a cursor variable.Database columns cannot
store the values of cursor variables. There is no equivalent type to use in a
CREATE TABLE statement.You cannot store cursor variables in an associative
array, nested table, or varray.Cursors and cursor variables are not
interoperable; that is, you cannot use one where the other is expected. For
example, you cannot reference a cursor variable in a cursor FOR loop
What will the Output for this Coding>
Declare
Cursor c1 is select * from emp FORUPDATE;
Z c1%rowtype;
Begin
Open C1;
Fetch c1 into Z;
Commit;
Fetch c1 in to Z;
end;
Answer : By
declaring this cursor we can update the table emp through z,means wo not need
to write table name for updation,it may be only by "z".
selecting in FOR UPDATE mode locks the
result set of rows in update mode, which means that row cannot be updated or
deleted until a commit or rollback is issued which will release the row(s).
What is
PL/SQL ?
Answer :
PL/SQL is a procedural language that has both
interactive SQL and procedural programming language constructs such as
iteration, conditional branching.
What is the basic structure of PL/SQL ?
Answer :
PL/SQL uses block structure as its basic
structure. Anonymous blocks or nested blocks can be used in PL/SQL.
DECLARE
--all the variables u use in ur program
should be declared here
---
BEGIN
--application logic goes here
--
EXCEPTION HANDLING
--very imp
END
What are the components of a PL/SQL block ?
Answer : A
set of related declarations and procedural statements is called block.
What are the components of a PL/SQL Block ?
Answer :
Declarative part, Executable part and
Exception part.
Datatypes PL/SQL
What are the datatypes a available in PL/SQL ?
Some scalar data types such as NUMBER,
VARCHAR2, DATE, CHAR, LONG, BOOLEAN. Some composite data types such as RECORD
& TABLE.
What are % TYPE and % ROWTYPE ? What are the
advantages of using these over datatypes?
Ans: % TYPE provides the data type of a
variable or a database column to that variable.
% ROWTYPE provides the record type that
represents a entire row of a table or view or columns selected in the cursor.
The advantages are : I. Need not know about
variable's data type
ii. If the database definition of a column
in a table changes, the data type of a variable changes accordingly.
%TYPE provides datatypes of the particular
column of the table.
%ROWTYPE attribute is useful
When we need to fetch entire row from the
table.
secondly if we don't know the data type of
some column %rowtype is useful for that.
finally, if we change any datatypes of the
column,%rowtype automatically change the datatypes for the variable which is
created by user
What is difference between % ROWTYPE and TYPE
RECORD ?
Answer : %
ROWTYPE is to be used whenever query returns a entire row of a table or view.
TYPE rec RECORD is to be used whenever
query returns columns of different
table or views and variables.
E.g. TYPE r_emp is RECORD (eno emp.empno%
type,ename emp ename %type
);
e_rec emp% ROWTYPE
cursor c1 is select empno,deptno from emp;
e_rec c1 %ROWTYPE.
What is PL/SQL
table ?
Answer : Objects
of type TABLE are called "PL/SQL tables", which are modeled as (but
not the same as) database tables, PL/SQL tables use a primary PL/SQL tables can
have one column and a primary key.
Cursors
TYPE tab IS TABLE OF VARCHAR2(30);
This way we can make declaration of PL/SQL
tables. They are also reffed as Nested Table and are pat of PLSQL collections.
They are used for bulk data processing.
What is a
cursor ? Why Cursor is required ?
Cursor is a named private SQL area from
where information can be accessed. Cursors are required to process rows
individually for queries returning multiple rows.
The oracle server uses works areas
called private sql area.Here all the DML
statement is executed and to processing statement.basically
it's a implicit cursor.
there are two types of cursor
1.Implicit cursor.
2.Explicit cursor.
Implicit cursor is open for all DML
statement.after execute the statement cursor is atomatically closed.
Explicit cursor is created by programmer.
explicit cursor is needed when
query returns more than one rows.
In that case,programmer creates
explicit cursor.open the cursor.
then fetch the value from the active set.
after fetching all the value,
cursor is closed by programmer.
Explain
the two type of Cursors ?
Answer :
There are two types of cursors, Implicit
Cursor and Explicit Cursor.
PL/SQL uses Implicit Cursors for queries.
User defined cursors are called Explicit Cursors. They can be declared and
used.
there are two types of cursor
1.implicit cursor
2. Explicit cursor
What are
the PL/SQL Statements used in cursor processing ?
Ans: DECLARE CURSOR cursor name, OPEN
cursor name, FETCH cursor name INTO or Record types, CLOSE cursor name.
What are the cursor attributes used in PL/SQL
?
%ISOPEN - to check whether cursor is open
or not
% ROWCOUNT - number of rows
fetched/updated/deleted.
% FOUND - to check whether cursor has
fetched any row. True if rows are fetched.
% NOT FOUND - to check whether cursor has
fetched any row. True if no rows are featched.
These attributes are proceeded with SQL for
Implicit Cursors and with Cursor name for Explicit Cursors.
What is a
cursor for loop ?
Answer :
Cursor for loop implicitly
declares %ROWTYPE as loop index,opens a cursor, fetches rows of values from
active set into fields in the record and closes when all the records have been
processed.
eg. FOR emp_rec IN C1 LOOP
salary_total := salary_total +emp_rec sal;
END LOOP;
Cursor for loop implicitly declares
%ROWTYPE as loop index,opens a cursor, fetches rows of values from active set
into fields in the record and closes when all the records have been processed.
eg. FOR emp_rec IN C1 LOOP
salary_total := salary_total +emp_rec sal;
END LOOP;
Question : What
will happen after commit statement ?
Answer :
Cursor C1 is
Select empno,
ename from emp;
Begin
open C1; loop
Fetch C1 into
eno.ename;
Exit When
C1 %notfound;-----
commit;
end loop;
end;
The cursor having query as SELECT .... FOR
UPDATE gets closed after COMMIT/ROLLBACK.
The cursor having query as SELECT.... does
not get closed even after COMMIT/ROLLBACK.
After commit statement,all the transaction
will be ended.
all the changes data are parmanently stored
in the database.
Question : Explain
the usage of WHERE CURRENT OF clause in cursors ?
WHERE CURRENT OF clause in an UPDATE,DELETE
statement refers to the latest row fetched from a cursor. Database Triggers
Where CURRENT OF clause means
cursor
points to present row of
the cursor
What is a
database trigger ? Name some usages of database trigger ?
Answer : Database
trigger is stored PL/SQL program unit associated with a specific database
table. Usages are Audit data modifications, Log events transparently, Enforce
complex business rules Derive column values automatically, Implement complex
security authorizations. Maintain replicate tables.
A database triggers is stored PL/SQL
program unit associated with a specific database table or view. The code in the
trigger defines the action the database needs to perform whenever some database
manipulation (INSERT, UPDATE, DELETE) takes place.
Unlike the stored procedure and functions,
which have to be called explicitly, the database triggers are fires (executed)
or called implicitly whenever the table is affected by any of the above said
DML operations.
Till oracle 7.0 only 12 triggers could be
associated with a given table, but in higher versions of Oracle there is no
such limitation. A database trigger fires with the privileges of owner not that
of user
A database trigger has three parts
1. A triggering event
2. A trigger constraint (Optional)
3. Trigger action
A triggering event can be an insert,
update, or delete statement or a instance shutdown or startup etc. The trigger
fires automatically when any of these events occur A trigger constraint
specifies a Boolean expression that must be true for the trigger to fire. This
condition is specified using the WHEN clause. The trigger action is a procedure
that contains the code to be executed when the trigger fires.
How many types of database triggers can be
specified on a table ? What are they ?
Insert Update Delete
Before Row o.k. o.k. o.k.
After Row o.k. o.k. o.k.
Before Statement o.k. o.k. o.k.
After Statement o.k. o.k. o.k.
If FOR EACH ROW clause is specified, then
the trigger for each Row affected by the statement.
If WHEN clause is specified, the trigger
fires according to the returned Boolean value.
Row level trigger,Statement level
trigger,Instead of trigger(created on views)
Is it possible to use Transaction control
Statements such a ROLLBACK or COMMIT in Database Trigger ? Why ?
Answer : It
is not possible. As triggers are defined for each table, if you use COMMIT of
ROLLBACK in a trigger, it affects logical transaction processing.
we can use TCL commands in trigger by using
autonomous transactions feature of oracle.
What are two virtual tables available during
database trigger execution ?
Answer :
The table columns are referred as
OLD.column_name and NEW.column_name.
For triggers related to INSERT only
NEW.column_name values only available.
For triggers related to UPDATE only
OLD.column_name NEW.column_name values only available.
For triggers related to DELETE only
OLD.column_name values only available.
What happens
if a procedure that updates a column of table X is called in a database trigger
of the same table ?
Answer : Mutation
of table occurs.
Write the order of precedence for validation
of a column in a table ?
I. done using Database triggers.
ii. done using Integarity Constraints.
Answer : I
& ii.
Exception :
What is an Exception ? What are types of
Exception ?
Ans: Exception is the error handling part
of PL/SQL block. The types are Predefined and user defined. Some of Predefined
exceptions are.
CURSOR_ALREADY_OPEN
DUP_VAL_ON_INDEX
NO_DATA_FOUND
TOO_MANY_ROWS
INVALID_CURSOR
INVALID_NUMBER
LOGON_DENIED
NOT_LOGGED_ON
PROGRAM-ERROR
STORAGE_ERROR
TIMEOUT_ON_RESOURCE
VALUE_ERROR
ZERO_DIVIDE
OTHERS.
An exception is an identifier/error
that is handle by pl/sql block.
Exception is two types
1.Predefind exception
2.Userdefined exception
predefind exceptions are
1.TOO_MANY_ROWS
2.INVALID_CURSOR
3.NO_DATA_FOUND
What is
Pragma EXECPTION_INIT ? Explain the usage ?
Answer : The
PRAGMA EXECPTION_INIT tells the complier to associate an exception with an
oracle error. To get an error message of a specific oracle error.
e.g. PRAGMA EXCEPTION_INIT (exception name,
oracle error number)
The PRAGMA_EXCEPTION_INIT
tells the compiler to assosiate
an exception with an oracle error.
What is Raise_application_error ?
Answer :
Raise_application_error is a procedure of
package DBMS_STANDARD which allows to issue an user_defined error messages from
stored sub-program or database
trigger.
RAISE_APPLICATION_ERROR is a
procedure of package DBMS which
allows to issue user_defined error
message.
What are
the return values of functions SQLCODE and SQLERRM ?
Answer :
SQLCODE returns the latest code of the error
that has occurred.
SQLERRM returns the relevant error message
of the SQLCODE.
SQLCODE returns the latest code of the
error that has occured.
SQLERRM returns relevant massege
of the error code
Where the Pre_defined_exceptions are stored ?
Answer : In
the standard package.
Procedures, Functions & Packages ;
What is a
stored procedure ?
Answer :
A stored procedure is a sequence of statements
that perform specific function.
A stored procedure is a named pl/sql block
which performs an action.It is stored in the database as a schema object and
can be repeatedly executed.It can be invoked, parameterised and nested.
What is
difference between a PROCEDURE & FUNCTION ?
Answer :
A FUNCTION is always returns a value using the
return statement.
A PROCEDURE may return one or more values
through parameters or may not return at all.
A function can be called from sql
statements and queries while procedure can be called in a begin end block only.
In case of function,it must have
return type.
In case of procedure,it may or may n't have
return type.
In case of function, only it takes IN
parameters
IN case of procedure
only it take IN,OUT,INOUT parameters..
What are advantages fo Stored Procedures
Answer :
Extensibility,Modularity, Reusability,
Maintainability and one time compilation. Question : What are the modes
of parameters that can be passed to a procedure ?
Answer :
IN,OUT,IN-OUT parameters.
What are
the two parts of a procedure ?
Ans: Procedure Specification and Procedure
Body.
Give the structure of the procedure ?
PROCEDURE name (parameter list.....)
is
local variable declarations
BEGIN
Executable statements.
Exception.
exception handlers
end;
basically procedure has three
parts
1.variable declaretion(optional)
2.body(mandetory)
3.Exception(optional)
suppose ex
CREATE OR REPLACEPROCEDURE emp_pro( p_id IN
employees.employee_id%TYPE)
IS
v_name employees.last_name%TYPE;
v_mail employees.email%TYPE;
BEGIN
SELECT last_name,email INTO v_name,v_mail
FROM employees
WHERE employee_id:=p_id;
DBMS_OUTPUT.PUT_LINE('NAME:'||v_name
||'MAILID:'||v_mail);
END;
/
Give the
structure of the function ?
Structure of the fuction same as procedure
it has three parts
1.variable declaration(optional)
2.function body(mandetory)
3.Exception part(optional)
FUNCTION name (argument list .....) Return
datatype is
local variable declarations
Begin
executable statements
Exception
execution handlers
End;
create or replace function
<name>(arg1,arg2,....)
return datatype
as
....
variable declaration
begin
...
program code
...
return <variable>
exception
exception statement
end;
Question : Explain how procedures and functions are
called in a PL/SQL block ?
Function is called as part of an
expression.
sal := calculate_sal ('a822');
procedure is called as a PL/SQL statement
calculate_bonus ('A822');
What is
Overloading of procedures ?
The Same procedure name is repeated with
parameters of different datatypes and parameters in different positions,
varying number of parameters is called overloading of procedures.
e.g. DBMS_OUTPUT put_line
What is a package ? What are the advantages of packages ?
Overloading of procedure
name of the procedure is
same but the number of parameters should be
different.In that case,procedure will be overloaded.
2. if the number of parameters are same in
that case,data type should be different.
if the two rules are satisfied in that case
procedure will be overloaded.
What are
two parts of package ?
Answer :
The two parts of package
are PACKAGE SPECIFICATION & PACKAGE BODY. Package Specification contains
declarations that are global to the packages and local to the schema.
Package Body contains actual procedures and
local declaration of the procedures and cursor declarations.
package has two parts
1.Package specification
2.Package body
In the specification,where we declare
variable,function,procedure
that is global to the package and local to
the schema.
package body contains the defination of the
function,procedure.we can also declare private function and procedure which is
not accessble
out side the package.
What is difference between a Cursor declared
in a procedure and Cursor declared in a package specification ?
A cursor declare in the package
specification that can be accessed
in the other procedure or procedures of the
package.
A cursor declare in the procedure
that can't be accessed by other
procedure.Answer : A cursor
declared in a package specification is global and can be accessed by other
procedures or procedures in a package.
A cursor declared in a procedure is local
to the procedure that can not be accessed by other procedures.
One more differene is cursor declared in a
package specification must have RETURN type
How packaged procedures and functions are
called from the following?
a. Stored procedure or anonymous block
b. an application program such a PRC *C,
PRO* COBOL
c. SQL *PLUS
Answer : a.
PACKAGE NAME.PROCEDURE NAME (parameters);
variable := PACKAGE NAME.FUNCTION NAME
(arguments);
EXEC SQL EXECUTE
b.
BEGIN
PACKAGE NAME.PROCEDURE NAME (parameters)
variable := PACKAGE NAME.FUNCTION NAME
(arguments);
END;
END EXEC;
c. EXECUTE PACKAGE NAME.PROCEDURE if the
procedures does not have any out/in-out parameters. A function cannot be
called.
Name the
tables where characteristics of Package, procedure and functions are stored ?
Answer : User_objects,
User_Source and User_error.
Concept of keys
1.183 Consider the
table “employee”
Eid ename age address DOB
1 Nali 23 b’lore 13/03/1986
2 Tulu 23 b’lore 13/03/1986
3 Tulu 24 BBSR 14/03/03
Keys: Keys uniquely identify records in the table; it can be more than
one attribute
Primary key: A primary key is an attribute that can be used to identify a unique
row in a table. Attributes are associated with it. It cannot contain ‘null’
values.
Unique Key: It is same as primary key; the only difference is that it can
contain null values.
Composite key:
It is a key which is a combination of more than one
attributes
Candidate key: This is all the possible sets of key
Super Key: It is the super set of candidate key. We can make super by adding
any attribute to the candidate key.
In the above
table we can say the super key
is
a.
Eid,ename
b.
Eid, ename, age, address, dob,
c.
Ename, dob, age
In the above
table we can say the keys are
a.
Key1=eid
b.
Key2=ename,dob
c.
Key3=ename,address
In the above
table we can say the Primary key
is ’eid’
In the above
table we can say the Composite key
is ’ename,dob’
In the above
table we can say the Candidate key
is {eid,(ename,dob), (ename,address)}
Explain different types of join
with example
A join is query
that combines rows from two or more tables, views or Materialized views.
Join is of
following types
1.
Equijoins (Simple join, Inner
join)
2.
Non-equijoins
3.
Self join
4.
Cross join
5.
Natural join
6.
Cartesian product
7.
Outerjoin
a.
Left outerjoin
b.
Right join
c.
Full outer join
1.
Equijoins (Simple join
or Inner join)
An equijoin is a
join with a join condition containing an equality operator
Select * from emp, dept where emp.deptno=dept.deptno;
Select * from emp JOIN dept using (deptno);
2.
Non-Equijoins
It is a join
condition that is executed when no column in one table corresponds directly to
a column in the other table.
The data in the
tables is directly not related but indirectly or logically related through
proper values
Select e.ename, e.sal,s.grade from emp e, salgrade s where e.sal
BETWEEN s.losalAND s.hisal;
3.
Self join
It is a join of a
table to itself
Select e1.ename “EmpName”, e2.ename “Manager” from emp
e1, emp e2 where e1.mgr=e2.empno;
4.
Cross join:
Select * from emp CROSS JOIN dept;
5.
Natural join
Select * from emp NATURAL JOIN dept;
6.
Cartesian Product
Cartesian product
is a join query that has no join codition
Select ename, job, dnam from emp, dept;
7.
Outer join
An outer join
extends the result of a simple join.
An outer join
returns all rows that satisfy the join condition and also those rows from one
table for which no rows from the other satisfy the join condition
a.
Left outer join
Select * from emp, dept where emp.deptno=(+) dept.deptno;
b.
Right outer join
Select * from
emp, dept where emp.deptno(+)= dept.deptno;
c.
Full outer join
Delete similar rows from a
table
1.184 Delete from tab1 where ROWID NOT IN (Select max(ROWID) from tab1 groupby (Col1, Col2......))
Delete from tab1
where exists(Select ‘X’ from tab1.b where b.C1=a.C1
and b.C2=a.C2 and
b.ROWID<a.ROWID)
Delete all even number records
Delete from emp
where empno=ANY (Select empno from emp groupby empno, row nohaving
mod(rowno,2)=0);
Salary more than manager
Select x.ename
from emp x, emp y where x.mgr=y.empno and x.sal>y.sal;
Top n salaries/ nth highest
value...........
Select * from t1
a where n=(Select count(rowid) from t1.b where a.rowid>=b.rowid)
Select a.ename
from emp a where &n>(Select count(DISTINCT(b.sal)) from emp b where
a.sal>=b.sal);
2nd highest salary
of the employee from the employee table
Select rownum,
sal from (Select rownum, name, sal from emp order by sal) where rownum=2;
Select
Display the department where
more than 3 employees exist
Select deptno,
count(*) from emp groupby deptno having count(*)>3;
For each department names,
display the number of employees
Select dname,
count(*) from emp, dept where emp.deptno=dept.deptno groupby dname orderby
count(*) desc;
People working in the same
department as “Jones”
Select A.* from
emp A, emp B where A.deptno=B.deptno and B.ename=’Jones’;
Display the list of employees
who are earning more than ‘MILLER’
Select A.* from
emp A, emp B where B.ename=’BLAKE’ AND A.sal>B.sal;
Display the list of employees
who are working under the same manager as ‘MILLER’
Select A.* from
emp A, emp B where B.ename=’BLAKE’ AND A.MGR=B.MGR;
1.13
Display the list of employees
who are more experienced than ‘TURNER’
Select A.* from
emp A, emp B where A.hiredate<B.hiredate and B.ename=’TURNER’;
Display the list of employees
who are in the department of MILLERS manager
Select * from emp
where deptno=(
Select deptno
from emp where empno=(
Select MGR from
emp where eneme=’ADAMS’)
)
Display the list of employees
who have the same job as ‘SMITH’
Select * from emp
where job =(Select job from emp where ename=’SMITH’);
Display the list of employees
who earn more than the average salary in the company.
Select * from emp
where sal>(Select AVG(SAL) from emp);
Display the list of top earners
in their respective departments
Select * from emp
A where sal =(Select max(sal) from emp where deptno=A.deptno);
Display the list of employees
who are earning more than the average salary for their respective jobs.
Select * from emp
A where sal>=(Select avg(sal) from emp where job=A.job)
Display the
record “A” if A.sal>=(Average salary of A.job)
Comments
Post a Comment