0% found this document useful (0 votes)
2 views

Database Management System (DBMS) : SQL (Structure Query Language)

Uploaded by

Tonmoy Biswas
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Database Management System (DBMS) : SQL (Structure Query Language)

Uploaded by

Tonmoy Biswas
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

Database Management System (DBMS)

Course Code: CSI 223


Semester: Summer '06

Lecturer:
Kamruddin Md. Nur
Dept. of Computer Science
L-4:
Dr. Kamruddin Nur
Stamford
Associate University
Professor, Bangladesh
Computer Science
[email protected]

SQL (Structure Query Language) Office:


Siddeswari
Block A
Room # 216

Ph: (02) 8355512-14 x-214


Cell: 0191 309 708
Email: [email protected]
Blogs: http://moonbd.blogspot.com
m
Lecture Content

● DML- Data Manipulation Language


● DDL - Data Definition Language

Reading: Chapter - 5&6 Text Book

© Kamruddin Nur 2
Data Manipulation Language (DML)
“A DML is used to manipulate data.”
By using a DML we can do the followings:

- Single Table Query


- Multiple Table Query
- Nested Query
- Aggregate Functions
- Database Updates

© 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;

SELECT DISTINCT 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 -

Comparison - to compare values


Range - to set a range
Set Membership - to test whether a value one of a set of values
Pattern Match - to test if a string matches a specified pattern
Null - to test a column has a null value

Comparison Operators: =, <, >, !=, <=, >=


Range Operators : AND, OR, BETWEEN, NOT BETWEEN
Set Membership : IN, NOT IN
Pattern Match : LIKE, NOT LIKE
Null : IS NULL, IS NOT NULL

© Kamruddin Nur 9
WHERE : Row Selection
SELECT staffNo, fName, lName, salary
FROM Staff
WHERE salary > 10000;

SELECT staffNo, fName, lName, salary


FROM Staff
WHERE salary BETWEEN 10000 AND 20000;

© 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 preceded by the keyword ANY, the condition will


be true if it is satisfied by any values produced by the subquery.

● If the subquery is preceded by the keyword ALL, the condition will be


true if it is satisfied by all values produced by the subquery.

● 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;

SELECT b.branchNo, b.city,s.staffNo, fName, lName, propertyNo


FROM Branch b, Staff s, PropertyForRent p
WHERE b.branchNo = s.branchNo AND s.staffNo = p.staffNo
ORDER BY b.branchNo, s.staffNo, propertyNo;

© Kamruddin Nur 24
Join

SELECT s.branchNo, s.staffNo, COUNT(*) AS Count


FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.branchNo, s.staffNo
ORDER BY s.branchNo, s.staffNo;

© Kamruddin Nur 25
Left Outer Join

SELECT b.*, p.*


FROM Branch1 b LEFT JOIN PropertyForRent1 p ON b.city = p.city;

© Kamruddin Nur 26
Right Outer Join

SELECT b.*, p.*


FROM Branch1 b RIGHT JOIN PropertyForRent1 p ON b.city = p.city;

© Kamruddin Nur 27
Full Outer Join

SELECT b.*, p.*


FROM Branch1 b FULL JOIN PropertyForRent1 p ON b.city = p.city;

© 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

● NOT EXISTS is the opposite of EXISTS.

© 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,

INSERT INTO staff


VALUES (‘SG16’, ‘Alan’, ‘Brown’, ‘Assistant’, ‘M’, DATE, ‘1979-01-15’,
‘8300’, ‘B003’);

INSERT INTO staff(staffNo, fName, lName, position, salary, branchNo)


VALUES (‘SG44’, ‘Anne’, ‘Jones’, ‘Assistant’, ‘8300’, ‘B003’);

© 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,

DELETE FROM viewing


WHERE propertyNo= ‘PG4’;

DELETE FROM viewing

© Kamruddin Nur 34
The ISO SQL Data Types
Data Type Declarations

boolean BOOLEAN

character CHAR
VARCHAR

bit BIT
BIT VARYING

exact numeric NUMERIC


DECIMAL
INTEGER
SMALLINT

© Kamruddin Nur 35
The ISO SQL Data Types cont.
Data Type Declarations

approximate numeric FLOAT


REAL
DOUBLE PRECISION

datetime DATE
TIME
TIMESTAMP

interval INTERVAL

large objects CHARACTER LARGE OBJECTS


BINARY LARGE OBJECTS

© Kamruddin Nur 36
DOMAIN
gender CHAR NOT NULL CHECK (gender IN (‘M’, ‘F’))

or

CREATE DOMAIN gender AS CHAR


DEFAULT ‘M’
CHECK (VALUE IN (‘M’, ‘F’));

© Kamruddin Nur 37
Primary Key
PRIMARY KEY(propertyNo)

PRIMARY KEY(clientNo, propertyNo)

© Kamruddin Nur 38
UNIQUE
To ensure uniqueness of alternate keys, we could use UNIQUE
-

clientNo VARCHAR(5) NOT NULL


propertyNo VARCHAR(5) NOT NULL
UNIQUE(clientNo,propertyNo)

© Kamruddin Nur 39
Foreign Key
FOREIGN KEY(branchNo) REFERENCES Branch

FOREIGN KEY(staffNo) REFERENCES Staff ON DELETE SET NULL

FOREIGN KEY(ownerNo) REFERENCES PrivateOwner


ON UPDATE CASCADE

© 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);

CREATE DOMAIN staffNo AS VARCHAR(5)


CHECK (VALUE IN (SELECT staffNo FROM Staff));

© 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

ALTER TABLE Staff


ALTER gender SET DEFAULT ‘F’;

© Kamruddin Nur 46
DROP TABLE
DROP TABLE Staff;

DROP TABLE Staff [RESTRICT | CASCADE]

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.

● A view is a virtual relation that does not necessarily exist in the


database but can be produced upon request by a particular user, at
the time of request.

© 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’;

CREATE VIEW Staff3


AS SELECT staffNo, fName, lName, position, gender
FROM Manager;

© Kamruddin Nur 50
Summary

From this lecture we have learned the details of


 Data Manipulation Language (DML)
 Data Definition Language (DDL)

© Kamruddin Nur 52

You might also like