Database Management System (DBMS) : SQL (Structure Query Language)
Database Management System (DBMS) : SQL (Structure Query Language)
Lecturer:
Kamruddin Md. Nur
Dept. of Computer Science
L-4:
Dr. Kamruddin Nur
Stamford
Associate University
Professor, Bangladesh
Computer Science
[email protected]
© Kamruddin Nur 2
Data Manipulation Language (DML)
“A DML is used to manipulate data.”
By using a DML we can do the followings:
© Kamruddin Nur 3
SELECT
SELECT to specify which columns to appear in the output
FROM to specify the table/s
WHERE to specify some condition to filter rows
GROUP BY to group rows with same column value
HAVING to filter groups having some condition
ORDER BY to specify the order of the output
© Kamruddin Nur 4
SELECT : Retrieve all columns
SELECT staffNo, fName, lName, position, sex, DOB, salary, branchNo
FROM Staff;
Or
SELECT *
FROM Staff;
© Kamruddin Nur 5
SELECT : Specific columns
SELECT staffNo, fName, lName, salary
FROM Staff;
© Kamruddin Nur 6
SELECT: DISTINCT
SELECT propertyNo
FROM Viewing;
© Kamruddin Nur 7
SELECT : Calculated Fields
SELECT staffNo, fName, lName, salary/12
FROM Staff;
© Kamruddin Nur 8
WHERE : Row Selection
WHERE clause is used for -
© Kamruddin Nur 9
WHERE : Row Selection
SELECT staffNo, fName, lName, salary
FROM Staff
WHERE salary > 10000;
© Kamruddin Nur 10
GROUP BY : Group Rows With Same Value
SELECT staffNo, fName, lName, salary
FROM Staff
GROUP BY salary;
© Kamruddin Nur 11
HAVING : Filter Groups Having Some Condition
SELECT staffNo, fName, lName, salary
FROM Staff
GROUP BY salary
HAVING salary < 25000;
© Kamruddin Nur 12
Aggregate Functions
COUNT - returns the no. of values in a specified column
SUM - returns the sum of values in a specified column
AVG - returns the average of the values in a specified column
MIN - returns the smallest value in a specified column
MAX - returns the largest value in a specified column
© Kamruddin Nur 13
COUNT
SELECT COUNT(staffNo)
FROM Staff;
© Kamruddin Nur 14
SUM
SELECT SUM(salary)
FROM Staff;
© Kamruddin Nur 15
AVG
SELECT AVG(salary)
FROM Staff;
© Kamruddin Nur 16
MIN
SELECT MIN(salary)
FROM Staff;
© Kamruddin Nur 17
MAX
SELECT MAX(salary)
FROM Staff;
© Kamruddin Nur 18
Subqueries
SELECT staffNo, fName, lName, position
FROM Staff
WHERE branchNo = (SELECT branchNo
FROM Branch
WHERE street = ‘163 Main St’);
© Kamruddin Nur 19
Nested Subqueries: Use of IN
SELECT propertyNo, street, city, postcode, type, rooms, rent
FROM PropertyForRent
WHERE staffNo IN (SELECT staffNo
FROM Staff
WHERE branchNo = (SELECT branchNo
FROM Branch
WHERE street = ‘163 Main St’));
© Kamruddin Nur 20
ANY and ALL
● The word ANY and ALL may be used in subqueries.
● If the subquery is empty, ALL condition returns true and the ANY
condition returns false.
© Kamruddin Nur 21
ANY/SOME
SELECT staffNo, fName, lName, position
FROM Staff
WHERE salary > SOME (SELECT salary
FROM Staff
WHERE branchNo = ‘B003’);
© Kamruddin Nur 22
ALL
SELECT staffNo, fName, lName, position
FROM Staff
WHERE salary > ALL (SELECT salary
FROM Staff
WHERE branchNo = ‘B003’);
© Kamruddin Nur 23
Join
SELECT c.clientNo, fName, lName, propertyNo, comment
FROM Client c, Viewing v
WHERE c.clientNo = v.clientNo;
© Kamruddin Nur 24
Join
© Kamruddin Nur 25
Left Outer Join
© Kamruddin Nur 26
Right Outer Join
© Kamruddin Nur 27
Full Outer Join
© Kamruddin Nur 28
EXISTS and NOT EXISTS
● EXISTS and NOT EXISTS are designed for subqueries.
● EXISTS produces true if and only if there exists at least one row the
result table returned by the subquery. It is false if the subquery
returns an empty result table
© Kamruddin Nur 29
EXISTS
SELECT staffNo, fName, lName, position
FROM Staff s
WHERE EXISTS (SELECT *
FROM Branch b
WHERE s.branchNo = b.branchNo AND
city = ‘London’);
© Kamruddin Nur 30
Database Updates
INSERT – adds rows of data to a table
UPDATE – modifies existing data in a table
DELETE – removes rows of data from a table
© Kamruddin Nur 31
INSERT
INTERT INTO TableName [(Column List)]
VALUES (Data Value List);
For example,
© Kamruddin Nur 32
UPDATE
UPDATE TableName
SET column1 = datavalue1, column2 = datavalue2, ...............
WHERE searchCondition;
For example,
UPDATE staff
SET salary = salary*1.1;
UPDATE staff
SET salary = salary*1.1
WHERE position = ‘Manager’;
© Kamruddin Nur 33
DELETE
DELETE FROM TableName
WHERE searchCondition;
For example,
© Kamruddin Nur 34
The ISO SQL Data Types
Data Type Declarations
boolean BOOLEAN
character CHAR
VARCHAR
bit BIT
BIT VARYING
© Kamruddin Nur 35
The ISO SQL Data Types cont.
Data Type Declarations
datetime DATE
TIME
TIMESTAMP
interval INTERVAL
© Kamruddin Nur 36
DOMAIN
gender CHAR NOT NULL CHECK (gender IN (‘M’, ‘F’))
or
© Kamruddin Nur 37
Primary Key
PRIMARY KEY(propertyNo)
© Kamruddin Nur 38
UNIQUE
To ensure uniqueness of alternate keys, we could use UNIQUE
-
© Kamruddin Nur 39
Foreign Key
FOREIGN KEY(branchNo) REFERENCES Branch
© Kamruddin Nur 40
ON DELETE
Options are -
CASCADE:
- Delete the row in parent table
- Delete the matching rows in child table
SET NULL:
- Delete the row in parent table
- Set foreign key values in the child table to NULL
SET DEFAULT:
- Delete the row from parent table
- Set default value for each matching value in the child table
NO ACTION:
- Reject the delete operation from the parent table
- This is default if ON DELETE rule is omitted.
© Kamruddin Nur 41
CREATE TABLE
CREATE TABLE TableName
{ (columnName dataType [NOT NULL] [UNIQUE]
[DEFAULT defaultOption] [CHECK (SearchCondition)] [,...]}
[ PRIMARY KEY(listOfColumns),]
{ [UNIQUE (listOfColumns),] [....] }
{ [ FOREIGN KEY (listOfForeignKeyColumns)
REFERENCES parentTableName [(listOfCandidateKeyColumns)],
[MATCH {PARTIAL | FULL}
[ON UPDATE referentialAction]
[ON DELETE referentialAction]] [,....]}
{[CHECK (SearchCondition)] [,....]})
© Kamruddin Nur 42
CREATE TABLE
CREATE TABLE Student(
studId INT NOT NULL
name VARCHAR(100) NOT NULL
addr VARCHAR(200)
PRIMARY KEY(studId));
© Kamruddin Nur 43
CREATE DOMAIN
CREATE DOMAIN city AS VARCHAR(25);
© Kamruddin Nur 44
ALTER TABLE
ALTER TABLE TableName
[ADD [COLUMN] columnName dataType [NOT NULL] [UNIQUE]
[DEFAULT defaultOption] [CHECK (SearchCondition)]]
[DROP [COLUMN] columnName [RESTRICT | CASCADE]]
ADD [CONSTRAINT [constraintName]] tableConstraintDefinition]
DROP CONSTRAINT ConstraintName [RESTRICT | CASCADE]]
[ALTER [COLUMN] SET DEFAULT defaultOption]
[ALTER [COLUMN] DROP DEFAULT]
© Kamruddin Nur 45
ALTER TABLE
ALTER TABLE Staff
ALTER position DROP DEFAULT
© Kamruddin Nur 46
DROP TABLE
DROP TABLE Staff;
RESTRICT:
The drop operation is rejected if there are any other objects that depend
for their existence upon the continued existence of the table to be
dropped.
CASCADE:
The DROP operation proceeds and SQL automatically drops all
dependent objects.
© Kamruddin Nur 47
VIEWS
● The dynamic result of one or more relational operations operating on
the base relations to produce another relation.
© Kamruddin Nur 48
CREATE VIEW
CREATE VIEW viewName [(newColumnName [,...])]
AS subselect [WITH [CASCADE | LOCAL ] CHECK OPTION]
© Kamruddin Nur 49
CREATE VIEW
CREATE VIEW Manager
AS SELECT * FROM staff WHERE position = ‘Manager’;
© Kamruddin Nur 50
Summary
© Kamruddin Nur 52