DBMS Lab 7
DBMS Lab 7
A view can contain all rows of a table or select rows from a table. A view can be created from one or many tables which
depends on the written SQL query to create a view.
Views, which are kind of virtual tables, allow users to do the following:
Structure data in a way that users or classes of users find natural or intuitive.
Restrict access to the data such that a user can see and (sometimes) modify exactly what they need and no more.
Summarize data from various tables which can be used to generate reports.
Creating Views:
Database views are created using the CREATE VIEW statement. Views can be created from a single table, multiple tables,
or another view.
To create a view, a user must have the appropriate system privilege according to the specific implementation.
Example:
Consider the CUSTOMERS table having the following records:
++++++
| ID | NAME| AGE | ADDRESS| SALARY|
++++++
SQL Sub
| 1 | Ramesh| 32 | Ahmedabad | 2000.00 |
| 2 | Khilan| 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
Queries
| 5 | Hardik| 27 | Bhopal | 8500.00 |
| 6 | Komal| 22 | MP | 4500.00 |
| 7 | Muffy| 24 | Indore | 10000.00 |
++++++
Updating a View:
A view can be updated under certain conditions:
A subquery is used to return data that will be used in the main query as a condition to further restrict the data to be
retrieved.
Subqueries can be used with the SELECT, INSERT, UPDATE, and DELETE statements along with the operators like =, <,
>, >=, <=, IN, BETWEEN etc.
A subquery can have only one column in the SELECT clause, unless multiple columns are in the main query for the
subquery to compare its selected columns.
An ORDER BY cannot be used in a subquery, although the main query can use an ORDER BY. The GROUP BY can be
used to perform the same function as the ORDER BY in a subquery.
Subqueries that return more than one row can only be used with multiple value operators, such as the IN operator.
The SELECT list cannot include any references to values that evaluate to a BLOB, ARRAY, CLOB, or
NCLOB.
The BETWEEN operator cannot be used with a subquery; however, the BETWEEN operator can be used within the
subquery.
Example:
Consider the CUSTOMERS table having the following records:
++++++
| ID | NAME| AGE | ADDRESS| SALARY|
++++++
| 1 | Ramesh| 35 | Ahmedabad | 2000.00 |
| 2 | Khilan| 25 | Delhi| 1500.00 |
| 3 | kaushik | 23 | Kota| 2000.00 |
| 4 | Chaitali | 25 | Mumbai| 6500.00 |
| 5 | Hardik | 27 | Bhopal| 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore| 10000.00 |
++++++
SQL> SELECT *
FROM CUSTOMERS
WHERE ID IN (SELECT ID
FROM CUSTOMERS
WHERE SALARY > 4500) ;
UPDATE table
SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
Example:
Assuming, we have CUSTOMERS_BKP table available which is backup of CUSTOMERS table.
Following example updates SALARY by 0.25 times in CUSTOMERS table for all the customers whose AGE is greater
than or equal to 27:
This would impact two rows and finally CUSTOMERS table would have the following records:
++++++
| ID | NAME| AGE | ADDRESS| SALARY|
++++++
| 1 | Ramesh| 35 | Ahmedabad |125.00 |
| 2 | Khilan| 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik| 27 | Bhopal | 2125.00 |
| 6 | Komal| 22 | MP | 4500.00 |
| 7 | Muffy| 24 | Indore | 10000.00 |
++++++
Following example deletes records from CUSTOMERS table for all the customers whose
AGE is greater than or equal to 27:
This would impact two rows and finally CUSTOMERS table would have the following records:
++++++
| ID | NAME| AGE | ADDRESS | SALARY|
++++++
| 2 | Khilan| 25 | Delhi| 1500.00 |
| 3 | kaushik | 23 | Kota| 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
++++++