Professional Documents
Culture Documents
SYSTEMS
Send sms to 567678 as JOIN MRITS to get regular campus updates
www.mrits.co.nr
THE FORM OF A BASIC SQL QUERY
The basic form of an SQL query is as follows:
FROM from-list
WHERE qualification;
Every query must have a SELECT clause, which specifies columns to be retained in the result, and a
FROM clause, which specifies a cross-product of tables. The optional WHERE clause specifies selection
conditions on the tables mentioned in the FROM clause.
• The qualification in the WHERE clause is a Boolean combination (i.e. an expression using
logical connectives AND, OR, and NOT) of conditions of the form expression op expression,
where op is one of the relational operators. An expression is a column name, a constant, or an
expression.
• The DISTINCT keyword is optional. It ensures the table computed from the query should not
contain duplicates.
Examples:
Union:
Ex: Find the names of sailors who have reserved a red or a green boat.
SELECT S.sname FROM Sailors S, Reserves R, Boats B WHERE S.sid = R.sid AND R.bid = B.bid
AND B.color = ‘red’
UNION
SELECT S2.sname FROM Sailors S2, Boats B2, Reserves R2 WHERE S2.sid = R2.sid AND R2.bid =
B2.bid AND B2.color = ‘green’;
Intersect:
Ex: Find all sids of sailors who have a rating of 10 and reserved boat 104.
INTERSECT
Except:
Ex: Find the sids of all sailors who have reserved red boats but not green boats.
SELECT R.sid FROM Boats B, Reserves R WHERE R.bid = B.bid AND B.color = ‘red’
EXCEPT
SELECT R2.sid FROM Boats B2, Reserves R2 WHERE R2.bid = B2.bid AND B2.color = ‘green’;
NESTED QUERIES
One of the most powerful features of SQL is nested queries. A nested query is a query that has another
query embedded within it. The embedded query is called a sub query. A sub query typically appears
within the WHERE clause of a query.
SELECT S.sname FROM Sailors S WHERE S.sid IN (SELECT R.sid FROM Reserves R WHERE
R.bid = 103);
The nested query computes the set of sids of sailors who have reserved boat 103 and the top-level query
retrieves the names of sailors whose sid is in this set.
The IN operator allows us to test whether a value is in a given set of elements. In contrast to this is the
NOT IN operator.
Ex: Find the names of sailors who have reserved boat number 103.
SELECT S.sname FROM Sailors S WHERE EXISTS (SELECT * FROM Reserves R WHERE R.bid =
103 AND R.sid = S.sid);
The EXISTS operator is another set comparison operator, such as IN. It allows us to test whether a set is
non-empty or not. If non-empty, sailor S has reserved boat 103, and we retrieve the name. In contrast to
this is the NOT EXISTS operator.
The sub query clearly depends on the current row S of the outer query. The occurrence of S in the sub
query (in the form of S.sid) is called a correlation, and such queries are called as correlated queries.
Ex:
1. Find the sailors whose rating is better than some sailor called Horatio.
SELECT S.sid FROM Sailors S WHERE S.rating > ANY (SELECT S2.rating FROM Sailors S2
WHERE S2.sname = ‘Horatio’);
2. Find the sailors whose rating is better than every sailor called Horatio.
SELECT S.sid FROM Sailors S WHERE S.rating > ALL (SELECT S2.rating FROM Sailors S2
WHERE S2.sname = ‘Horatio’);
AGGREGATE OPERATORS
SQL supports five aggregate operators:
2. SUM ([DISTINCT] A): The sum of all (unique) values in the column A.
3. AVG ([DISTINCT] A): The average of all (unique) values in the column A.
Ex:
The HANING clause can be used in conjunction with the GROUP BY clause. HAVING imposes a
condition on the GROUP BY clause, to filter the groups created by the GROUP BY clause. Each column
in the HANING clause must appear either in the aggregate function or in the GROUP BY list.
WHERE qualification
GROUP BY grouping-list
HAVING group-qualification;
Ex:
1. Find the age of the youngest sailor for each rating level.
2. Find the average age of sailors for each rating level that has at least two sailors.
NULL Values
Often there may be records in a table that do not have values for every field. This could because the
information is not available at the time of data entry or because the field is not applicable in every case. If
column is created as NULLABLE, Oracle will place a NULL value in the column in the absence of a
user defined value.
A NULL value is different from a blank or a zero. A NULL value can be inserted into columns of any
data type.
We can disallow null values by specifying NOT NULL as part of the field definition.
For example, sname CHAR (20) NOT NULL. The fields in a primary key are not allowed to take on
null values. Thus, there is an implicit NOT NULL constraint for every field listed in a PRIMARY KEY
constraint.
Outer Joins
Outer joins are similar to equijoins, but give a bit more flexibility when selecting data from the related
tables. This type of join can be used in situations where it is desired, to select all rows from the table on
Consider the join of two tables; say Sailors and Reserves with the following instances:
22 Dustin 7 45.0
31 Lubber 8 55.5
58 Rusty 10 35.0
sid bid day
22 101 10/10/96
58 103 11/12/96
44 104 12/01/96
In a left outer join, Sailor rows without a matching Reserves row appear in the result, but not vice versa.
Ex: SELECT S.sid, R.bid FROM Sailors S LEFT OUTER JOIN Reserves R;
sid bid
22 101
31 null
58 103
In a right outer join, Reserves rows without a matching Sailors row appear in the result, but not vice
versa.
Ex: SELECT S.sid, R.bid FROM Sailors S RIGHT OUTER JOIN Reserves R;
sid bid
22 101
58 103
null 104
In a full outer join, both Sailors and Reserves rows without a match appear in the result.
Ex: SELECT S.sid, R.bid FROM Sailors S FULL OUTER JOIN Reserves R;
sid bid
22 101
31 null
58 103
null 104
• Condition: A condition specifies a Boolean expression that must be TRUE for the trigger to fire.
Its function is to conditionally control the execution of a trigger.
• Action: A procedure that is executed when the trigger is activated and its condition is TRUE.
A trigger can be thought of as a ‘daemon’ that monitors a database, and is executed when the database is
modified in a way that matches the event specification. An insert, delete or update statement could
activate a trigger.
Types of Triggers:
Row-level Triggers:
A row trigger is fired each time a row in the table is affected by the triggering statement. For example, if
an UPDATE statement updates rows of a table, a row trigger is fired once for each row affected by the
UPDATE statement.
Statement-level Triggers:
A statement trigger is fired once on behalf of the triggering statement, independent of the number of rows
the triggering statement affects.
DECLARE
count INTEGER;
BEGIN
count:=0; /* Action */
END
BEGIN /* Action */
count:=count+1;
END
Deleting a Trigger:
Syntax:
Uses of Triggers:
• Triggers can alert users to unusual events.
• Triggers can generate a log of events to support auditing and security checks.
• Some database systems use triggers internally as the basis for managing replicas of relations
• Triggers can also be used for workflow management and enforcing business rules.
Note: For more example queries refer Database Management Systems, Ramakrishnan.
********************************************************************************