Download Ch08_updated

Document related concepts

Open Database Connectivity wikipedia , lookup

Clusterpoint wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

SQL wikipedia , lookup

PL/SQL wikipedia , lookup

Relational algebra wikipedia , lookup

Join (SQL) wikipedia , lookup

Database model wikipedia , lookup

Relational model wikipedia , lookup

Transcript
CS 380
Introduction to Database Systems
(Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views)
Outline
• Introduction
• Data Definition Language
• CREATE TABLE
• ALTER TABLE
• DROP TABLE
• Data Manipulation Language
• SELECT Statement
• INSERT Statement
• DELETE Statement
• UPDATE Statement
• Assertions
• Views
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
1
Introduction
• SQL: Structured Query Language.
• Standard for commercial relational DBMSs, a joint effort by ANSI
& ISO.
• Benefits of a standardized relational language:
• Reduced training costs.
• Productivity.
• Application portability.
• Application longevity.
• Reduced dependence on a single vendor.
• Cross-system communication.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
2
“Declarative” Versus “Procedural”
• Most DBMSs provide the user with a high-level declarative
language interface.
• The user has just to specify “what” results he/she would like,
leaving the “how” to the DBMS.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
3
Schema and Catalog Concepts in SQL
• The concept of an SQL Schema was incorporated to group together
tables & other constructs that belong to the same database
application.
• Schema: the structure that contains descriptions of objects created
by the user (tables, constraints, views, domains, character sets,
triggers, rules).
• Catalog: a set of schemas that constitute the description of a
database.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
4
Types of SQL Statements
• Data Definition Language (DDL):
• Commands that define a database.
• E.g. CREATE, ALTER, DROP, ...etc.
• Data manipulation language (DML):
• Commands that maintain and query a database.
• E.g. SELECT, INSERT, UPDATE, DELETE.
• Data Control Language (DCL):
• Commands that control a database, including administering
privileges and committing data.
• E.g. CONNECT, GRANT, REVOKE, ...etc.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
5
CREATE Statements
• Major CREATE statements:
• CREATE SCHEMA:
• Defines a portion of the database owned by a particular user.
• CREATE SCHEMA COMPANY AUTHORIZATION JSMITH;
• CREATE TABLE:
• Defines a table and its columns.
• CREATE VIEW:
• Defines a logical table from one or more views.
• Other CREATE statements: DOMAIN, CHARACTER SET,
COLLATION, TRANSLATION, ASSERTION.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
6
CREATE TABLE Construct
• CREATE TABLE [schema.] name
(column-1 TYPE [DEFAULT value] [constraints],
column-2 TYPE [DEFAULT value] [constraints],
column-n TYPE [DEFAULT value] [constraints],
[table-constraints]);
• Where:
• [schema.]: schema name followed by a dot.
• name: table name.
• column-1 to column-n: column names.
• TYPE: data type.
• [DEFAULT value]: optional default value.
• [constraints]: optional constraints, can be specified at column
level or at table level.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
7
Some SQL Data Types (From Oracle)
• CHAR(n): a fixed-length string n characters long
(default 1, max 255 character).
• VARCHAR(n): a variable string up to n character long (max 2000).
• INT: an integer number.
• DECIMAL(n,d): a number n digits long including d decimal
places.
• DATE: a valid date YYYY-MM-DD.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
8
CREATE DOMAIN Construct
• A domain can be declared, and the domain name is used with the
attribute specification.
• This makes it easier to change the data type for a domain that is
used by numerous attributes in a schema, and improves schema
readability.
• Examples:
• CREATE DOMAIN SSN_TYPE AS CHAR(9);
• CREATE DOMAIN D_NUM AS INT CHECK
(D_NUM>0 AND D_NUM<21);
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
9
Constraints
• There are essentially five types of constraints:
• NOT NULL constraints.
• UNIQUE value constraints.
• PRIMARY KEY constraints.
• FOREIGN KEY constraints.
• CHECK constraints.
• The syntax of these constraints varies according to whether they are
specified at column level or at table level.
• Any constraints which apply to multiple columns must be defined as
table level constraints.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
10
Constraints
• The syntax for each of the column level constraints is:
• NOT NULL
• UNIQUE
• PRIMARY KEY
• REFERENCES table (key)
• CHECK (condition)
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
11
Constraints
• The syntax for each of the table level constraints is:
• UNIQUE (column-list)
• [CONSTRAINT name] PRIMARY KEY (column-list)
• [CONSTRAINT name] FOREIGN KEY (column-list)
REFERENCES table (column-list)
• CHECK (condition)
• An additional ON DELETE clause may be applied to a foreign key
constraint:
• ON DELETE CASCADE causes all referencing child records to
be deleted whenever a parent record is deleted.
• ON DELETE SET NULL causes all referencing child records to
be set to NULL whenever a parent record is deleted.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
12
Steps in Table Creation
• Identify data types for attributes.
• Determine default values.
• Identify columns that can and cannot be null.
• Identify columns that must be unique (candidate keys).
• Identify primary key - foreign key mates.
• Identify constraints on columns (domain specifications).
• Create the table and associated indexes. To improve access speed
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
13
CREATE TABLE Example
• CREATE TABLE EMPLOYEE
(Fname
VARCHAR(15)
NOT NULL,
Minit
CHAR,
Lname
VARCHAR(15)
NOT NULL,
Ssn
CHAR(9)
NOT NULL,
Bdate
DATE,
Address
VARCHAR(30),
Sex
CHAR
CHECK (LOWER(SEX) IN ('m', 'f')),
Salary
DECIMAL(10,2),
Super_ssn
CHAR(9),
Dno
INT
NOT NULL,
CONSTRAINT EMPPK PRIMARY KEY (Ssn),
CONSTRAINT EMPSUPERFK FOREIGN KEY (Super_ssn) REFERENCES
EMPLOYEE (Ssn) ON DELETE SET NULL,
CONSTRAINT EMPDEPTFK FOREIGN KEY (Dno) REFERENCES
DEPARTMENT (Dnumber) ON DELETE SET NULL);
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
14
ALTER TABLE Construct
• Tables can be changed in a number of ways using the SQL
statement ALTER TABLE.
• Possible actions include:
• Adding or dropping a column.
• Adding or dropping a constraint.
• Changing a column definition.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
15
ALTER TABLE Construct
• To add a column to the EMPLOYEE table:
ALTER TABLE EMPLOYEE ADD
Job VARCHAR(12);
• To add a constraint to the DEPARTMENT table:
ALTER TABLE DEPARTMENT ADD CONSTRAINT
DEPTMGRFK FOREIGN KEY (Mgr_ssn)
REFERENCES EMPLOYEE (Ssn) ON DELETE SET NULL;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
16
ALTER TABLE Construct
• To drop the attribute Address from the EMPLOYEE table:
ALTER TABLE EMPLOYEE DROP COLUMN
Address CASCADE CONSTRAINTS;
• To drop a constraint named EMPSUPERFK from EMPLOYEE
table:
ALTER TABLE EMPLOYEE DROP CONSTRAINT
EMPSUPERFK CASCADE;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
17
ALTER TABLE Construct
• To increase the width of Lname column:
ALTER TABLE EMPLOYEE MODIFY
Lname VARCHAR2(20);
• To add a NOT NULL constraint to the Address column:
ALTER TABLE EMPLOYEE MODIFY
Address NOT NULL;
•To drop an existing default clause:
ALTER TABLE DEPARTMENT ALTER
Mgr_ssn DROP DEFAULT;
• To define a new default clause:
ALTER TABLE DEPARTMENT ALTER
Mgr_ssn SET DEFAULT '333445555';
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
18
DROP SCHEMA Construct
• The DROP SCHEMA command can be used to drop a schema.
• Syntax:
DROP SCHEMA name [CASCADE or RESTRICT]
• Where:
• name: is the name of the schema.
• CASCADE: removes the schema and all its tables, domains, and
other elements.
• RESTRICT: removes the schema only if it has no elements.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
19
DROP TABLE Construct
• The DROP TABLE command deletes all information about the
dropped relation from the database.
• Syntax:
DROP TABLE name [CASCADE CONSTRAINTS]
• Where:
• name: is the name of the table to be dropped.
• CASCADE CONSTRAINTS: drops all referential integrity
constraints which refer to keys in the dropped table.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
20
Basic Queries in SQL
• SQL has one basic statement for retrieving data from a database,
the SELECT statement.
• This is not the same as the SELECT operation of the relational
algebra.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
21
The SQL SELECT Statement
• It consists of the following basic clauses:
Mandatory
SELECT
specifies the columns which are to be retrieved
FROM
specifies the tables from which data is to be retrieved
WHERE
defines any selection criteria required
GROUP BY
specifies how output is to be grouped & summarized
HAVING
determines which group summaries to include in the output
ORDER BY
defines how the output will be stored
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
22
The SELECT-FROM-WHERE Structure
• The basic form of the SELECT statement is:
SELECT
[DISTINCT] <attribute-list>
FROM
<table-list>
WHERE
<condition>
• Where:
• item-list: a comma-separated list of items to be retrieved.
(database attributes, functions, fixed text, ...etc.)
• table-list: a comma-separated list of tables from which the
attributes are to be retrieved.
• condition: a conditional (Boolean) expression that identifies the
tuples to be retrieved by the query.
• [DISTINCT]: ensures only unique tuples will be returned.
• The result of an SQL query is a relation (can be a multiset)
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
23
The SELECT-FROM-WHERE Structure
• Query: retrieve the birthdate and address of the employee(s)
whose name is ‘John B. Smith’.
SELECT
FROM
WHERE
Bdate, Address
EMPLOYEE
Fname='John' AND Minit='B' AND Lname='Smith';
• Is it similar to a tuple relational expression? Any differences?
SELECT Statement
Relational Algebra
SELECT clause
FROM clause
WHERE clause
project operation
cartesian product operation
select condition
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
24
The SELECT-FROM-WHERE Structure
• Query: retrieve the name and address of all employees who
work for the ‘Research’ department.
SELECT
Fname, Lname, Address
FROM
EMPLOYEE, DEPARTMENT
WHERE
Dname='Research' AND Dnumber=Dno;
• Query: for every project located in ‘Stafford’, list the project
number, the controlling department number, and the department
manager’s last name, address, and birthdate.
SELECT
FROM
WHERE
Pnumber, Dnum, Lname, Address, Bdate
PROJECT, DEPARTMENT, EMPLOYEE
Dnum=Dnumber AND Mgr_ssn=ssn AND
Plocation='Stafford';
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
25
Ambiguous Attribute Names, Aliasing, and Tuple
Variables
• In SQL if the same attribute name is used in more than one
relation, the attribute names must be qualified.
• Assume that DNO attribute of the EMPLOYEE relation was
called DNUMBER.
• Query: retrieve the name and address of all employees who
work for the ‘Research’ department.
SELECT
FROM
WHERE
Fname, Lname, Address
EMPLOYEE, DEPARTMENT
Dname='Research' AND
EMPLOYEE.Dnumber=DEPARTMENT.Dnumber;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
26
Ambiguous Attribute Names, Aliasing, and Tuple
Variables
• Ambiguity also arise in the case of queries that refer to the same
relation twice, as in the following example.
• Query: for each employee, retrieve the employee’s first and last
name and the first and last name of his or her immediate supervisor.
SELECT
E.Fname, E.Lname, S.Fname, S.Lname
FROM
EMPLOYEE E, EMPLOYEE S
WHERE
E.Super_ssn=S.Ssn;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
27
Unspecified WHERE Clause
• Query: select all EMPLOYEE SSNs.
SELECT
Ssn
FROM
EMPLOYEE;
• Query: select all combinations of EMPLOYEE SSN and
DEPARTMENT DNAME.
SELECT
Ssn, Dname
FROM
EMPLOYEE, DEPARTMENT;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
28
The Use of Asterisk
• Query: retrieve all the attribute values of any EMPLOYEE who
work in DEPARTMENT 5.
SELECT
*
FROM
EMPLOYEE
WHERE
Dno =5;
• Query: retrieve all the attributes of an EMPLOYEE and all the
attributes of the DEPARTMENT in which he or she works for
every employee of the ‘Research’ department.
SELECT
*
FROM
EMPLOYEE, DEPARTMENT
WHERE
Dname='Research' AND Dno=Dnumber;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
29
Tables as Sets in SQL
• Query: retrieve the salary of every employee.
SELECT
Salary
FROM
EMPLOYEE;
• Query: retrieve all distinct salary values.
SELECT
DISTINCT Salary
FROM
EMPLOYEE;
A set
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
30
The UNION, INTERSECT, & MINUS SET OPERATORS
• The relations resulting from these set operations are sets of tuples;
that is, duplicate tuples are eliminated from the result.
• Query: make a list of all project numbers for projects that involve
an employee whose last name is ‘Smith’, either as a worker or as
a manager of the department that controls the project.
SELECT
FROM
WHERE
UNION
SELECT
FROM
WHERE
DISTINCT
Pnumber
PROJECT, DEPARTMENT, EMPLOYEE
Dnum=Dnumber AND Mgr_ssn=Ssn AND
Lname='Smith'
Union
compatible
DISTINCT
Pnumber
PROJECT, WORKS_ON, EMPLOYEE
Pnumber=Pno AND Essn=Ssn AND Lname='Smith';
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
31
Conditional Operators
• Main conditional operators include: =, <>, >, <, >=, <=.
• Other conditional operators:
• IN: tests if an item value appears in a specified list of values.
• BETWEEN: tests if an item value lies (inclusively) between
two specified values.
• IS NULL: tests if an item has a Null value. Null is neither zero
(in a numeric item), nor spaces (in a character item).
• LIKE: tests if an item value matches a string containing
wildcard characters. The wildcard characters are:
• %: meaning zero or more occurrences of any character.
• _: meaning a single occurrence of any characters.
• The keyword NOT can be used in conjunction with all the above
operators to revise the test.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
32
Conditional Operators
• Query: retrieve the names of all employees whose salary is not
(20000, 30000, or 40000).
SELECT
Fname, Lname
FROM
EMPLOYEE
WHERE
Salary NOT IN (20000, 30000, 40000);
• Query: retrieve all employees in department 5 whose salary is
between $30,000 and $40,000.
SELECT
*
FROM
EMPLOYEE
WHERE
(Salary BETWEEN 30000 AND 40000) AND
Dno = 5;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
33
Conditional Operators
• Query: retrieve the names of all employees who do not have
supervisors.
SELECT
Fname, Lname
FROM
EMPLOYEE
WHERE
Super_ssn IS NULL;
• Query: retrieve all employees whose address is in Houston, Texas.
SELECT
Fname, Lname
FROM
EMPLOYEE
WHERE
Address LIKE '%Houston, TX%';
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
34
Arithmetic Operations
• The standard arithmetic operations (+, -, *, /) can be applied to
numeric values or attributes with numeric domains.
• Query: show the resulting salaries if every employee working on the
‘ProductX’ project is given 10 percent raise.
SELECT
Fname, Lname, 1.1*Salary INCREASED_SAL
FROM
EMPLOYEE, WORKS_ON, PROJECT
WHERE
Ssn=Essn AND Pno=Pnumber AND
Pname='ProductX';
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
35
Ordering of Query Results
• SQL allows the user to order the tuples in the result of a query by
the values of one or more attributes, using the ORDER BY clause.
• Query: retrieve a list of employees and the projects they are working
on, ordered by department and, within each department, ordered
alphabetically by last name, first name.
SELECT
FROM
WHERE
Dname, Lname, Fname, Pname
DEPARTMENT, EMPLOYEE, WORKS_ON, PROJECT
Dnumber=Dno AND Ssn=Essn AND
Pno=Pnumber
ORDER BY Dname, Lname, Fname;
• The default order is in ascending order.
• ORDER BY Dname DESC, Lname ASC, Fname ASC
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
36
Nested Queries
• Some queries require that existing values in the database be fetched
and then used in a comparison condition.
• Such queries can be conveniently formulated by using nested
queries.
• Nested queries: complete select-from-where blocks usually within
the WHERE clause of another query. That other query is called the
outer query.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
38
Nested Queries
• Query: make a list of all project numbers for projects that involve
an employee whose last name is ‘Smith’, either as a worker or as
a manager of the department that controls the project.
SELECT
FROM
WHERE
DISTINCT
Pnumber
PROJECT
Pnumber IN (SELECT Pnumber
FROM
PROJECT, EMPLOYEE,
DEPARTMENT
WHERE Dnum=Dnumber
AND Mgr_ssn=Ssn
AND Lname='Smith')
OR
Pnumber IN (SELECT Pno
FROM
WORKS_ON, EMPLOYEE
WHERE Essn=Ssn
AND Lname='Smith');
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
39
Nested Queries
• SQL allows the use of tuples of values in comparisons by placing
them within parentheses.
• Example:
SELECT
FROM
WHERE
DISTINCT
WORKS_ON
(Pno, Hours)
Essn
IN
(SELECT
FROM
WHERE
Pno, Hours
WORKS_ON
Essn='123456789');
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
40
Nested Queries
• In addition to the IN operator, a number of other comparison
operators can be used to compare a single value (attribute) to a set
or multiset.
• The keywords ANY or ALL can be combined with the following
operators: >, >=, <, <=, <>. (= ANY is equivalent to IN)
• Query: list the names of employees whose salary is greater than the
the salary of all the employees in department 5.
SELECT
Lname, Fname
FROM
EMPLOYEE
WHERE
Salary > ALL (SELECT
Salary
FROM
EMPLOYEE
WHERE Dno=5);
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
41
The EXISTS Function in SQL
• This function checks whether the result of a correlated nested query
is empty (contains no tuples) or not.
• Query: retrieve the name of each employee who has a dependent
with the same first name and same sex as the employee.
SELECT
FROM
WHERE
E.Fname, E.Lname
EMPLOYEE E
EXISTS (SELECT
FROM
WHERE
*
DEPENDENT
E.Ssn=Essn AND
E.Sex=Sex AND
E.Fname=Dependent_name);
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
44
The EXISTS Function in SQL
• Query: retrieve the names of employees who have no dependents.
SELECT
Fname, Lname
FROM
EMPLOYEE
WHERE
NOT EXISTS (SELECT
*
FROM
DEPENDENT
WHERE
Ssn=Essn);
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
45
Aggregate Function in SQL
• A number of built-in functions exist: COUNT, SUM, MAX, MIN,
and AVG.
• These functions can be used in the SELECT clause or in the
HAVING clause.
• The functions SUM, MAX, MIN, and AVG are applied to a set or
multiset of numeric values.
• The functions MAX and MIN can also be used with attributes that
have nonnumeric domains if the domain values have a total
ordering among one another.
• Null values are discarded when aggregate functions are applied to a
particular attribute.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
50
Aggregate Function in SQL
• Query: find the sum of the salaries of all employees, the maximum
salary, the minimum salary, and the average salary.
SELECT
FROM
SUM (Salary), MAX (Salary), MIN (Salary),
AVG (Salary)
EMPLOYEE;
• Query: find the sum of the salaries of all employees of the
‘Research’ department, as well as the maximum salary, the
minimum salary, and the average salary in this department.
SELECT
SUM (Salary), MAX (Salary), MIN (Salary),
AVG (Salary)
FROM
EMPLOYEE, DEPARTMENT
WHERE
Dno=Dnumber AND Dname='Research';
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
51
Aggregate Function in SQL
• Query: retrieve the total number of employees in the company.
SELECT
COUNT(*)
FROM
EMPLOYEE;
• Query: retrieve the total number of employees in the ‘Research’
department.
SELECT
COUNT(*)
FROM
EMPLOYEE, DEPARTMENT
WHERE
Dno=Dnumber AND Dname='Research';
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
52
Aggregate Function in SQL
• Query: Count the number of distinct salary values in the database.
SELECT
COUNT(DISTINCT Salary)
FROM
EMPLOYEE;
• Query: retrieve the names of all employees who have two or more
dependents.
SELECT
Lname, Fname
FROM
EMPLOYEE
WHERE
(SELECT
COUNT(*)
FROM
DEPENDENT
WHERE
Ssn=Essn) >= 2;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
53
The GROUP BY Clause
• This clause enables aggregates to be accumulated and grouped on
output.
• Query: for each department, retrieve the department number, the
number of employees in the department, and their average salary.
SELECT
DNO, COUNT(*), AVG(Salary)
FROM
EMPLOYEE
GROUP BY Dno;
• If Nulls exist in the grouping attribute, then a separate group is
created for all tuples with a NULL value in the grouping attribute.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
54
The HAVING Clause
• This clause specifies which groups are to be selected for output.
• Groups are only output if they match the condition(s) specified
by the HAVING clause.
• Query: for each project on which more than two employees work,
retrieve the project number, the project name, and the number of
employees who work on the project.
SELECT
Pnumber, Pname, COUNT(*)
FROM
PROJECT, WORKS_ON
WHERE
Pnumber=Pno
GROUP BY Pnumber, Pname
HAVING COUNT(*) >2;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
56
INSERT, DELETE, and UPDATE Statements
• In SQL, three commands can be used to modify the database:
• INSERT.
• DELETE.
• UPDATE.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
59
The INSERT Statement
• Using the SQL INSERT statement, rows may be inserted into tables
in two ways:
• As lists of values, one row at a time.
• From another table using a query.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
60
INSERT Using a Value List
• Syntax:
INSERT INTO table [(attribute-list)]
VALUES
(value-list)
• Where:
• table: the name of the table to update.
• attribute-list: a list of attributes in the specified table.
• value-list: the list of values to be inserted for the row.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
61
INSERT Using a Value List
• Example:
INSERT INTO PROJECT
VALUES ('ProductZ', 1, NULL, 2)
• Example:
INSERT INTO PROJECT (PNAME, PNUMBER, DNUM)
VALUES ('ProductZ', 1, 2)
• Example:
INSERT INTO PROJECT (PNAME, PNUMBER, DNUM)
VALUES ('&PN', &P_NO, &D_NO)
Each time it is run, the user will be
prompted for a new set of values
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
62
INSERT Using a Query
• Syntax:
INSERT INTO table [(attribute-list)]
SELECT statement
• There are no limitation concerning the SELECT statement.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
63
INSERT Using a Query
• Example:
CREATE TABLE
(DEPT_NAME
NO_OF_EMPS
TOTAL_SAL
DEPTS_INFO
VARCHAR(15),
INTEGER,
INTEGER);
INSERT
INTO DEPTS_INFO
SELECT
DNAME, COUNT(*), SUM (Salary)
FROM
DEPARTMENT, EMPLOYEE
WHERE
Dnumber=Dno
GROUP BY Dname;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
64
The DELETE Statement
• Syntax:
DELETE FROM table
[WHERE conditions]
• Example:
DELETE
WHERE
• Example:
DELETE
WHERE
• Example:
DELETE
FROM EMPLOYEE
Lname='Brown';
FROM EMPLOYEE
Dno IN (SELECT Dnumber
FROM
DEPARTMENT
WHERE Dname='Research');
FROM
EMPLOYEE;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
65
The UPDATE Statement
• The UPDATE statement can be used:
• With individual values.
• In conjunction with a SELECT statement.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
66
UPDATE Using Fixed Values
• Syntax:
UPDATE
SET
table
attribute-1 = value-1,
attribute-2 = value-2,
:
attribute-n = value-n
[WHERE conditions]
• Example:
UPDATE
SET
WHERE
PROJECT
Plocation = 'Bellaire'
Pnumber=10;
• Example:
UPDATE
SET
EMPLOYEE
Salary = Salary * 1.25;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
67
UPDATE Using a Query
• Syntax:
UPDATE table
SET
(attribute-list)
=
(SELECT statement)
[WHERE conditions]
• Example:
Update
SET
=
( SELECT
FROM
WHERE
WHERE
EMPLOYEE
(Salary)
Salary
EMPLOYEE
Ssn='987654321')
Fname = 'John' AND Lname='Smith';
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
68
Concept of a View (Virtual Table) in SQL
• A view is a customized representation of one or more underlying
tables or other views (or a mixture of both).
• A view does not necessarily exist in physical form.
• Allows full query operations.
• Allows limited update operations (since the table may not
physically be stored).
• Convenience for expressing certain operations.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
70
Concept of a View (Virtual Table) in SQL
• Advantages of views:
• Simplify query commands.
• Provide data security.
• Enhance programming productivity.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
71
Specification of Views in SQL
• Example:
CREATE
SELECT
FROM
WHERE
VIEW
WORKS_ON1
AS
Fname, Lname, Pname, Hours
EMPLOYEE, PROJECT, WORKS_ON
Ssn=Essn AND Pno=Pnumber;
• Example:
CREATE
VIEW
DEPT_INFO(Dept_name,
No_of_emps, Total_sal) AS
SELECT
Dname, COUNT(*), SUM(Salary)
FROM
DEPARTMENT, EMPLOYEE
WHERE
Dnumber=Dno
GROUP BY Dname;
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
72
Specification of Views in SQL
• Query: retrieve the last name and first name of all employees who
work on ‘ProjectX’.
SELECT
Fname, Lname
FROM
WORKS_ON1
WHERE
Pname='ProjectX';
• A view is supposed to be always up to date.
• When no longer needed, a view can be dropped:
DROP VIEW name
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
73
Effective View Implementation
• Two main approaches have been suggested:
• Query modification: involves modifying the view query into a
query on the underlying base tables. I.e, the previous query
would be automatically modified to:
SELECT Fname, Lname
FROM
EMPLOYEE, PROJECT, WORKS_ON
WHERE Ssn=Essn AND Pno=Pnumber AND
Pname='ProjectX';
• View Materialization: involves physically creating a temporary
view table (should be kept up to date).
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
74
View Update
• A view with a single defining table is updatable if the view
attributes contain the primary key of the base relation, as well as all
attributes with the NOT NULL constraint that do not have default
values specified.
• Views defined on multiple tables using joins are generally not
updatable.
• Views defined using grouping and aggregate functions are not
updatable.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
75
View Update
• In SQL, the clause WITH CHECK OPTION must be added at the
end of the new definition if the view is to be updated.
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views
76