0% found this document useful (0 votes)
13 views47 pages

DDL DML Complete

Uploaded by

albarokahwidi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views47 pages

DDL DML Complete

Uploaded by

albarokahwidi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 47

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


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 DEPTS_INFO
(DEPT_NAME VARCHAR(15),
NO_OF_EMPS INTEGER,
TOTAL_SAL 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 FROM EMPLOYEE
WHERE Lname='Brown';
• Example:
DELETE FROM EMPLOYEE
WHERE Dno IN (SELECT Dnumber
FROM DEPARTMENT
WHERE Dname='Research');
• Example:
DELETE 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 table
SET attribute-1 = value-1,
attribute-2 = value-2,
:
attribute-n = value-n
[WHERE conditions]
• Example:
UPDATE PROJECT
SET Plocation = 'Bellaire'
WHERE Pnumber=10;
• Example:
UPDATE EMPLOYEE
SET 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 EMPLOYEE
SET (Salary)
=
( SELECT Salary
FROM EMPLOYEE
WHERE Ssn='987654321')
WHERE Fname = 'John' AND Lname='Smith';
Chapter 8: SQL-99: Schema Definition, Constraints, Queries, and Views 68
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
Mandatory
• It consists of the following basic clauses:

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 Bdate, Address
FROM EMPLOYEE
WHERE Fname='John' AND Minit='B' AND Lname='Smith';

• Is it similar to a tuple relational expression? Any differences?

SELECT Statement Relational Algebra


SELECT clause project operation
FROM clause cartesian product operation
WHERE clause 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 Pnumber, Dnum, Lname, Address, Bdate
FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE 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 Fname, Lname, Address
FROM EMPLOYEE, DEPARTMENT
WHERE 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
A set
FROM EMPLOYEE;

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 DISTINCT Pnumber
FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND Union
Lname='Smith' compatible
UNION
SELECT DISTINCT Pnumber
FROM PROJECT, WORKS_ON, EMPLOYEE
WHERE 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 Dname, Lname, Fname, Pname
FROM DEPARTMENT, EMPLOYEE, WORKS_ON, PROJECT
WHERE 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

You might also like