Database
Management
Systems and SQL
Session 1
The Language of DBMS
SQL
Structured Query Language
Standard language for querying and
manipulating data. Very widely used.
1. Data Definition Language (DDL)
– Create/alter/delete tables and their attributes
2. Data Manipulation Language (DML)
– Insert/delete/modify tuples in tables
Table name Attribute names
Tables in RDBMS
Product
PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
Tuples or rows 3
Steps to Define the Schema
Step 1: Define table name and its attributes
Product(PName, Price, Category, Manufacturer)
Product
PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
4
Data Types and Domain of Attributes
Product(PName, Price, Category, Manfacturer)
Basic data types
– Numeric
• Integer numbers: INTEGER, INT, and SMALLINT
• Floating-point (real) numbers: FLOAT or REAL, and
DOUBLE PRECISION
– Character-string
• Fixed length: CHAR(n), CHARACTER(n)
• Varying length: VARCHAR(n), CHAR VARYING(n),
CHARACTER VARYING(n)
5
Data Types and Domain of Attributes
– Boolean
• Values of TRUE or FALSE or NULL
– DATE
• Ten positions
• Components are YEAR, MONTH, and DAY in the
form YYYY-MM-DD
– Timestamp
• Includes the DATE and TIME fields
• Plus a minimum of six positions for decimal
fractions of seconds
• Optional WITH TIME ZONE qualifier 6
Steps to Define the Schema
Step 2: Define Data Types and Domain of Attributes.
Product(PName, Price, Category, Manfacturer)
Pname : Varchar,
Price: Float,
Category: Varchar
Manfacturer: Varchar
7
Step 3: Specifying Constraints.
Product(PName, Price, Category, Manfacturer)
Constraints: Restrictions on values of
Attribute.
• Specifying Attribute and Domain Constraints
• Specifying Key Constraints
• Specifying Key and Referential Integrity
Constraints
8
Specifying Attribute and Domain Constraints
• NOT NULL
NULL is not permitted for a particular attribute
• Default value
DEFAULT <value>
• CHECK clause
Dnumber > 0 AND Dnumber < 21;
• UNIQUE clause
Specifies attributes that have unique values 9
Specifying Key Constraints
• PRIMARY KEY clause
Specifies one or more attributes that make up the
primary key of a relation
It is an attribute or a combination of attributes that
uniquely identifies the records/tuples
e.g. roll_no, account_no, Id etc.
PRIMARY KEY = NOT NULL+ UNIQUE
10
Schema of Table Product
Product(Pname varchar Primary Key,
Price float Not Null,
Category varchar, check(Gadget, Photography,
Household)
Manufacturer varchar )
Attribute Data Type Constraints
Pname Varchar Primary Key
Price Float Not Null
Category Varchar Gadget,
Photography,
Household
Manufacturer Varchar
11
LET’S CODE
TOGETHER!!
12
Creating a Database
Step 1. Create a Database Company
CREATE
CREATEDATABASE
DATABASE <DATABASE
<DATABASENAME>;
NAME>;
Create database company;
Step 2. USE Database
USE
USE <DATABASE
<DATABASENAME>;
NAME>;
use company;
Step 2. SHOW TABLES
show tables;
13
Creating a Table
Step 1. Create a TABLE
CREATE
CREATETABLE
TABLE <TABLE
<TABLENAME>
NAME> ((
<ATTRIBUTE
<ATTRIBUTELIST>
LIST> <DATA
<DATATYPE>
TYPE> <CONSTRAINT>,
<CONSTRAINT>,
<ATTR2>
<ATTR2> <DATA
<DATATYPE>,<CONSTRAINT>);
TYPE>,<CONSTRAINT>);
Attribute Data Type Constraints
Pname Varchar Primary Key
Price Float Not Null
Category Varchar Gadget,
Photography,
Household
Manufacturer Varchar
14
Creating a Table
create table product(Pname varchar(20) primary key,
Price float NOT NULL, Category varchar(20)
CHECK(category
in("Gadget","Photography","Household")),
Manufacturer varchar(20));
Attribute Data Type Constraints
Pname Varchar Primary Key
Price Float Not Null
Category Varchar Gadget,
Photography,
Household
Manufacturer Varchar
VIPS: Oct - Dec 2019 15
Show Existing Tables
Show
Showtables;
tables;
Describe structure of an Existing Table
Desc
Desc<tablename>;
<tablename>;
Desc product;
16
Insert records in Table
INSERT
INSERT INTO
INTO R(A1,….,
R(A1,….,An)
An) VALUES
VALUES (v1,….,
(v1,…., vn)
vn)
insert into product(Pname,Price,Category,Manufacturer) values
("Gizmo",19.99, "Gadgets", "GizmoWorks");
or
insert into product values("Gizmo",19.99, "Gadgets", "GizmoWorks");
insert into product values("Powergizmo",29.99, "Gadgets", "GizmoWorks");
insert into product values("SingleTouch",149.99, "Photography", "Canon");
insert into product values("MultiTouch",203.99, "Household", "Hitachi");
PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
17
Select Query
SELECT
SELECT <attributes>
<attributes>
FROM
FROM <one
<oneor or more
morerelations>
relations>
WHERE
WHERE <conditions>
<conditions>
Product
SELECT
SELECT ** FROM
FROM product;
product;
PName Price Category Manufacturer
“selection”
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
18
Select Query using Attributes
PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
Product
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT Pname,
Pname,Price
PriceFROM
FROMProduct
Product
PName Price
Gizmo 19.99
“projection” Powergizmo 29.99
SingleTouch 149.99
MultiTouch 203.99
19
Select Query using WHERE
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT**FROM
FROMProduct
ProductWHERE
WHERE
category=‘Gadgets’;
category=‘Gadgets’;
PName Price Category Manufacturer
“selection” with Gizmo 19.99 Gadgets GizmoWorks
where Powergizmo 29.99 Gadgets GizmoWorks
20
Select Query using WHERE
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT PName,
PName,Price,
Price,Manufacturer
Manufacturer
FROM
FROM Product
Product
WHERE
WHERE Price
Price>>100;
100;
PName Price Manufacturer
“selection” and SingleTouch 149.99 Canon
“projection” with MultiTouch 203.99 Hitachi
where 21
Select Query using WHERE
PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Product Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT PName,
PName,Price,
Price,Manufacturer
Manufacturer
FROM
FROM Product
Product
WHERE
WHERE Price
Price>>100
100and
and manufacturer
manufacturer=“Canon”;
=“Canon”;
Combine two or more PName Price Manufacturer
conditions Using
SingleTouch 149.99 Canon
and
22
Select Query using WHERE
PName Price Category Manufacturer
Product
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT PName,
PName,Price,
Price,Manufacturer
Manufacturer
FROM
FROM Product
Product
WHERE
WHERE Manufacturer
Manufacturer=“Hitachi”
=“Hitachi”or
or
Manufacturer
Manufacturer==“Canon”;
“Canon”;
PName Price Manufacturer
Combine two or more
conditions Using SingleTouch 149.99 Canon
or MultiTouch 203.99 Hitachi
23
Select Query using WHERE
PName Price Category Manufacturer
Product
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT PName,
PName,Price,
Price,Manufacturer
Manufacturer
FROM
FROM Product
Product
WHERE
WHERE manufacturer
manufacturer
IN(“Hitachi”,“Canon”);
IN(“Hitachi”,“Canon”);
PName Price Manufacturer
Replace OR with In
conditions Using SingleTouch 149.99 Canon
IN MultiTouch 203.99 Hitachi
24
The LIKE operator
SELECT
SELECT **
FROM
FROM Products
Products
WHERE
WHERE PName
PName LIKE
LIKE <pattern>
<pattern>
Pattern : pattern matching on strings. It contains two
special symbols:
% = any sequence of characters
_ = any single character
25
Like Operator with %
Product name that starts with P
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT **
FROM
FROM Product
Product
WHERE
WHERE Pname
Pnamelike
like‘p%’;
‘p%’;
PName Price Category Manufacturer
Powergizmo 29.99 Gadgets GizmoWorks
26
Like Operator with %
Product name that ends with Touch
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT **
FROM
FROM Product
Product
WHERE
WHERE Pname
Pnamelike
like‘%Touch’;
‘%Touch’;
PName Price Category Manufacturer
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
27
Like Operator with %
Product name that contains e anywhere in the name
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT **
FROM
FROM Product
Product
WHERE
WHERE Pname
Pnamelike
like‘%e%’;
‘%e%’;
PName Price Category Manufacturer
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
28
Like Operator with _ &%
Product name with second letter ‘o’
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT **
FROM
FROM Product
Product
WHERE
WHERE Pname
Pnamelike
like‘_o%’;
‘_o%’;
PName Price Category Manufacturer
Powergizmo 29.99 Gadgets GizmoWorks
29
Like Operator with %
Product name with second last character ‘c’
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT **
FROM
FROM Product
Product
WHERE
WHERE Pname
Pnamelike
like‘%c_’;
‘%c_’;
PName Price Category Manufacturer
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
30
Eliminating Duplicates
Category
SELECT
SELECT DISTINCT
DISTINCT category
category Gadgets
FROM
FROM Product;
Product; Photography
Household
Compare to:
Category
Gadgets
SELECT
SELECT category
category Gadgets
FROM
FROM Product;
Product; Photography
Household
31
Aggregate Functions
SQL supports several aggregation operations:
Sum
Max
Min
Avg
Count
Except count, all aggregations apply to a single attribute
32
Aggregate Functions – SUM
Sum of Price of all Products
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT sum(price)
sum(price)
FROM
FROM Product;
Product;
403.96
33
Aggregate Functions – MAX
Max of Price of all Products
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT max(price)
max(price)
FROM
FROM Product;
Product;
203.96
34
Aggregate Functions – MIN
Min of Price of all Products
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT min(price)
min(price)
FROM
FROM Product;
Product;
19.99
35
Aggregate Functions – AVG
Avg of Price of all Products
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT avg(price)
avg(price)
FROM
FROM Product;
Product;
100.99
36
Aggregate Functions – COUNT
Total number of Products
Product PName Price Category Manufacturer
Gizmo 19.99 Gadgets GizmoWorks
Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
MultiTouch 203.99 Household Hitachi
SELECT
SELECT count(price)
count(price)
FROM
FROM Product;
Product;
4
SELECT
SELECT count(*)
count(*)
FROM
FROM Product;
Product;
37
More Examples
Query Sql
Max price of Gadgets Select Max(price) from
category Products product where
category=“Gadgets”
Total no of products in Select count(*) from product
Household category where Category=“Household”
Count total no. of categories Select
Count(Distinct(category) )
from product
38
PName Price Category Manufacturer
WRITE Gizmo 19.99 Gadgets GizmoWorks
THE Powergizmo
SingleTouch
29.99
149.99
Gadgets
Photography
GizmoWorks
Canon
QUERY MultiTouch 203.99 Household Hitachi
Problem Statement SQL Query
Average Price of Gizmo Works
manufacturer ?
Total price of Gizmo Works manufacturer
?
Count total number of manufacturers
?
Count number of products that contains ‘o’
in their name
?
39
Ordering the Results
SELECT
SELECT pname,
pname, price,
price, manufacturer
manufacturer
FROM
FROM Product
Product
WHERE
WHERE manufacturer=‘GizmoWorks’
manufacturer=‘GizmoWorks’AND ANDprice
price>> 50
50
ORDER
ORDERBYBY price,
price, pname;
pname;
• Ties are broken by the second attribute on the ORDER
BY list, etc.
• Also works without Where
• Ordering is ascending, unless you specify the DESC
keyword.
SELECT
SELECT pname,
pname, price,
price, manufacturer
manufacturer
FROM
FROM Product
Product
ORDER
ORDERBYBY price
priceDESC;
DESC;
40
PName Price Category Manufacturer
FIND Gizmo 19.99 Gadgets GizmoWorks
THE Powergizmo 29.99 Gadgets GizmoWorks
SingleTouch 149.99 Photography Canon
RESULT MultiTouch 203.99 Household Hitachi
SELECT
SELECT DISTINCT
DISTINCTcategory
?
category
FROM
FROM Product
Product
ORDER
ORDERBYBYcategory
category
SELECT
SELECT Category
?
Category
FROM
FROM Product
Product
ORDER
ORDERBYBY PName
PName
SELECT
SELECT DISTINCT
DISTINCTcategory
?
category
FROM
FROM Product
Product
ORDER
ORDERBYBYPName
PName 41
Practice Exercise
42
Create a new table in your current database
‘COMPANY’ with the following schema
Attribute Data Type Constraints
Cname Varchar Primary Key
Reg_Date Date Not Null
Stock_Price Float
Country Varchar
43
Create a new table named ‘COMPDTLS’ in your
current database with the following schema
Attribute Data Type Constraints
CompName Varchar Primary Key
RegDate Date Not Null
StockPrice Float
Country Varchar
COMPDTLS( CompName varchar Primary Key,
RegDate Date Not Null,
StockPrice Float
Country varchar )
44
Insert the following Records in COMPDTLS
CompName RegDate StockPrice Country
GizmoWorks 2019/10/21 25 USA
Canon 2019/10/3 65 Japan
Hitachi 2019/10/10 15 India
45
Write SQL Queries for:
1. List the details of all companies
2. List the registration date of all companies
3. Show the details of all companies of Japan
4. List the company name whose stock price is 65
5. List the companies of Japan or India
6. Show the maximum stock price.
7. Show the average stock price.
8. Show the distinct countries
9. Show the total no of countries
10. Show the company name whose country name ends with ‘a’.
46