Database Management System: SQL
Database: Database is a system that allows
users to store and organize data
Structured Query Language:
A programming language that is used to
interact with the database
There are 3 main types of SQL commands
Data Definition Language: Create, Alter, drop
Data Manipulation Language: select, insert,
update and delete
Data Control Language: Grant and revoke
permission to users
SQL (Structured Query Language) is a
programming language used to interact with
Database and RDBMS
RDBMS
Creating Database and Tables
Data Types
•Data type of a column defines what value the
column can store in table
•Defined while creating tables in database
•Data types mainly classified into three
categories
String: char, varchar, etc
Numeric: int, float, bool, etc
Date and time: date, datetime, etc
Primary and Foreign Keys:
Primary key (PK):
• A Primary key is a unique column we set in a
table to easily identify and locate data in
queries
• A table can have only one primary key,
which should be unique and NOT NULL
Constraints
Constraints
• Constraints are used to specify rules for
data in a table
• This ensures the accuracy and reliability of
the data in the table
• Constraints can be specified when the table
is created with the CREATE TABLE statement,
or
• after the table is created with the ALTER
TABLE statement
Commonly used constraints in SQL
• NOT NULL - Ensures that a column cannot
have a NULL value
• UNIQUE - Ensures that all values in a column
are different
• PRIMARY KEY - A combination of a NOT
NULL and UNIQUE
• FOREIGN KEY - Prevents actions that would
destroy links between tables (used to link
multiple tables together)
• DEFAULT - Sets a default value for a column
if no value is specified
Commonly used constraints in SQL
• NOT NULL - Ensures that a column cannot
have a NULL value
• UNIQUE - Ensures that all values in a column
are different
• PRIMARY KEY - A combination of a NOT
NULL and UNIQUE
• FOREIGN KEY - Prevents actions that would
destroy links between tables (used to link
multiple tables together)
• DEFAULT - Sets a default value for a column
if no value is specified
Create Table
The CREATE TABLE statement is used to create
a new table in a database
• Syntax
CREATE TABLE table_name (
column_name1 datatype constraint,
column_name2 datatype constraint,
column_name3 datatype constraint,
);
Insert values into table
The INSERT INTO statement is used to insert
new records in a table
• Syntax
INSERT INTO TABLE_NAME
(column1, column2, column3,...columnN)
VALUES
(value1, value2, value3,...valueN);
Update values in table
The UPDATE command is used to update
existing rows in a table
• Syntax
UPDATE TABLE_NAME
SET “Column_name1” = ‘value1’,
“Column_name2” = ‘value2’
WHERE “ID” = ‘value’
Commonly used constraints in SQL
The ALTER TABLE statement is used to add,
delete, or modify columns in an existing table
• Adding a Column
Syntax
ALTER TABLE table_name
ADD COLUMN column_name ;
• Dropping a column
Syntax
ALTER TABLE table_name
DROP COLUMN column_name;
Delete values in table
The DELETE statement is used to delete existing
records in a table
• Syntax
DELETE FROM table_name
WHERE condition;
SELECT CLAUSE
The SELECT statement is used to select data
from a database
• Syntax
SELECT column_name
FROM table_name;
Select all fields from table
• Syntax
SELECT *
FROM table_name;
Select distinct/unique fields from table
• Syntax
SELECT DISTINCT column_name
FROM table_name;
WHERE CLAUSE
WHERE clause is used to filter records.
It is used to extract only those records that
fulfill a specified condition
• Syntax
SELECT column_name
FROM table_name;
WHERE conditions;
RECAP: BASIC SQL
SELECT *
CREATE TABLE table_name( FROM table_name;
id INT NOT NULL UNIQUE,
name VARCHAR(50) NOT NULL,
age INT NOT NULL CHECK (age >=18),
gender VARCHAR(10) NOT NULL,
phone VARCHAR(10) NOT NULL,
city VARCHAR(10) NOT NULL DEFAULT ‘Lahore’
);
AS operator
SELECT id AS ID, name AS “Student Name”
SELECT id AS ID, name AS Name FROM table_name
FROM table_name WHERE city=‘Lahore’
WHERE city=‘Lahore’
Relational operators
SELECT *
SELECT * FROM table_name
FROM table_name WHERE age = 20;
WHERE age < 20;
SELECT *
SELECT * FROM table_name
FROM table_name WHERE age <> 20;
WHERE age > 20;
SELECT *
FROM table_name
WHERE age != 20;
Logical operator - OR
Student Table WHERE Age <= 26 OR Gender=‘Male’
Name Age Gender City
Name Age Gender City
Rana Umar 25 Male Lahore
Rana Umar 25 Male Lahore
Salman Khan 24 Male Multan
Salman Khan 24 Male Multan
Maryam Khan 25 Female Islamabad
Maryam Khan 25 Female Islamabad
Sania Mirza 27 Female Lahore
Babar Azam 26 Male Lahore
Babar Azam 26 Male Lahore
Logical operator - OR
Student Table WHERE City= “Lahore” OR City=“Islamabad”
Name Age Gender City
Name Age Gender City
Rana Umar 25 Male Lahore
Rana Umar 25 Male Lahore
Salman Khan 24 Male Multan
Maryam Khan 25 Female Islamabad
Maryam Khan 25 Female Islamabad
Sania Mirza 27 Female Lahore
Sania Mirza 27 Female Lahore
Babar Azam 26 Male Lahore
Babar Azam 26 Male Lahore
IN operator
SELECT column1, column2, column3, ....
SELECT column1, column2, column3, .... FROM table_name
FROM table_name WHERE column_name NOT IN
WHERE column_name IN (value1,value2,...);
(value1,value2,...);
IN Operator
Student Table WHERE City IN (“Lahore”, “Islamabad”)
Name Age Gender City
Name Age Gender City
Rana Umar 25 Male Lahore
Rana Umar 25 Male Lahore
Salman Khan 24 Male Multan
Maryam Khan 25 Female Islamabad
Maryam Khan 25 Female Islamabad
Sania Mirza 27 Female Lahore
Sania Mirza 27 Female Lahore
Babar Azam 26 Male Lahore
Babar Azam 26 Male Lahore
WHERE City NOT IN (“Lahore”, “Islamabad”)
Name Age Gender City
Salman Khan 24 Male Multan
Logical operator - AND
Student Table WHERE Age >= 25 AND AGE<=27
Name Age Gender DOB Name Age Gender DOB
Rana Umar 25 Male 1998-02-10 Rana Umar 25 Male 1998-02-10
Salman Khan 24 Male 1999-07-22 Maryam Khan 25 Female 1998-05-11
Maryam Khan 25 Female 1998-05-11 Sania Mirza 27 Female 1996-10-15
Sania Mirza 27 Female 1996-10-15 Babar Azam 26 Male 1997-03-12
Babar Azam 26 Male 1997-03-12
WHERE DOB >= 1998-01-01 AND DOB <=1998-06-30
Name Age Gender DOB
Rana Umar 25 Male 1998-02-10
Maryam Khan 25 Female 1998-05-11
Logical operator - AND
Student Table WHERE Age <= 26 AND Gender=‘Male’
Name Age Gender DOB Name Age Gender DOB
Rana Umar 25 Male 1998-02-10 Rana Umar 25 Male 1998-02-10
Salman Khan 24 Male 1999-07-22 Babar Azam 26 Male 1997-03-12
Maryam Khan 25 Female 1998-05-11
Sania Mirza 27 Female 1996-10-15
Babar Azam 26 Male 1997-03-12
BETWEEN operator
SELECT column1, column2, column3, ....
SELECT column1, column2, column3, .... FROM table_name
FROM table_name WHERE column_name NOT BETWEEN
WHERE column_name BETWEEN value1 value1 AND value2
AND value2
BETWEEN operator
Student Table WHERE Age BETWEEN 25 AND 27
Name Age Gender DOB Name Age Gender DOB
Rana Umar 25 Male 1998-02-10 Rana Umar 25 Male 1998-02-10
Salman Khan 24 Male 1999-07-22 Maryam Khan 25 Female 1998-05-11
Maryam Khan 25 Female 1998-05-11 Sania Mirza 27 Female 1996-10-15
Sania Mirza 27 Female 1996-10-15 Babar Azam 26 Male 1997-03-12
Babar Azam 26 Male 1997-03-12
WHERE DOB BETWEEN 1998-01-01 AND 1998-06-30
Name Age Gender DOB
Rana Umar 25 Male 1998-02-10
Maryam Khan 25 Female 1998-05-11
BETWEEN operator
Student Table WHERE Name BETWEEN “a” AND “n”
Name Age Gender DOB Name Age Gender DOB
Rana Umar 25 Male 1998-02-10 Maryam Khan 25 Female 1998-05-11
Salman Khan 24 Male 1999-07-22 Babar Azam 26 Male 1997-03-12
Maryam Khan 25 Female 1998-05-11
Sania Mirza 27 Female 1996-10-15 WHERE Name BETWEEN “amir” AND “nauman”
Babar Azam 26 Male 1997-03-12
Name Age Gender DOB
Maryam Khan 25 Female 1998-05-11
Babar Azam 26 Male 1997-03-12
LIKE operator
SELECT column1, column2, column3, ....
SELECT column1, column2, column3, .... FROM table_name
FROM table_name AWHERE column_name NOT LIKE pattern
WHERE column_name LIKE pattern
LIKE operator’s wildcard patterns
Pattern Description
‘a%’ Start with “a”
‘%a’ Ends with “a”
‘%am%’ Has “am” in any position
‘a%m’ Starts with “a” and Ends with “m”
‘_a%’ “a” in the second position
‘__a%’ “a” in the third position
‘_oy’ “o” in teh second position and “y” in
third position
LIKE operator
Student Table WHERE Name LIKE “s%”
Name Age Gender DOB Name Age Gender DOB
Rana Umar 25 Male 1998-02-10 Salman Khan 24 Male 1999-07-22
Salman Khan 24 Male 1999-07-22 Sania Mirza 27 Female 1996-10-15
Maryam Khan 25 Female 1998-05-11
Sania Mirza 27 Female 1996-10-15 WHERE Name LIKE “%khan”
Babar Azam 26 Male 1997-03-12
Name Age Gender DOB
Salman Khan 24 Male 1999-07-22
Maryam Khan 25 Female 1998-05-11
BINARY LIKE operator
SELECT column1, column2, column3, ....
For case sensitive pattern FROM table_name
AWHERE BINARY column_name NOT LIKE
SELECT column1, column2, column3, .... pattern
FROM table_name
WHERE BINARY column_name LIKE
pattern
BINARY LIKE operator
Student Table WHERE BINARY Name LIKE “S%”
Name Age Gender DOB Name Age Gender DOB
Rana Umar 25 Male 1998-02-10 Salman Khan 24 Male 1999-07-22
Salman Khan 24 Male 1999-07-22 Sania Mirza 27 Female 1996-10-15
Maryam Khan 25 Female 1998-05-11
Sania Mirza 27 Female 1996-10-15 WHERE BINARY Name LIKE “s%”
Babar Azam 26 Male 1997-03-12
Name Age Gender DOB
ORDER BY ASC/DESC
SELECT column1, column2, column3, ....
SELECT column1, column2, column3, .... FROM table_name
FROM table_name ORDER BY column_name DESC
ORDER BY column_name ASC
ORDER BY ASC/DESC
Student Table SELECT *
FROM Student
ORDER BY Name
Name Age Gender DOB
Name Age Gender DOB
Rana Umar 25 Male 1998-02-10
Babar Azam 26 Male 1997-03-12
Salman Khan 24 Male 1999-07-22
Maryam Khan 25 Female 1998-05-11
Maryam Khan 25 Female 1998-05-11
Rana Umar 25 Male 1998-02-10
Sania Mirza 27 Female 1996-10-15
Salman Khan 24 Male 1999-07-22
Babar Azam 26 Male 1997-03-12
Sania Mirza 27 Female 1996-10-15
SELECT *
FROM Student
ORDER BY Age ASC, Name DESC
IS NULL
SELECT column1, column2, column3, ....
SELECT column1, column2, column3, .... FROM table_name
FROM table_name WHERE column_name IS NOT NULL
WHERE column_name IS NULL
IS NULL
Student Table SELECT * FROM Student
WHERE Age IS NULL
Name Age Gender DOB
Name Age Gender DOB
Rana Umar 25 Male 1998-02-10
Salman Khan Male 1999-07-22
Salman Khan Male 1999-07-22
Maryam Khan 25 Female 1998-05-11 SELECT * FROM Student
Sania Mirza 27 Female 1996-10-15 WHERE Age IS NOT NULL
Babar Azam 26 Male 1997-03-12 Name Age Gender DOB
Rana Umar 25 Male 1998-02-10
Maryam Khan 25 Female 1998-05-11
Sania Mirza 27 Female 1996-10-15
Babar Azam 26 Male 1997-03-12
LIMIT CLAUSE and Offset
SELECT column1, column2, column3, ....
SELECT column1, column2, column3, .... FROM table_name
FROM table_name WHERE condition
WHERE condition LIMIT offset, NumberOfRows
LIMIT number
LIMIT CLAUSE
Student Table SELECT * FROM Student
LIMIT 3
Name Age Gender DOB Name Age Gender DOB
Rana Umar 25 Male 1998-02-10 Rana Umar 25 Male 1998-02-10
Salman Khan 24 Male 1999-07-22 Salman Khan 24 Male 1999-07-22
Maryam Khan 25 Female 1998-05-11 Maryam Khan 25 Female 1998-05-11
SELECT * FROM Student SELECT * FROM Student
Sania Mirza 27 Female 1996-10-15 SELECT * FROM Student
Babar Azam 26 Male 1997-03-12 LIMIT 1,3
Name Age Gender DOB
Maryam Khan 25 Female 1998-05-11
Sania Mirza 27 Female 1996-10-15
Babar Azam 26 Male 1997-03-12
Aggregate Functions
SELECT COUNT (columnName)
COUNT(columnName) FROM table_name
WHERE condition
MAX (columnName)
SELECT SUM (columnName)
MIN (columnName) FROM table_name
WHERE condition
SUM (columnName)
AVG (columnName)
Aggregate functions
Student Table SELECT COUNT(Name) FROM student
COUNT(Name)
Name Age Gender City
Rana Umar 25 Male Lahore 5
Salman Khan 24 Male Multan SELECT COUNT(*) FROM student
Maryam Khan 25 Female Islamabad
COUNT(*)
Sania Mirza 27 Female Lahore
5
Babar Azam 26 Male Lahore
SELECT COUNT(DISTINCT City) AS CityCount
FROM student
SELECT MIN(Age) AS minAge, Name, Gender, City CityCount
FROM student
3
ROLLBACK and COMMIT
Works for
INSERT
UPDATE
DELETE
ROLLBACK and COMMIT
Student Table SELECT * FROM Student
UPDATE student
Name Age Gender DOB SET Age=26 WHERE Name=‘Rana Umar’
Rana Umar 25 Male 1998-02-10 COMMIT;
Salman Khan 24 Male 1999-07-22 UPDATE student
SET Age=27 WHERE Name=‘Babar Azam’
Maryam Khan 25 Female 1998-05-11 ROLLBACK;
Sania Mirza 27 Female 1996-10-15 SELECT * FROM Student
Babar Azam 26 Male 1997-03-12
PRIMARY KEY and FOREIGN KEY
ALTER TABLE table_name
CREATE TABLE studentTable( ADD PRIMARY KEY (id);
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL CHECK (age >=18),
city VARCHAR(10) NOT NULL DEFAULT ‘Lahore’
PRIMARY KEY (id)
);
PRIMARY KEY and FOREIGN KEY
Student Table City Table
id Name Age City
cid Cityname
1 Rana Umar 25 Lahore
1 Lahore
2 Salman Khan 24 Multan
2 Islamabad
3 Maryam Khan 25 Islamabad
3 Multan
4 Sania Mirza 27 Lahore
5 Babar Azam 26 Lahore
PRIMARY KEY and FOREIGN KEY
Student Table City Table
id Name Age City
LINK cid Cityname
1 Rana Umar 25 1
1 Lahore
2 Salman Khan 24 3
2 Islamabad
3 Maryam Khan 25 2
3 Multan
4 Sania Mirza 27 1
5 Babar Azam 26 1
PRIMARY KEY
FOREIGN KEY
PRIMARY KEY
PRIMARY KEY and FOREIGN KEY
ALTER TABLE table_name
CREATE TABLE studentTable( ADD FOREIGN KEY (city) REFERENCES City (cid)
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL CHECK (age >=18),
city VARCHAR(10) NOT NULL DEFAULT ‘Lahore’
PRIMARY KEY (id),
FOREIGN KEY (city) REFERENCES City (cid)
);
SQL JOINS
INNER JOIN: returns matched records of RIGHT JOIN: returns all records from the RIGHT
table and the matched records in both tables
both tables
LEFT JOIN: returns all records from
the left table and the matched
records in both tables
INNER JOIN
Student Table City Table
id Name Age City
cid Cityname
1 Rana Umar 25 1 MATCH 1 Lahore
2 Salman Khan 24 3
2 Islamabad
3 Maryam Khan 25 2
3 Multan
4 Sania Mirza 27 1
5 Babar Azam 26 1
PRIMARY KEY
FOREIGN KEY
PRIMARY KEY
INNER JOIN
SELECT column1,column2,column3
FROM table1
INNER JOIN table2
ON
table1.columnName=table2.columnNa
me
INNER JOIN
Student Table SELECT * FROM Student
INNER JOIN City
id Name Age City
ON Student.City=City.cid
1 Rana Umar 25 1
id Name Ag City cid Cityname
2 Salman Khan 24 3 e
3 Maryam Khan 25 2
1 Rana Umar 25 1 1 Lahore
4 Sania Mirza 27 1
2 Salman Khan 24 3 3 Multan
5 Babar Azam 26 1
3 Maryam Khan 25 2 2 Islamabad
4 Sania Mirza 27 1 1 Lahore
City Table 5 Babar Azam 26 1 1 Lahore
cid Cityname
1 Lahore
2 Islamabad
3 Multan
INNER JOIN– viewing some columns
Student Table SELECT s.id, s.Name, s.Age, c.Cityname FROM Student s
INNER JOIN City c
id Name Age City
ON s.City=c.cid
1 Rana Umar 25 1
id Name Ag Cityname
2 Salman Khan 24 3 e
3 Maryam Khan 25 2
1 Rana Umar 25 Lahore
4 Sania Mirza 27 1
2 Salman Khan 24 Multan
5 Babar Azam 26 1
3 Maryam Khan 25 Islamabad
4 Sania Mirza 27 Lahore
City Table 5 Babar Azam 26 Lahore
cid Cityname
1 Lahore
2 Islamabad
3 Multan
INNER JOIN – table name alising
Student Table SELECT * FROM Student s
INNER JOIN City c
id Name Age City
ON s.City=c.cid
1 Rana Umar 25 1
id Name Ag City cid Cityname
2 Salman Khan 24 3 e
3 Maryam Khan 25 2
1 Rana Umar 25 1 1 Lahore
4 Sania Mirza 27 1
2 Salman Khan 24 3 3 Multan
5 Babar Azam 26 1
3 Maryam Khan 25 2 2 Islamabad
4 Sania Mirza 27 1 1 Lahore
City Table 5 Babar Azam 26 1 1 Lahore
cid Cityname
1 Lahore
2 Islamabad
3 Multan
INNER JOIN– missing entry
Student Table SELECT * FROM Student
INNER JOIN City
id Name Age City
ON Student.City=City.cid
1 Rana Umar 25 1
id Name Ag City cid Cityname
2 Salman Khan 24 e
3 Maryam Khan 25 2
1 Rana Umar 25 1 1 Lahore
4 Sania Mirza 27 1
3 Maryam Khan 25 2 2 Islamabad
5 Babar Azam 26 1
4 Sania Mirza 27 1 1 Lahore
5 Babar Azam 26 1 1 Lahore
City Table
cid Cityname
1 Lahore
2 Islamabad
3 Multan
LEFT JOIN
SELECT column1,column2,column3
FROM table1
LEFT JOIN table2
ON
table1.columnName=table2.columnNa
me
LEFT JOIN
Student Table SELECT * FROM Student
LEFT JOIN City
id Name Age City
ON Student.City=City.cid
1 Rana Umar 25 1
id Name Ag City cid Cityname
2 Salman Khan 24 3 e
3 Maryam Khan 25 2
1 Rana Umar 25 1 1 Lahore
4 Sania Mirza 27 1
2 Salman Khan 24 3 3 Multan
5 Babar Azam 26 1
3 Maryam Khan 25 2 2 Islamabad
4 Sania Mirza 27 1 1 Lahore
City Table 5 Babar Azam 26 1 1 Lahore
cid Cityname
1 Lahore
2 Islamabad
3 Multan
LEFT– missing entry
Student Table SELECT * FROM Student
LEFT JOIN City
id Name Age City
ON Student.City=City.cid
1 Rana Umar 25 1
id Name Ag City cid Cityname
2 Salman Khan 24 e
3 Maryam Khan 25 2
1 Rana Umar 25 1 1 Lahore
4 Sania Mirza 27 1
2 Salman Khan 24
5 Babar Azam 26 1
3 Maryam Khan 25 2 2 Islamabad
4 Sania Mirza 27 1 1 Lahore
City Table 5 Babar Azam 26 1 1 Lahore
cid Cityname
1 Lahore
2 Islamabad
3 Multan
RIGHT JOIN
SELECT column1,column2,column3
FROM table1
RIGHT JOIN table2
ON
table1.columnName=table2.columnNa
me
RIGHT JOIN – missing entry
Student Table SELECT * FROM Student
RIGHT JOIN City
id Name Age City
ON Student.City=City.cid
1 Rana Umar 25 1
id Name Ag City cid Cityname
2 Salman Khan 24 3 e
3 Maryam Khan 25 2
1 Rana Umar 25 1 1 Lahore
4 Sania Mirza 27 1
2 Salman Khan 24 3 3 Multan
5 Babar Azam 26 1
3 Maryam Khan 25 2 2 Islamabad
4 Sania Mirza 27 1 1 Lahore
City Table 5 Babar Azam 26 1 1 Lahore
cid Cityname 4 Karachi
1 Lahore
2 Islamabad
3 Multan
4 Karachi
LEFT JOIN– missing entry
Student Table SELECT * FROM Student
RIGHT JOIN City
id Name Age City
ON Student.City=City.cid
1 Rana Umar 25 1
id Name Ag City cid Cityname
2 Salman Khan 24 e
3 Maryam Khan 25 2
1 Rana Umar 25 1 1 Lahore
4 Sania Mirza 27 1
3 Maryam Khan 25 2 2 Islamabad
5 Babar Azam 26 1
4 Sania Mirza 27 1 1 Lahore
5 Babar Azam 26 1 1 Lahore
City Table 4 Karachi
cid Cityname
1 Lahore
2 Islamabad
3 Multan
4 Karachi
CROSS JOIN
SELECT column1,column2,column3
FROM table1
CROSS JOIN table2
ON
table1.columnName=table2.columnNa
me
INNER JOIN for multiple tables
SELECT columns
FROM table1
INNER JOIN table2
ON table1.columnName=table2.columnName
INNER JOIN table3
ON table1.columnName=table3.columnName
INNER JOIN for multiple tables
Student SELECT * FROM Student s
id Name Percent City Course INNER JOIN City c ON s.City=c.cid
INNER JOIN Courses cr ON s.Courses=cr.course_id
1 Rana Umar 75 1 1
2 Salman Khan 64 3 2 id Name Pe C Co ci Cname Cr_i C_nam
rc i urs d d
3 Maryam Khan 55 2 1 en
t t e
4 Sania Mirza 67 1 1 y
5 Babar Azam 96 1 3
1 Rana Umar 75 1 1 1 Lahore 1 Compute
City Courses 2 Salman Khan 64 3 2 3 Multan 2 Electroni
cid Cname Cr_id C_name
3 Maryam Khan 55 2 1 2 Islamabad 1 Compute
1 Lahore 1 Computer
2 Islamabad 2 Electronics 4 Sania Mirza 67 1 1 1 Lahore 1 Compute
3 Multan 3 Power
5 Babar Azam 96 1 3 1 Lahore 3 Power
INNER JOIN for multiple tables
Student SELECT s.id, s.Name, s.Percent, c.Cname, cr.Cr_name
id Name Percent City Course FROM Student s
INNER JOIN City c ON s.City=c.cid
1 Rana Umar 75 1 1
INNER JOIN Courses cr ON s.Courses=cr.course_id
2 Salman Khan 64 3 2
id Name Pe Cname Cr_name
3 Maryam Khan 55 2 1 rc
en
4 Sania Mirza 67 1 1 t
5 Babar Azam 96 1 3
1 Rana Umar 75 Lahore Computer
City
2 Salman Khan 64 Multan Electronics
Courses
cid Cname Cr_id Cr_name 3 Maryam Khan 55 Islamabad Computer
1 Lahore 1 Computer
2 Islamabad 2 Electronics 4 Sania Mirza 67 Lahore Computer
3 Multan 3 Power
5 Babar Azam 96 Lahore Power
INNER JOIN for multiple tables—
missing entry
Student SELECT * FROM Student s
id Name Percent City Course LEFT JOIN City c ON s.City=c.cid
LEFT JOIN Courses cr ON s.Courses=cr.course_id
1 Rana Umar 75 1 1
2 Salman Khan 64 3 2 id Name Pe C Co ci Cname Cr_i C_nam
rc i urs d d
3 Maryam Khan 55 2 1 en
t t e
4 Sania Mirza 67 1 y
5 Babar Azam 96 1 3
1 Rana Umar 75 1 1 1 Lahore 1 Compute
City Courses 3 Maryam Khan 55 2 1 2 Islamabad 1 Compute
cid Cname Cr_id C_name
5 Babar Azam 96 1 3 3 Lahore 3 Power
1 Lahore 1 Computer
2 Islamabad 2 Electronics
3 Power
LEFT JOIN & RIGHT JOIN for multiple tables
SELECT columns
SELECT columns FROM table1
RIGHT JOIN table2
FROM table1 ON table1.columnName=table2.columnName
LEFT JOIN table2 RIGHT JOIN table3
ON table1.columnName=table2.columnName ON table1.columnName=table3.columnName
LEFT JOIN table3
ON table1.columnName=table3.columnName
INNER JOIN for multiple tables
Student SELECT * FROM Student s
id Name Percent City Course LEFT JOIN City c ON s.City=c.cid
LEFT JOIN Courses cr ON s.Courses=cr.course_id
1 Rana Umar 75 1 1
2 Salman Khan 64 3 2 id Name Pe C Co ci Cname Cr_i C_nam
rc i urs d d
3 Maryam Khan 55 2 1 en
t t e
4 Sania Mirza 67 1 y
5 Babar Azam 96 1 3
1 Rana Umar 75 1 1 1 Lahore 1 Compute
City Courses 2 Salman Khan 64 3 2 2 Electroni
cid Cname Cr_id C_name
3 Maryam Khan 55 2 1 2 Islamabad 1 Compute
1 Lahore 1 Computer
2 Islamabad 2 Electronics 4 Sania Mirza 67 1 Lahore
3 Power
5 Babar Azam 96 1 3 3 Lahore 3 Power
GROUP BY and HAVING Clause
Used in conjunction with Aggregate HAVING Clause is used to check a condition after
functions to group rows together, by GROUP BY clause
common values
GROUP BY and HAVING Clause
Student Table SELECT City.Cityname, count(Student.city) AS Total
FROM Student INNER JOIN City ON Student.City=City.cid
id Name Age City
WHERE Student.Age >=20
1 Rana Umar 25 1 GROUP BY city;
2 Salman Khan 24 3
3 Maryam Khan 25 2
4 Sania Mirza 18 1
5 Babar Azam 26 1 Cityname Total
Lahore 2
City Table Islamabad
Multan
1
1
cid Cityname
1 Lahore
2 Islamabad
3 Multan
GROUP BY and HAVING Clause
Student Table SELECT City.Cityname, count(Student.city) AS Total
FROM Student INNER JOIN City ON Student.City=City.cid
id Name Age City
WHERE Student.Age >=20
1 Rana Umar 25 1 GROUP BY city
2 Salman Khan 24 3 HAVING count(Student.city) > 1;
3 Maryam Khan 25 2
4 Sania Mirza 18 1
5 Babar Azam 26 1 Cityname Total
Lahore 2
City Table
cid Cityname
1 Lahore
2 Islamabad
3 Multan
GROUP BY and HAVING Clause
Student Table SELECT City.Cityname, count(Student.city) AS Total
FROM Student INNER JOIN City ON Student.City=City.cid
id Name Age City
WHERE Student.Age >=20
1 Rana Umar 25 1 GROUP BY city
2 Salman Khan 24 3 HAVING count(Student.city) > =1
ORDER BY Total ASC;
3 Maryam Khan 25 2
4 Sania Mirza 18 1
5 Babar Azam 26 1 Cityname Total
Multan 1
City Table Islamabad
Lahore
1
2
cid Cityname
1 Lahore
2 Islamabad
3 Multan