Lab #13
Sql Views and Sql Subqueries
SQL Views
SQL CREATE VIEW Statement
In SQL, a view is a virtual table based on the result-set of an SQL statement.
A view contains rows and columns, just like a real table. The fields in a view are
fields from one or more real tables in the database.
You can add SQL functions, WHERE, and JOIN statements to a view and present
the data as if the data were coming from one single table.
CREATE VIEW Syntax
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Note: A view always shows up-to-date data! The database engine recreates the
data, using the view's SQL statement, every time a user queries a view.
SQL CREATE VIEW Examples
If you have the Northwind database you can see that it has several views
installed by default.
The view "Salesmans_View" lists all active products (Salesman’s that have
commission 0.12) from the "Salesman’s" table. The view is created with the
following SQL:
CREATE VIEW [Salesmans_View] AS
SELECT salesman_id, Name
FROM Salesman’s
WHERE commission = 0.12;
Then, we can query the view as follows:
SELECT * FROM [Salesmans_View];
Another view in the Northwind sample database selects every product in the
"Products" table with a unit price higher than the average unit price:
CREATE VIEW [Products Above Average Price] AS
SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice > (SELECT AVG (UnitPrice) FROM Products);
We can query the view above as follows:
SELECT * FROM [Products Above Average Price];
Another view in the Northwind database calculates the total sale for each
category in 1997. Note that this view selects its data from another view called
"Product Sales for 1997":
CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName, Sum (ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName;
We can query the view above as follows:
SELECT * FROM [Category Sales For 1997];
We can also add a condition to the query. Let's see the total sale only for the
category "Beverages":
SELECT * FROM [Category Sales For 1997]
WHERE CategoryName = 'Beverages';
SQL Updating a View
You can update a view by using the following syntax:
SQL CREATE OR REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2,…
FROM table_name
WHERE condition;
Example
Now we want to add the "Category" column to the "Current Product List" view.
We will update the view with the following SQL:
CREATE OR REPLACE VIEW [Current Product List] AS
SELECT ProductID, ProductName, Category
FROM Products
WHERE Discontinued = No;
SQL Dropping a View
You can delete a view with the DROP VIEW command.
SQL DROP VIEW Syntax
DROP VIEW view_name;
SQL Subqueries
A subquery is a SQL statement that has another SQL query
embedded in the Where or the having clause
A subquery is a SQL query within a query.
Subqueries are nested queries that provide data to the enclosing
query.
Subqueries can return individual values or a list of records
Subqueries must be enclosed with parenthesis
Syntax
The syntax for a subquery when the embedded SQL statement is part of
the WHERE condition is as follows:
SELECT "column_name1"
FROM "table_name1"
WHERE "column_name2" [Comparison Operator]
(SELECT "column_name3"
FROM "table_name2"
WHERE "condition");
[Comparison Operator] could be equality operators such as =, >, <, >=, <=. It
can also be a text operator such as "LIKE". The portion in red is considered
as the "inner query," while the portion in Green is considered as the "outer
query."
Examples
We use the following tables for our examples.
Student
Example 1: Simple subquery
To use a subquery to find the data of youngest student
Select * from student where age in(select min(age) from
student)
Result:
This type of subquery is called a simple subquery.
Example 2:
Consider 2 tables with student table
Course Enrollment
Now we want to show those students who have enrolled course with 3 credit
hours
Select * from student where sid in(select sid from enrollment
where cid in(select cid from course where cr_hours=3))
The Result will be like this: