5.0_sql_part_1
TRANSCRIPT
-
8/10/2019 5.0_SQL_PART_1
1/45
1
STRUCTURED
QUERY
LANGUAGE (SQL)
-
8/10/2019 5.0_SQL_PART_1
2/45
2
Database Language
Allow user to:
create the database and relation structures
perform basic data management tasks, such as theinsertion, modification, and deletion of data from therelations
perform both simple and complex queries
perform the above tasks with minimal user effort
command structure and syntax must be easy tolearn
must be portable; which conform to some standard
SQL
-
8/10/2019 5.0_SQL_PART_1
3/45
3
SQL
is an example of a transform-oriented
language, or language designed to use
relations to transform inputs into requiredoutputs
has 2 major components:
DDL: for defining the d/b structure andcontrolling access to data
DML: for retrieving and updating data
-
8/10/2019 5.0_SQL_PART_1
4/45
4
SQL
It is a non-procedural language: you
specify what information you require,
rather than how to get it.
Free-format
-
8/10/2019 5.0_SQL_PART_1
5/45
5
SQL
Consists of standard English words: CREATE TABLEStaff(staffNo VARCHAR(5),
lName VARCHAR(15),
salary DECIMAL(7,2));
INSERT INTO Staff VALUES ('SG16', 'Brown',8300);
SELECTstaffNo, lName, salary
FROM Staff
WHERE salary > 10000;
-
8/10/2019 5.0_SQL_PART_1
6/45
6
SQL
Can be used by range of users including
DBAs, management, application
developers, and other types of end users.
An ISO standard now exists for SQL,
making it both the formal and de facto
standard language for relational databases.
-
8/10/2019 5.0_SQL_PART_1
7/45
7
Writing SQL Commands
SQL statement consists of reserved wordsand user-def ined words.
Reserved words are a fixed part of SQL andmust be spelt exactly as required andcannot be split across lines.
User-defined words are made up by user
and represent names of various databaseobjects such as relations, columns, views.
-
8/10/2019 5.0_SQL_PART_1
8/45
8
Writing SQL Commands
Most components of an SQL statement are caseinsensitive, except for literal character data.
More readable with indentation and lineation:
Each clause should begin on a new line.Start of a clause should line up with start of
other clauses.
If clause has several parts, should each appear
on a separate line and be indented under startof clause.
-
8/10/2019 5.0_SQL_PART_1
9/45
9
Literals
Literals are constants used in SQL
statements.
All non-numeric literals must be enclosed
in single quotes (e.g. London).
All numeric literals must not be enclosed in
quotes (e.g. 650.00).
-
8/10/2019 5.0_SQL_PART_1
10/45
10
Writing SQL Commands
Use extended form of BNF notation: Upper-case letters represent reserved words.
Lower-case letters represent user-defined words.
a vertical bar (|) indicates a choice amongalternatives.
Curly braces indicate a requi red element.
Square brackets indicate an optional element.
an ellipsis () indicates optional repeti tion (0 ormore).
-
8/10/2019 5.0_SQL_PART_1
11/45
SQL: Data Defini tion
ISO SQL Data types
Integrity Enhancement Feature
Data Definition
Views
Transactions Discretionary Access Control
-
8/10/2019 5.0_SQL_PART_1
12/45
I SO SQL Data Types
-
8/10/2019 5.0_SQL_PART_1
13/45
I ntegr i ty Enhancement Feature
facilities provided by SQL to protect the d/b frombecoming inconsistent.
Consider five types of integrity constraints:
Required data.
Domain constraints.
Entity integrity.
Referential integrity.
Enterprise constraints.
These constraints can be defined in the CREATE andALTER TABLE statements (as we will see shortly).
-
8/10/2019 5.0_SQL_PART_1
14/45
I ntegr ity Enhancement Feature -
Required Data
position VARCHAR(10) NOT NULL
specify that column position cannot be null
-
8/10/2019 5.0_SQL_PART_1
15/45
I ntegr i ty Enhancement Feature -
Domain Constraints
(a) CHECK
sex CHAR NOT NULL
CHECK (sex IN ('M', 'F'))
(b) CREATE DOMAIN
CREATE DOMAIN DomainName [AS] dataType
[DEFAULT defaultOption]
[CHECK (searchCondition)]
For example:
CREATE DOMAIN SexType AS CHAR
CHECK (VALUE IN ('M', 'F'));
sex SexType NOT NULL;
-
8/10/2019 5.0_SQL_PART_1
16/45
I ntegr ity Enhancement Feature -
Domain Constraints
searchConditioncan involve a table lookup:
CREATE DOMAIN BranchNo AS CHAR(4)
CHECK (VALUE IN (SELECT branchNo
FROM Branch));
Domains can be removed using DROP DOMAIN:
DROP DOMAIN DomainName
[RESTRICT | CASCADE]
-
8/10/2019 5.0_SQL_PART_1
17/45
I ntegr i ty Enhancement Feature -
Entity I ntegr ity
Primary key of a table must contain a unique,non-null value for each row.
ISO standard supports PRIMARY KEY clause inCREATE and ALTER TABLE statements:
PRIMARY KEY(staffNo)
PRIMARY KEY(clientNo, propertyNo)
Can only have one PRIMARY KEY clause pertable. Can still ensure uniqueness for alternatekeys using UNIQUE:
UNIQUE(telNo)
-
8/10/2019 5.0_SQL_PART_1
18/45
I ntegr ity Enhancement Feature -
Referential I ntegr ity
Foreign Key (FK) is column or set of columns thatlinks each row in child table containing the FK to
the row of parent table containing matching PK. Referential integrity means that, if FK contains a
value, that value must refer to existing row inparent table.
ISO standard supports definition of FKs withFOREIGN KEY clause in CREATE and ALTERTABLE:
FOREIGN KEY(branchNo) REFERENCES Branch
I t i t E h t F t
-
8/10/2019 5.0_SQL_PART_1
19/45
I ntegr ity Enhancement Feature -
Referential I ntegr ity
Any INSERT/UPDATE that attempts to createFK value in child table without matchingcandidate key value in parent is rejected.
Action taken that attempts to update/delete acandidate key value in parent table with matchingrows in child is dependent on referential actionspecified using ON UPDATE and ON DELETEsubclauses:
CASCADE - SET NULL,
SET DEFAULT - NO ACTION
-
8/10/2019 5.0_SQL_PART_1
20/45
I ntegr i ty Enhancement Feature -
Referential I ntegr ity
CASCADE: Delete row from parent and delete matchingrows in child, and so on in cascading manner.
SET NULL: Delete row from parent and set FK column(s) inchild to NULL. Only valid if FK columns are NOT NULL.
SET DEFAULT: Delete row from parent and set each
component of FK in child to specified default. Only valid ifDEFAULT specified for FK columns
NO ACTION: Reject delete from parent. Default.
-
8/10/2019 5.0_SQL_PART_1
21/45
I ntegr i ty Enhancement Feature -
Referential I ntegr ity
FOREIGN KEY (staffNo) REFERENCES
Staff ON DELETE SET NULL
FOREIGN KEY (ownerNo) REFERENCES
Owner ON UPDATE CASCADE
-
8/10/2019 5.0_SQL_PART_1
22/45
I ntegr i ty Enhancement Feature
General/Enterpr ise Constraints
The ISO standard allows enterprise constraints to
be specified using CHECK/UNIQUE in CREATE
and ALTER TABLE and also the CREATE
ASSERTION statement with following format:
CREATE ASSERTION AssertionName
CHECK (searchCondition)
which is very similar to the CHECK clause.
-
8/10/2019 5.0_SQL_PART_1
23/45
I ntegr i ty Enhancement Feature
General/Enterpr ise Constraints
CREATE ASSERTION StaffNotHandlingTooMuch
CHECK (NOT EXISTS (SELECT staffNo
FROM PropertyForRent
GROUP BY staffNo
HAVING COUNT(*) > 100))
-
8/10/2019 5.0_SQL_PART_1
24/45
Data Defini tion
SQL DDL allows database objects such as schemas,domains, tables, views, and indexes to be createdand destroyed.
Main SQL DDL statements are:CREATE SCHEMA DROP SCHEMA
CREATE/ALTER DOMAIN DROP DOMAIN
CREATE/ALTER TABLE DROP TABLE
CREATE VIEW DROP VIEW
Many DBMSs also provide:
CREATE INDEX DROP INDEX
-
8/10/2019 5.0_SQL_PART_1
25/45
Data Defini tion
Relations and other database objects exist in anenvironment.
Each environment contains one or more catalogs,
and each catalog consists of set of schemas. Schema is named collection of related database
objects.
Objects in a schema can be tables, views, domains,
assertions, collations, translations, and charactersets. All have same owner.
-
8/10/2019 5.0_SQL_PART_1
26/45
Data Defini tion - CREATE
SCHEMA
CREATE SCHEMA [Name |
AUTHORIZATION CreatorId ]
DROP SCHEMA Name [RESTRICT | CASCADE ]
With RESTRICT (default), schema must beempty or operation fails.
With CASCADE, operation cascades to drop
all objects associated with schema in order
defined above. If any of these operations fail,
DROP SCHEMA fails.
-
8/10/2019 5.0_SQL_PART_1
27/45
Data Defini tion - CREATE
TABLE
CREATE TABLE TableName
{(colName dataType [NOT NULL] [UNIQUE]
[DEFAULT defaultOption]
[CHECK searchCondition] [,...]}
[PRIMARY KEY (listOfColumns),]
{[UNIQUE (listOfColumns),] [,]}
{[FOREIGN KEY (listOfFKColumns)
REFERENCES ParentTableName [(listOfCKColumns)],
[ON UPDATE referentialAction]
[ON DELETE referentialAction ]] [,]}
{[CHECK searchCondition)] [,] })
-
8/10/2019 5.0_SQL_PART_1
28/45
Data Defini tion - CREATE
TABLE
Creates a table with one or more columns of thespecified dataType.
With NOT NULL, system rejects any attempt to
insert a null in the column. Can specify a DEFAULT value for the column.
Primary keys should always be specified as NOTNULL.
FOREIGN KEY clause specifies FK along withthe referential action
-
8/10/2019 5.0_SQL_PART_1
29/45
Example 6.1 - CREATE TABLE
CREATE DOMAIN OwnerNumber AS VARCHAR(5)CHECK (VALUE IN (SELECT ownerNo FROM Owner));
CREATE DOMAIN StaffNumber AS VARCHAR(5)
CHECK (VALUE IN (SELECT staffNo FROM Staff));
CREATE DOMAIN PNumber AS VARCHAR(5);
CREATE DOMAIN PRooms AS SMALLINT;
CHECK(VALUE BETWEEN 1 AND 15);
CREATE DOMAIN PRent AS DECIMAL(6,2)
CHECK(VALUE BETWEEN 0 AND 9999.99);
-
8/10/2019 5.0_SQL_PART_1
30/45
Example 6.1 - CREATE TABLE
CREATE TABLE PropertyForRent (
propertyNo PNumber NOT NULL,
rooms PRooms NOT NULL DEFAULT 4,
rent PRent NOT NULL, DEFAULT 600,
ownerNo OwnerNumber NOT NULL,
staffNo StaffNumber
Constraint StaffNotHandlingTooMuch,
branchNo BranchNumber NOT NULL,
PRIMARY KEY (propertyNo),FOREIGN KEY (staffNo) REFERENCES Staff
ON DELETE SET NULL ON UPDATE CASCADE);
-
8/10/2019 5.0_SQL_PART_1
31/45
Data Defini tion - ALTER TABLE
Add a new column to a table.
Drop a column from a table.
Add a new table constraint. Drop a table constraint.
Set a default for a column.
Drop a default for a column.
-
8/10/2019 5.0_SQL_PART_1
32/45
Example 6.2(a) - ALTER TABLE
Change Staff table by removing default of
'Assistant' for position column and setting
default for sex column to female ('F').
ALTER TABLE Staff
ALTER position DROP DEFAULT;
ALTER TABLE StaffALTER sex SET DEFAULT 'F';
-
8/10/2019 5.0_SQL_PART_1
33/45
Example 6.2(b) - ALTER TABLE
Remove constraint from PropertyForRent that
staff not allowed to handle more than 100
properties at time. Add new column to Client table.
ALTER TABLE PropertyForRent
DROP CONSTRAINT StaffNotHandlingTooMuch;
ALTER TABLE Client
ADD prefNoRooms PRooms;
-
8/10/2019 5.0_SQL_PART_1
34/45
Data Defini tion - DROP TABLE
DROP TABLE TableName [RESTRICT | CASCADE]
e.g. DROP TABLE PropertyForRent;
Removes named table and all rows within it. With RESTRICT, if any other objects depend for
their existence on continued existence of this table,
SQL does not allow request.
With CASCADE, SQL drops all dependent objects
(and objects dependent on these objects).
-
8/10/2019 5.0_SQL_PART_1
35/45
Views
View
Dynamic result of one or more relational
operations operating on base relations to
produce another relation.
Virtual relation that does not necessarily
actually exist in the database but is
produced upon request, at time of request.
-
8/10/2019 5.0_SQL_PART_1
36/45
Views
Contents of a view are defined as a query on one
or more base relations.
With view resolution, any operations on view are
automatically translated into operations onrelations from which it is derived.
With view materialization, the view is stored as a
temporary table, which is maintained as the
underlying base tables are updated.
-
8/10/2019 5.0_SQL_PART_1
37/45
SQL - CREATE VI EW
CREATE VIEW ViewName [ (newColumnName [,...]) ]AS subselect
[WITH [CASCADED | LOCAL] CHECK OPTION]
Can assign a name to each column in view. If list of column names is specified, it must have
same number of items as number of columnsproduced by subselect.
If omitted, each column takes name ofcorresponding column in subselect.
-
8/10/2019 5.0_SQL_PART_1
38/45
SQL - CREATE VI EW
List must be specified if there is any ambiguity ina column name.
The subselectis known as the defining query.
WITH CHECK OPTION ensures that if a rowfails to satisfy WHERE clause of defining query, itis not added to underlying base table.
Need SELECT privilege on all tables referenced in
subselect and USAGE privilege on any domainsused in referenced columns.
-
8/10/2019 5.0_SQL_PART_1
39/45
Example - Create Horizontal View
Create view so that manager at branch B003
can only see details for staff who work in his or
her office.
CREATE VIEW Manager3StaffAS SELECT *FROM StaffWHERE branchNo = 'B003';
-
8/10/2019 5.0_SQL_PART_1
40/45
Example - Create Vertical View
Create view of staff details at branch B003
excluding salaries.
CREATE VIEW Staff3
AS SELECT staffNo, fName, lName, position, sex
FROM Staff
WHERE branchNo = 'B003';
-
8/10/2019 5.0_SQL_PART_1
41/45
Example - Grouped and Joined Views
Create view of staff who manage properties for rent,including branch number they work at, staff number, and
number of properties they manage.
CREATE VIEW StaffPropCnt (branchNo, staffNo, cnt)
AS SELECT s.branchNo, s.staffNo, COUNT(*)
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.branchNo, s.staffNo;
-
8/10/2019 5.0_SQL_PART_1
42/45
SQL - DROP VI EW
DROP VIEW ViewName [RESTRICT | CASCADE]
Causes definition of view to be deleted from
database. For example:
DROP VIEW Manager3Staff;
-
8/10/2019 5.0_SQL_PART_1
43/45
SQL - DROP VIEW
With CASCADE, all related dependent
objects are deleted; i.e. any views defined on
view being dropped.
With RESTRICT (default), if any other
objects depend for their existence on
continued existence of view being dropped,
command is rejected.
-
8/10/2019 5.0_SQL_PART_1
44/45
Advantages of Views
Data Independence
Currency
Improved Security Reduced Complexity
Convenience
Customization Data integrity
-
8/10/2019 5.0_SQL_PART_1
45/45
Disadvantages of Views
Update restriction
Structure restriction
Performance