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

Topic 4

poli

Uploaded by

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

Topic 4

poli

Uploaded by

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

DFC20123

DATABASE DESIGN
TOPIC 4.0
STRUCTURED QUERY LANGUAGE
What will you
learn

01
Apply SQL command to a database
01 Apply SQL commands to a database
RECAP

DATABASE
What is DATABASE?
• Collection of related data
• Managed using Database Management System
(DBMS)
• SQL SERVER
• ORACLE
Manage here means there must
be a way for us to communicate
with the database

This is when SQL play its part


Structured Query
Language

What is SQL?
Language used to
communicate with a
relational DBMS
Execute SQL can execute queries against a database

Retrieve SQL can retrieve data from a database

Insert SQL can insert records in a database

What can SQL


do? Update SQL can update records in a database

Delete SQL can delete records from a database

SQL can create new databases


SQL can create new tables in a database
Create SQL can create stored procedures in a database
SQL can create views in a database

Set SQL can set permissions on tables, procedures, and views


SQL – CATEGORIES

SQL

DQL DML DDL DTL DCL

INSERT CREATE COMMIT GRANT


SELECT UPDATE ALTER ROLLBACK REVOKE
DELETE DROP
Important syntax to help navigation in SQL
• To show a list of database exist in your system
• show databases;
• To refer to the specific database
• use <database_name>;
• To show a list of available table exist in the database
• show tables;
• To show the structure of the table
• desc <table_name>;
SQL – Data Definition Language (DDL)

SQL

DQL DML DDL TCL DCL

INSERT CREATE COMMIT GRANT


SELECT UPDATE ALTER ROLLBACK REVOKE
DELETE DROP
my_example

department
student
ID Name Add Phone Age
Syntax :
SQL – DDL –
CREATE CREATE DATABASE <database_name>;

CREATE DATABASE PUO;

Upon Success
PUO
Database created.
SQL – DDL Data type in SQL

– CREATE
Syntax :

CREATE TABLE <table_name>


( Column1 datatype ,
Column2 datatype,
Column 3 datatype );

CREATE TABLE user


( Fname varchar(50) ,
Lname varchar(50),
age int );
Syntax :
CREATE TABLE <table_name>
SQL – DDL – ( Column1 datatype
CREATE Column2 datatype
Column 3 datatype );

CREATE TABLE STAFF


( Staff_ID VARCHAR(7) NOT NULL UNIQUE,
Staff_Name VARCHAR(100) ,
Salary numeric(6,2),
Address VARCHAR(200),
STAFF PRIMARY KEY (Staff_ID));
PUO
**Primary Key enforces uniqueness
Upon Success of the column on which they are
defined

Table created
SQL – DDL CREATE TABLE STAFF
( Staff_ID VARCHAR(7) NOT NULL UNIQUE,

– CREATE Staff_Name VARCHAR(100) ,


Salary numeric(6,2),
Address VARCHAR(200),
PRIMARY KEY (Staff_ID));

Table STAFF
Staff_ID Staff_Name Salary Address
STAFF PUO
Syntax :
ALTER TABLE <table_name>
SQL – DDL – ADD (Column datatype) [, Column
ALTER datatype]…;

ALTER TABLE STAFF


ADD Test numeric (5,2);

Upon Success

STAFF
Table altered
PUO
SQL – DDL
– ALTER ALTER TABLE STAFF
ADD Test numeric (5,2);

Table STAFF

STAFF PUO Staff_ID Staff_Name Salary Address Test

15.21
Syntax :
ALTER TABLE <table_name>
SQL – DDL – MODIFY (Column datatype) [, Column
ALTER datatype]…;

ALTER TABLE STAFF


MODIFY Test numeric (5,1);

Upon Success

STAFF
Table altered
PUO
SQL – DDL
– ALTER ALTER TABLE STAFF
MODIFY Test numeric (5,1);

Table STAFF

STAFF PUO Staff_ID Staff_Name Salary Address Test

15.2
Syntax :
ALTER TABLE <table_name>
SQL – DDL – DROP (Column) ;
ALTER

ALTER TABLE STAFF


DROP Test;

Upon Success

STAFF
Table altered
PUO
SQL – DDL
– ALTER ALTER TABLE STAFF
DROP Test;

Table STAFF

STAFF PUO Staff_ID Staff_Name Salary Address


Syntax :
DROP TABLE <table_name>;
SQL – DDL –
DROP

DROP TABLE STAFF;

Upon Success

STAFF
Table dropped
PUO
SQL – FOREIGN KEY
CREATE TABLE DEPARTMENTS
(Dept_Id Varchar(5) Not Null Unique,
Dept_Name Varchar(30),
Primary Key(Dept_Id));

CREATE TABLE STAFFS


(Staff_ID VARCHAR(7) NOT NULL UNIQUE,
Staff_Name VARCHAR(100) , Salary
numeric(6,2), Address VARCHAR(200),
Dept_Id Varchar(5),
PRIMARY KEY (Staff_ID),
FOREIGN KEY (Dept_Id) REFERENCES DEPARTMENTS(Dept_Id));
Q & A SESSION

Practice Exercise SQL - DDL


SQL – Data Manipulation Language (DML)

SQL

DQL DML DDL TCL DCL

INSERT CREATE COMMIT GRANT


SELECT UPDATE ALTER ROLLBACK REVOKE
DELETE DROP
Syntax :
INSERT INTO <table_name> [(Column [,
SQL – DML – Column…])] VALUES (Value [, Value…]);
INSERT **Note: This will insert only one
row.

INSERT INTO STAFF (Staff_Id, Staff_Name,


Salary, Address) VALUES (‘1’, ‘ ALEX’, 1000.10,
‘SELANGOR’);

STAFF PUO

Upon Success

1 row created
SQL – DML
– INSERT INSERT INTO STAFF (Staff_Id, Staff_Name, Salary,
Address) VALUES (‘1’, ‘ ALEX’, 1000.10, ‘SELANGOR’);

Table STAFF

STAFF PUO Staff_ID Staff_Name Salary Address

1 ALEX 1000.10 SELANGOR


SQL – DML
– INSERT INSERT INTO STAFF (Staff_Id, Staff_Name, Salary,
Address) VALUES (‘2’, ‘ AHMAD’, 2000.20, NULL);

Table STAFF

STAFF PUO Staff_ID Staff_Name Salary Address

1 ALEX 1000.10 SELANGOR


2 AHMAD 2000.20
SQL – DML
– INSERT INSERT INTO STAFF The column/attribute are NOT STATED here

VALUES (‘3’, ‘ RAJU’, 3000.30, ‘PERAK’);

Table STAFF

STAFF PUO Staff_ID Staff_Name Salary Address

1 ALEX 1000.10 SELANGOR


2 AHMAD 2000.20
3 RAJU 3000.30 PERAK
SQL – DML Insert one new data, using any technique explain
before for below record:

– INSERT Id : 4
Name : ALI
salary : unknown
Address : JOHOR

Table STAFF
STAFF PUO Staff_ID Staff_Name Salary Address

1 ALEX 1000.10 SELANGOR


2 AHMAD 2000.20
3 RAJU 3000.30 PERAK
SQL – DDL CREATE TABLE DEPARTMENTS
(Dept_Id Varchar(5) Not Null Unique,
Dept_Name Varchar(30),
Primary Key(Dept_Id));

Table DEPARTMENTS

STAFF PUO Dept_ID Dept_Name

DEPARTMENT
SQL – DML
– INSERT INSERT INTO DEPARTMENT
VALUES (‘IT’, ‘ INFORMATION TECHNOLOGY’);

Table DEPARTMENT

STAFF PUO Dept_ID Dept_Name

DEPARTMENT IT INFORMATION TECHNOLOGY


IE ELECTRICAL
IM MECHANICAL
SQL – Data Manipulation Language (DML)

SQL

DQL DML DDL TCL DCL

INSERT CREATE COMMIT GRANT


SELECT UPDATE ALTER ROLLBACK REVOKE
DELETE DROP
Syntax :
UPDATE <table_name>
SQL – DML – SET Column = Value [, Column = Value,…]
UPDATE [WHERE condition]
**Note: Update more than one row at
a time, if required

UPDATE STAFF
SET Address = ‘MELAKA’
WHERE Staff_Id = ‘2’;
STAFF PUO

Upon Success

1 row updated
SQL – DML UPDATE STAFF
– UPDATE SET Address = ‘MELAKA’
WHERE Staff_Id = ‘2’;

Table STAFF

STAFF Staff_ID Staff_Name Salary Address


PUO

1 ALEX 1000.10 SELANGOR


2 AHMAD 2000.20 MELAKA
3 RAJU 3000.30 PERAK
Upon Success 4 ALI PERAK

1 row updated
SQL – DML
– UPDATE UPDATE STAFF
SET Address = ‘JOHOR’;

Table STAFF

STAFF Staff_ID Staff_Name Salary Address


PUO

1 ALEX 1000.10 JOHOR


2 AHMAD 2000.20 JOHOR
3 RAJU 3000.30 JOHOR
Upon Success 4 ALI JOHOR

4 rows updated
SQL – DML UPDATE STAFF
– UPDATE SET Address = ‘SELANGOR’, Salary = ’4000’
WHERE Staff_ID = ‘1’;

Table STAFF

STAFF Staff_ID Staff_Name Salary Address


PUO

1 ALEX 4000.00 SELANGOR


2 AHMAD 2000.20 JOHOR
3 RAJU 3000.30 JOHOR
4 ALI JOHOR
Syntax :
DELETE [FROM] table
SQL – DML – [WHERE condition];
DELETE
**If no rows are deleted, a message “0 rows
deleted” is returned.

DELETE FROM STAFF


WHERE Staff_ID = ‘2’;

STAFF PUO

Upon Success

1 row deleted
SQL – DML
– DELETE DELETE FROM STAFF
WHERE Staff_ID = ‘2’;

Table STAFF

STAFF PUO Staff_ID Staff_Name Salary Address

1 ALEX 4000.00 SELANGOR


3 RAJU 3000.30 JOHOR
4 ALI JOHOR
SQL – DML
– DELETE DELETE FROM STAFF;

Table STAFF

STAFF PUO Staff_ID Staff_Name Salary Address

Upon Success

3 rows deleted
Q & A SESSION
SQL – Data Query Language (DQL)

SQL

DQL DML DDL TCL DCL

INSERT CREATE COMMIT GRANT


SELECT UPDATE ALTER ROLLBACK REVOKE
DELETE DROP
RECAP

RELATIONAL ALGEBRA OPERATORS

Projection (π): Deletes unwanted columns from relation


Before we proceed.. INSERT INTO <table_name> [(Column [, Column…])]
VALUES (Value [, Value…]);

• We need to insert
the data again to the
table.
• Base on the table
shown, use your Staff_ID Staff_Name Salary Address
DML syntax to 1 ALEX 4000.00 SELANGOR
update the existing 2 AHMAD 2000.20 JOHOR
table. 3 RAJU 3000.30 JOHOR
4 ALI PERAK
SQL – DQL – • The SELECT statement is used to
SELECT select data from a database.
• The data returned is stored in a
Capabilities result table, called the result-set
Projection – Extract SYNTAX:
Columns Needed
SELECT column1, column2, ...
FROM table_name;

SELECT * FROM table_name;

STAFF PUO
SQL – SELECT SELECT *
FROM STAFF;

• Selecting All
Columns

Staff_ID Staff_Name Salary Address


1 ALEX 4000.00 SELANGOR
2 AHMAD 2000.20 JOHOR
Upon Success 3 RAJU 3000.30 JOHOR
4 rows selected 4 ALI PERAK
SQL – SELECT SELECT Staff_ID, Staff_Name, Address
FROM STAFF;

• Selecting Specific
Columns

Staff_ID Staff_Name Address


1 ALEX SELANGOR
2 AHMAD JOHOR
Upon Success 3 RAJU JOHOR
4 rows selected 4 ALI PERAK
SQL – SELECT SELECT Staff_ID as ID, Staff_Name as Name,
Address FROM STAFF;

• Selecting Specific
Columns
• Using Aliases

ID Name Address
1 ALEX SELANGOR
2 AHMAD JOHOR
Upon Success 3 RAJU JOHOR
4 rows selected 4 ALI PERAK
SQL – SELECT SELECT Staff_ID, Staff_Name, Salary, Salary + 200
FROM STAFF;

• Selecting Specific
Columns
• Using Aliases
• Using Arithmetic
Operators (*, / , +, -) Staff_ID Staff_Name Salary Salary + 200
1 ALEX 4000.00 4200.00
2 AHMAD 2000.20 2200.20
Upon Success 3 RAJU 3000.30 3200.30
4 rows selected 4 ALI
SELECT Staff_ID, Staff_Name, Salary, Salary + 200
SQL – SELECT as Salary_Bonus,
0.1 * Salary + 200 as Comm
FROM STAFF;
• Selecting Specific
Columns
• Using Aliases
• Using Arithmetic
Operators (*, / , +, -) Staff_ID Staff_Name Salary Salary_Bonus Comm
• Operator 1 ALEX 4000.00 4200.00 600.00
Precedence 2 AHMAD 2000.20 2200.20 400.02
Upon Success 3 RAJU 3000.30 3200.30 500.03
4 rows selected 4 ALI
SELECT Staff_ID, Staff_Name, Salary,
SQL – SELECT
Salary + 200 as Salary_Bonus,
0.1 * (Salary + 200) as Comm FROM STAFF;
• Selecting Specific
Columns
• Using Aliases
• Using Arithmetic
Operators (*, / , +, -) Staff_ID Staff_Name Salary Salary_Bonus Comm
• Operator 1 ALEX 4000.00 4200.00 420.0
Precedence 2 AHMAD 2000.20 2200.20 220.2
Upon Success 3 RAJU 3000.30 3200.30 320.3
4 rows selected 4 ALI
# Operators Precedence
1 () high

2 /, *

3 +,-
low
SELECT Staff_ID || ‘ ’ || Staff_Name as Staff,
Salary FROM STAFF;
SQL – SELECT
SELECT CONCAT(Staff_ID , ' ', Staff_Name)as Staff,
• Selecting Specific Columns Salary FROM staff;
• Using Aliases
• Using Arithmetic Operators
(*, / , +, -)
• Operator Precedence
• Using Concatenation
• Using Literal Character Staff Salary
String
1 ALEX 4000
2 AHMAD 2000.20
Upon Success 3 RAJU 3000.30
4 rows selected 4 ALI
Assume below are the content of data in table STAFF.
And we are trying to access the Department ID to
SQL – SELECT know how many types of are exist in this table.

• Duplicate Rows Solution anyone?

Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
SELECT Dept_ID 1 ALEX 4000 SELANGOR IT
FROM STAFF;
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT
SQL – SELECT
SELECT DISTINCT Dept_ID FROM STAFF;

• Selecting Specific Columns


• Eliminate Duplicate Rows

Dept_ID
Upon Success IT
2 rows selected IE
Q & A SESSION
RECAP

RELATIONAL ALGEBRA OPERATORS

Selection (σ): Selects a subset of rows from relation.


SQL – DQL – • Limiting the rows selected using
SELECT where clause
Capabilities

Selection – Extract
Rows Or Records SYNTAX:
Needed
SELECT *|{DISTINCT column|expression
[alias]…}
FROM table
[WHERE conditions(s)};

STAFF PUO
SQL – SELECT SELECT * FROM STAFF
WHERE Staff_ID = ‘2’;
• Using the where clause

Upon Success Staff_ID Staff_Name Salary Address


1 row selected 2 AHMAD 2000.20 JOHOR
SQL – SELECT SELECT * FROM STAFF
WHERE Staff_Name = ‘AHMAD’;
• Using the where clause
• Using character strings and
date

Upon Success Staff_ID Staff_Name Salary Address


1 row selected 2 AHMAD 2000.20 JOHOR
SQL – SELECT SELECT * FROM STAFF
WHERE Salary < 3000;
• Using the where clause
• Using Comparison Conditions
(= , > , >= , < , <= , <>)

Upon Success Staff_ID Staff_Name Salary Address


1 row selected 2 AHMAD 2000.20 JOHOR
SELECT * FROM STAFF
SQL – SELECT WHERE Salary BETWEEN 1000 AND 4000;

• Using the where clause (SALARY>1000) && (SALARY<4000)


• Using Between Condition

Staff_ID Staff_Name Salary Address


1 ALEX 4000 SELANGOR
Upon Success 2 AHMAD 2000.20 JOHOR
3 rows selected 3 RAJU 3000.30 JOHOR
SQL – SELECT SELECT * FROM STAFF
WHERE Staff_ID IN (‘1’ , ‘4’);
• Using the where clause
• Using IN Condition

Staff_ID Staff_Name Salary Address


Upon Success 1 ALEX 4000 SELANGOR
2 rows selected 4 ALI PERAK
SQL – SELECT SELECT * FROM STAFF
WHERE Staff_Name LIKE ‘AL%’;
• Using the where clause
• Using LIKE Condition

Staff_ID Staff_Name Salary Address


Upon Success 1 ALEX 4000 SELANGOR
2 rows selected 4 ALI PERAK
SQL – SELECT SELECT * FROM STAFF
WHERE Staff_Name LIKE ‘%X’;
• Using the where clause
• Using LIKE Condition

Upon Success Staff_ID Staff_Name Salary Address


1 row selected 1 ALEX 4000 SELANGOR
SQL – SELECT SELECT * FROM STAFF
WHERE Salary IS NULL;
• Using the where clause
• Using NULL Condition

Upon Success Staff_ID Staff_Name Salary Address


1 row selected 4 ALI PERAK
SELECT * FROM STAFF
SQL – SELECT
WHERE Salary >= 1000
OR Staff_Name LIKE ‘A%’;
• Using the where clause
• Using OR operator
A OR B R
1 1 1
1 1 1
1 0 1 Staff_ID Staff_Name Salary Address
0 1 1 1 ALEX 4000.00 SELANGOR
2 AHMAD 2000.20 JOHOR
Upon Success 3 RAJU 3000.30 JOHOR
4 rows selected 4 ALI PERAK
SELECT * FROM STAFF
SQL – SELECT
WHERE Salary >= 1000
AND Staff_Name LIKE ‘A%’;
• Using the where clause
• Using OR operator
A AND B R
1 1 1
1 1 1
1 0 0 Staff_ID Staff_Name Salary Address
0 1 0 1 ALEX 4000.00 SELANGOR
2 AHMAD 2000.20 JOHOR
Upon Success 3 RAJU 3000.30 JOHOR
4 rows selected 4 ALI PERAK
SQL – SELECT SELECT * FROM STAFF
WHERE Address NOT IN (‘JOHOR’);
• Using the where clause
• Using NOT operator

Staff_ID Staff_Name Salary Address


Upon Success 1 ALEX 4000.00 SELANGOR
2 rows selected 4 ALI PERAK
SQL – SELECT
RULES OF PRECEDENCE
ORDER EVALUATED OPERATOR
1 Arithmetic Operators
2 Concatenation Operator
3 Comparison Conditions
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 NOT logical condition
7 AND logical condition
8 OR logical condition
Rule of precedence can be override by using parentheses
SELECT * FROM STAFF
WHERE Address = ‘PERAK’
OR Address = ‘JOHOR’
SQL – SELECT AND Salary >= 2000;

• Using the where clause


• Using Rules Of
Precedence
Table
STAFF

Staff_ID Staff_Name Salary Address


2 AHMAD 2000.20 JOHOR
Upon Success 3 RAJU 3000.30 JOHOR
3 rows selected 4 ALI PERAK
SELECT * FROM STAFF
WHERE (Address = ‘PERAK’
OR Address = ‘JOHOR’)
SQL – SELECT AND Salary >= 2000;

• Using the where clause


• Using Rules Of
Precedence
Table
STAFF

Staff_ID Staff_Name Salary Address


Upon Success 2 AHMAD 2000.20 JOHOR
2 rows selected 3 RAJU 3000.30 JOHOR
SELECT * FROM STAFF
SQL – SELECT ORDER BY Salary ASC; DEFAULTASC

• Using The Sorting Order


By clause
• Ascending (ASC),
Descending (DESC) Table
STAFF

Staff_ID Staff_Name Salary Address


2 AHMAD 2000.20 JOHOR
Upon Success 3 RAJU 3000.30 JOHOR
4 rows selected 1 ALEX 4000 SELANGOR
4 ALI PERAK
SELECT * FROM STAFF
SQL – SELECT ORDER BY Address ASC, Salary DESC;

• Using The Sorting Order


By clause
• Ascending (ASC),
Descending (DESC) Table
STAFF

Staff_ID Staff_Name Salary Address


3 RAJU 3000.30 JOHOR
Upon Success 2 AHMAD 2000.20 JOHOR
4 rows selected 4 ALI PERAK
1 ALEX 4000.00 SELANGOR
Q & A SESSION

LKAT – Part 1, Part 2


RECAP EXERCISE
A DEPARTMENTS
Base on the knowledge
Dept_ID Dept_Name expose to you in previous
IT INFORMATION TECHNOLOGY lesson, change the contents
IE ELECTRICAL from (A) to (B)
IM MECHANICAL

B DEPARTMENTS
Dept_ID Dept_Name
IT INFORMATION TECHNOLOGY
IE ENGINEERING
IM MECHANICAL
AD ADMINISTRATION
SQL – Data Query Language (DQL)

SQL

DQL DML DDL TCL DCL

INSERT CREATE COMMIT GRANT


SELECT UPDATE ALTER ROLLBACK REVOKE
DELETE DROP
SQL – DQL –
SELECT

Capabilities SYNTAX
SELECT table1.column, table2.column FROM table1
Joining – Join Data From [CROSS JOIN table2] |
Different Tables By
Creating Link Between [NATURAL JOIN table2] |
Them [JOIN table2 USING (column_name)] |
[JOIN table2
ON (table1.column_name = table2.column_name)] |
[LEFT | RIGHT | FULL OUTER JOIN table2
DEPARTMENT ON (table1.column_name = table2.column_name)];

PUO
STAFF
SQL – SELECT – JOINING TABLES

STAFF DEPARTMENTS
Staff_ID Dept_ID Dept_ID Dept_Name
1 IT IT INFORMATION TECHNOLOGY
2 IT IE ENGINEERING
3 IE AD ADMINISTRATION
4 IT IM MECHANICAL
5
… …
SQL – SELECT – JOINING TABLES
Staff_ID

M 1 Dept_ID
Staff_Name
STAFF belong DEPARTMENTS
Address Dept_Name

Salary Dept_ID
STAFF(Staff_ID, Staff_Name, Address, Salary, Dept_ID);
DEPARTMENTS (Dept_ID, Dept_Name)

STAFF DEPARTMENTS
Staff_ID Staff_Name Salary Address Dept_ID Dept_ID Dept_Name
1 ALEX 4000.00 SELANGOR IT IT INFORMATION TECHNOLOGY
2 AHMAD 2000.20 JOHOR IT IE ENGINEERING
3 RAJU 3000.30 JOHOR IE AD ADMINISTRATION
4 ALI PERAK IT IM MECHANICAL
5
… …
SQL – SELECT – CROSS JOIN
Produces Cross Products Of Two Tables

SELECT * FROM table1 Staff_Name Dept_Name


CROSS JOIN table2; ALEX INFORMATION TECHNOLOGY
AHMAD INFORMATION TECHNOLOGY
RAJU INFORMATION TECHNOLOGY
SELECT Staff_Name, Dept_Name
FROM Staff ALI INFORMATION TECHNOLOGY
CROSS JOIN Departments; ALEX ENGINEERING
AHMAD ENGINEERING
RAJU ENGINEERING
**Same as cartesian products 4*3
ALI ENGINEERING
SELECT ALEX ADMINISTATION
staff.staff_Name,departments.Dept_Name
FROM Staff
… …
CROSS JOIN Departments; … …
RECAP : OPERATORS FOR RELATIONAL DATABASE
OPERATORS FOR RELATIONAL DATABASE

CROSS PRODUCT (×)

R S RxS
A B B C D A R.B S.B C D
1 2 2 5 6 1 2 2 5 6
x
3 4 4 7 8 1 2 4 7 8
9 10 11 1 2 9 10 11
3 4 2 5 6
3 4 4 7 8
3 4 9 10 11
RECAP : OPERATORS FOR RELATIONAL DATABASE
OPERATORS FOR RELATIONAL DATABASE
S1
sid sname rating age
JOIN (Natural Join) 22 Dustin 7 45.0
31 Lubber 8 55.5
❑ A further special case of the join is an equi join in which 58 Rusty 10 35.0
equalities are specified on all fields having the same name in
S2
S1 and S2
sid bid day
22 101 10/10/96
❑ The result is guaranteed to have no two fields with the same 58 103 11/12/96
name. Duplicate columns are removed. NULL 105 05/01/97

❑ Example : S1⋈sidS2 = S1⋈S1.sid = S2.sid S2


Eliminate the
sid sname rating age bid day
❑ Output : column with same
22 Dustin 7 45.0 101 10/10/96 record (presented
58 Rusty 10 35.0 103 11/12/96 into only one
column)
SQL – SELECT – NATURAL JOIN
Eliminate the column with same record (presented into only
one column)

Staff_Name Dept_ID Dept_Name


SELECT Staff_Name, Dept_ID,Dept_Name ALEX IT INFORMATION TECHNOLOGY
FROM Staff AHMAD IT INFORMATION TECHNOLOGY
NATURAL JOIN Departments; RAJU IE ENGINEERING
ALI IT INFORMATION TECHNOLOGY

**Join based on the column which is of same


name in both table. In this case, Dept_ID.
SQL – SELECT – NATURAL JOIN
Eliminate the column with same record (presented into only
one column)

Staff_Name Dept_ID Dept_Name


SELECT s.Staff_Name, s.Dept_ID, d.Dept_Name
ALEX IT INFORMATION TECHNOLOGY
FROM Staff s AHMAD IT INFORMATION TECHNOLOGY
NATURAL JOIN Departments d; RAJU IE ENGINEERING
ALI IT INFORMATION TECHNOLOGY

**Join based on the column which is of same


name in both table. In this case, Dept_ID.
SQL – SELECT – USING clause
Modification To Natural Joins

Staff_Name Dept_Name
ALEX INFORMATION TECHNOLOGY
SELECT s.Staff_Name, d.Dept_Name
FROM Staff s JOIN Departments d AHMAD INFORMATION TECHNOLOGY
USING (Dept_ID); RAJU ENGINEERING
ALI INFORMATION TECHNOLOGY
SQL – SELECT – ON clause

Staff_Name Dept_ID Dept_Name


SELECT s.Staff_Name, s.Dept_Id, ALEX IT INFORMATION TECHNOLOGY
d.Dept_Name
AHMAD IT INFORMATION TECHNOLOGY
FROM Staff s JOIN Departments d
RAJU IE ENGINEERING
ON (s.Dept_Id = d.Dept_Id);
ALI IT INFORMATION TECHNOLOGY
RECAP : OPERATORS FOR RELATIONAL DATABASE
OPERATORS FOR RELATIONAL DATABASE

JOIN (Outer Join)


There are three forms of the outer join, depending on which data is to be kept.
➢ LEFT OUTER JOIN
• Keep data from the left-hand table and if there are no columns matching in the right
table, it returns NULL values
➢ RIGHT OUTER JOIN
• Keep data from the right-hand table and if there are no columns matching in the left
table, it returns NULL values
➢ FULL OUTER JOIN
• Keep data from both tables and it returns row from either table when the conditions
are met and returns NULL value when there is no match.
SQL – SELECT – LEFT OUTER JOIN
RETRIEVES ALL DATA ON THE LEFT TABLE, EVEN IF THERE ARE NO
MATCH IN THE RIGHT TABLE

SELECT s.Staff_Namr, s.Dept_Id,


d.Dept_Name FROM Staffs s
LEFT OUTER JOIN Departments d
ON (s.Dept_Id = d.Dept_Id);

Staff_Name Dept_ID Dept_Name


ALEX IT INFORMATION TECHNOLOGY
AHMAD IT INFORMATION TECHNOLOGY
ALI IT INFORMATION TECHNOLOGY
RAJU IE ENGINEERING
SQL – SELECT – RIGHT OUTER JOIN
RETRIEVES ALL DATA ON THE RIGHT TABLE, EVEN IF THERE ARE NO
MATCH IN THE LEFT TABLE

SELECT s.Staff_Name, s.Dept_Id, d.Dept_Name


FROM Staff s
RIGHT OUTER JOIN Departments d
ON (s.Dept_Id = d.Dept_Id);

Staff_Name Dept_ID Dept_Name


ALEX IT INFORMATION TECHNOLOGY
AHMAD IT INFORMATION TECHNOLOGY
RAJU IE ENGINEERING
ALI IT INFORMATION TECHNOLOGY
ADMINISTRATION
SQL – SELECT – FULL OUTER JOIN
RETRIEVES ALL DATA ON THE RIGHT TABLE, EVEN IF THERE ARE NO
MATCH IN THE LEFT TABLE AND VICE VERSA!

SELECT s.Staff_Namr, s.Dept_Id, d.Dept_Name


FROM Staffs s
FULL OUTER JOIN Departments d
ON (s.Dept_Id = d.Dept_Id);

Staff_Name Dept_ID Dept_Name


ALEX IT INFORMATION TECHNOLOGY
AHMAD IT INFORMATION TECHNOLOGY
RAJU IE ENGINEERING
ALI IT INFORMATION TECHNOLOGY
ABU ADMINISTRATION
MECHANICAL
SQL – SELECT – FULL OUTER JOIN
RETRIEVES ALL DATA ON THE RIGHT TABLE, EVEN IF THERE ARE NO
MATCH IN THE LEFT TABLE AND VICE VERSA!

SELECT s.Staff_Name, s.Dept_ID, d.Dept_Name


FROM Staff s
LEFT JOIN DEPARTMENTS d
ON s.Dept_ID = D.Dept_ID
UNION
SELECT s.Staff_Name, s.Dept_ID, d.Dept_Name
FROM Staff s
RIGHT JOIN DEPARTMENTS d
ON s.Dept_ID = D.Dept_ID
Q & A SESSION
SQL – DQL –
SELECT

Capabilities SYNTAX
SELECT [column,] group function (column), …
Joining – Join Data From FROM table
Different Tables By
[WHERE condition]
Creating Link Between
Them [GROUP BY column]
[ORDER BY column];

DEPARTMENT
Table STAFF
PUO
Staff_ID Staff_Name Salary Address Dept_ID
STAFF 1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT
SELECT AVG(Salary), MAX(Salary), MIN(Salary), SUM(Salary)
SQL – SELECT – FROM STAFF
WHERE ADDRESS = ‘JOHOR’;
GROUP FUNCTION
• AVG and SUM - Can be
used for numeric data Table STAFF
• MAX and MIN - Can be Staff_ID Staff_Name Salary Address Dept_ID
used for any data type 1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

AVG(Salary) MAX(Salary) MIN(Salary) SUM(Salary)


2500.25 3000.30 2000.20 5000.50
SELECT MIN(Staff_Name), MAX(Staff_Name)
SQL – SELECT – FROM STAFF;
GROUP FUNCTION
• MAX and MIN - Can be
used for any data type Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

MIN(Staff_Name) MAX(Staff_Name)
ALI AHMAD
SELECT COUNT(Staff_ID)
SQL – SELECT – FROM STAFF;
GROUP FUNCTION
• COUNT(*) returns the
number of rows in a table Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

COUNT(Staff_ID)
4
SELECT COUNT(Dept_ID)
FROM STAFF;
A
SQL – SELECT –
GROUP FUNCTION SELECT COUNT(DISTINCT Dept_ID) B
FROM STAFF;
• COUNT(*) returns the
number of rows in a table Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

COUNT(Dept_ID) COUNT(Dept_ID)
4 2
Outcome A Outcome B
SELECT AVG(Salary)
SQL – SELECT – FROM STAFF;
GROUP FUNCTION
• Ignores Null Value
Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

AVG(Salary)
3000.17
**Average is divided to 3 staff only – with valid salary value
SELECT AVG(NVL(Salary,0) )
SQL – SELECT – FROM STAFF;
GROUP FUNCTION
• Forces Group Function To
Include Null Values Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

AVG(NVL(Salary,0))
2250.13
**Average is divided to 4 staff including the one with salary null
SELECT DEPT_ID, AVG(NVL(Salary,0))
SQL – SELECT – GROUP FROM STAFF
FUNCTION(GROUP THE GROUP BY DEPT_ID;
DATA)
• For Example, Average
Salary Of Staff For Each Table STAFF
Department Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

Dept_ID AVG(NVL(Salary,0))
IT 3000.10
IE 3000.30
SELECT AVG(NVL(Salary,0))
SQL – SELECT – GROUP FROM STAFF
FUNCTION(GROUP THE GROUP BY DEPT_ID;
DATA)
• For Example, Average
Salary Of Staff For Each Table STAFF
Department Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

AVG(NVL(Salary,0))
3000.10
3000.30
SELECT DEPT_ID, AVG(NVL(Salary,0))
SQL – SELECT – GROUP FROM STAFF;
FUNCTION(GROUP THE GROUP BY DEPT_ID;
DATA)
• For Example, Average
Salary Of Staff For Each Table STAFF
Department Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT
** If the column is in select list, it
must be stated in the group by
AVG(NVL(Salary,0))
ERROR!!!
3000.10 Dept_ID is not a single group
3000.30 function
SELECT ADDRESS, DEPT_ID, AVG(NVL(Salary,0))
SQL – SELECT – GROUP FROM STAFF
FUNCTION(GROUP GROUP BY ADDRESS, DEPT_ID;
MULTIPLE COLUMN)
• For Example, Average
Salary Of Staff For Each Table STAFF
Address, Department Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

ADDRESS Dept_ID AVG(NVL(Salary,0))


SELANGOR IT 4000
JOHOR IT 2000.20
JOHOR IE 3000.30
SQL – SELECT – GROUP SYNTAX
FUNCTION(LIMITING/EXCL SELECT [column,] group function (column), …
UDING GROUP RESULTS) FROM table
[WHERE condition]
[GROUP BY column]
[HAVING group condition]
[ORDER BY column];
SELECT DEPT_ID, SUM(NVL(Salary,0))
SQL – SELECT – GROUP FROM STAFF
FUNCTION(LIMITING/EXCL GROUP BY DEPT_ID
UDING GROUP RESULTS) HAVING SUM(NVL(Salary,0)) > 4000;
• For Example, Sum Of
Salary For Each Dept Table STAFF
Which Is More Than 4000. Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

Dept_ID SUM(NVL(Salary,0))
IT 6000.20

**Sum from the IE department is not shown because it is less than 4000
SELECT MAX(AVG(NVL(SALARY,0)))
SQL – SELECT – GROUP FROM STAFF
FUNCTION(NESTING
GROUP BY DEPT_ID;
GROUP FUNCTION)
• For Example, Display The
Maximum Average Salary Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

MAX(AVG(NVL(SALARY,0)))
3000.30
Q & A SESSION
SQL – Data Query Language (DQL)

SQL

DQL DML DDL TCL DCL

INSERT CREATE COMMIT GRANT


SELECT UPDATE ALTER ROLLBACK REVOKE
DELETE DROP
SQL – DQL –
SELECT SYNTAX
SELECT select_list FROM table
SUBQUERIES WHERE expr operator
/NESTED QUERIES
(SELECT select_list
FROM table);

• Subquery or Inner query or Nested


query is a query in a query. Table STAFF
• A subquery is usually added in the Staff_ID Staff_Name Salary Address Dept_ID
WHERE Clause of the SQL statement. 1 ALEX 4000 SELANGOR IT
• Most of the time, a subquery is used 2 AHMAD 2000.20 JOHOR IT
when you know how to search for a 3 RAJU 3000.30 JOHOR IE
value using a SELECT statement, but
do not know the exact value. 4 ALI PERAK IT
SELECT Staff_Name
FROM STAFF
SQL – SELECT – WHERE salary < (SELECT salary SELECT Staff_Name
FROM STAFF
FROM STAFF
SUBQUERIES WHERE salary < 4000
WHERE Staff_ID = 1);
• Using a subquery
Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

Staff_Name
AHMAD
RAJU
SELECT Staff_Name, Address, Salary
FROM STAFF
2000.20
WHERE salary > (SELECT salary
SQL – SELECT – FROM STAFF
SUBQUERIES WHERE Staff_ID = 2);
AND Address NOT IN (SELECT Address
JOHOR, PERAK
• Single row subqueries FROM STAFF
WHERE Staff_ID IN (‘3’, ‘4’));

Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

Staff_Name Address Salary


ALEX SELANGOR 4000
SELECT Staff_Name, Address, Salary
SQL – SELECT – FROM STAFF 2000.20
SUBQUERIES WHERE salary = (SELECT MIN(salary)
FROM STAFF);
• Using group function in a
subquery

Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

Staff_Name Address Salary


AHMAD JOHOR 2000.20
SELECT Dept_ID, MIN(Salary)
FROM STAFF
SQL – SELECT – GROUP BY Dept_ID 3000.30
SUBQUERIES HAVING MIN(salary) < (SELECT MIN(salary)
FROM STAFF
• Using HAVING clause with WHERE Dept_ID = ‘IE’);
SUBQUERIES

Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

Dept_ID MIN(Salary)
IT 2000.20
SELECT Staff_Name, Address, Salary
SQL – SELECT – FROM STAFF
JOHOR, PERAK
SUBQUERIES WHERE Address NOT IN (SELECT Address
FROM STAFF
WHERE STAFF_ID IN (‘2’, ‘4’));
• Multiple row subqueries

Table STAFF
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT

Staff_Name Address Salary


ALEX SELANGOR 4000
Q & A SESSION

LKAT –PART 3, PART 4


SQL – Data Control Language (DCL) & Transaction Control Language (TCL)

SQL

DQL DML DDL TCL DCL

INSERT CREATE COMMIT GRANT


SELECT UPDATE ALTER ROLLBACK REVOKE
DELETE DROP
BRAINSTORMING SESSION
State the main syntax command use in below SQL and what are the usage for each command function.
1. Transaction Control Language (TCL)
2. Data Control Language (DCL)
SQL – Data Control Language (DCL)

SQL

Data Retrieval DML DDL TCL DCL

INSERT CREATE COMMIT GRANT


SELECT UPDATE ALTER ROLLBACK REVOKE
DELETE DROP
Data Control
Language
(DCL)
Includes commands like GRANT and
• GRANT Example REVOKE, which are useful to give
"rights & permissions.“
• REVOKE commands
SQL – DCL - Syntax :
GRANT
GRANT SELECT, UPDATE ON MY_TABLE
TO SOME_USER, ANOTHER_USER;

GRANT SELECT ON Users


To give user access TO 'Tom'@'localhost;
privileges to a
Table STAFF
database.
Staff_ID Staff_Name Salary Address Dept_ID
1 ALEX 4000 SELANGOR IT
2 AHMAD 2000.20 JOHOR IT
3 RAJU 3000.30 JOHOR IE
4 ALI PERAK IT
SQL – DCL - Syntax :
REVOKE
REVOKE privilege_name ON object_name
FROM {user_name |PUBLIC |role_name}

To withdraw user's REVOKE SELECT, UPDATE ON student


access privileges given FROM BCA, MCA;
by using the
GRANT command
SQL – Transaction Control Language (TCL)

SQL

DQL DML DDL TCL DCL

INSERT CREATE COMMIT GRANT


SELECT UPDATE ALTER ROLLBACK REVOKE
DELETE DROP
Transaction
Control
Language (TCL)
• COMMIT Commands deal with the transaction
Example within the database.
• ROLLBACK
commands
• SAVEPOINT
SQL – TCL - Syntax :
COMMIT
COMMIT;

DELETE FROM Students


WHERE RollNo =25;
This command is used
COMMIT;
to save all the
transactions to the
database.
SQL – TCL - Syntax :
ROLLBACK
ROLLBACK;

Rollback command
allows you to undo DELETE FROM Students
transactions that have WHERE RollNo =25;
not already been saved
to the database.
SQL – TCL - Syntax :
SAVEPOINT
SAVEPOINT SAVEPOINT_NAME;

This command helps SAVEPOINT RollNo;


you to sets a savepoint
within a transaction.
Summary
• SQL is a database language designed for the retrieval and management
of data in a relational database.
• It helps users to access data in the RDBMS system
• Five types of SQL queries :
1. Data Definition Language (DDL)
2. Data Manipulation Language (DML)
3. Data Control Language(DCL)
4. Transaction Control Language(TCL)
5. Data Query Language (DQL)
Summary
1. Data Definition Language (DDL)
• helps you to define the database structure or schema.
2. Data Manipulation Language (DML)
• allows you to modify the database instance by inserting, modifying, and deleting its data.
3. Data Control Language(DCL)
• includes commands like GRANT and REVOKE, which are useful to give "rights &
permissions."
4. Transaction Control Language(TCL)
• commands deal with the transaction within the database.
5. Data Query Language (DQL)
• used to fetch the data from the database.
END OF TOPIC 4
Any Question??

You might also like