SQL-STRUCTURED
QUERY LANGUAGE
INTRODUCTION
SQL is the ANSI standard language for the
definition and manipulation of relational
database.
A database is a collection of related data.
A DBMS is a collection of programs that
enables us to create and maintain a
database.
A system that is able to manage its
database through its relational capabilities
is called RDBMS or relational database.
SOME FACTS ABOUT SQL
SQL data is case-sensitive, SQL commands are not.
First Version was developed at IBM by Donald D.
Chamberlin and Raymond F. Boyce. [SQL]
Developed using Dr. E.F. Codd's paper, A Relational
Model of Data for Large Shared Data Banks.
SQL query includes references to tuples variables
and the attributes of those variables
BASIC STRUCTURE
SQL ENVIRONMENT
Catalog
A set of schemas that constitute the description of a
database
Schema
The structure that contains descriptions of objects created
by a user (base tables, views, constraints)
Data Definition Language (DDL)
Commands that define a database, including creating,
altering, and dropping tables and establishing constraints
Data Manipulation Language (DML)
Commands that maintain and query a database
Data Control Language (DCL)
Commands that control a database, including administering
privileges and committing data
DDL
DDL is Data Definition Language statements. Some
examples:
CREATE - to create objects in the database
ALTER - alters the structure of the database
DROP removes a table from the database.All the tables
rows, space and privileges will also be removed.Cannot be rolled
back.
TRUNCATE - remove all rows from a table, including all spaces
allocated for the records are removed.CANNOT BE
ROLLEDBACK.You cant use conditions in truncate.
COMMENT - add comments to the data dictionary
GRANT - gives user's access privileges to database
REVOKE - withdraw access privileges given with the GRANT
command
CREATE TABLE STATEMENT
Things to consider before you create your table are:
The type of data
the table name
what column(s) will make up the primary key
the names of the columns
CREATE TABLE statement syntax:
CREATE TABLE <table name>
( field1 datatype ( NOT NULL ),
field2 datatype ( NOT NULL )
);
ALTER TABLE STATEMENT
To add or drop columns on existing tables.
ALTER TABLE statement syntax:
ALTER TABLE <table name>
ADD attr datatype;
or
DROP COLUMN attr;
DROP TABLE STATEMENT
The DROP command is used to drop the table.
CANNOT BE ROLLED BACK
Has two options:
CASCADE: Specifies that any foreign key constraint violations
that are caused by dropping the table will cause the corresponding
rows of the related table to be deleted.
RESTRICT: blocks the deletion of the table of any foreign key
constraint violations would be created.
DROP TABLE statement syntax:
DROP TABLE <table name> [ RESTRICT|CASCADE ];
EXAMPLE
Example:
CREATE TABLE FoodCart (
date varchar(10),
food varchar(20),
profit float
);
ALTER TABLE FoodCart (
ADD sold int
);
ALTER TABLE FoodCart(
DROP COLUMN profit
);
DROP TABLE FoodCart;
DELETE:ADELETEstatementcanbefine-tunedusingapredicatevia
eitherWHEREorJOINtodeletesomeorallrowsinatableBecauseofthe
transactionaloverhead,DELETEcanbe"slow"(thisisrelative),butsaferbecause
itisfine-grained.
.
TRUNCATE: TRUNCATEcannotbefinegrained.Ifsuccessful,itwillremove
alltherowsfromyourtable.Becauseitis(typically)notloggedanddoesnotuse
predicates,aTRUNCATEwillbefasterthanaDELETE,butlesssafe.
DROP:DROPTABLEgoesfurtherthanaTRUNCATEinthatitactuallyremoves
thetablefromthedatabasecompletely.Thisincludesremovingallassociated
objects,suchasindexesandconstraints.Ifyoudroppedatable,notonlywouldyou
removeallthedata,butthestructureaswell.
DML
DML is Data Manipulation Language
statements. Some examples:
SELECT - retrieve data from the a
database
INSERT - insert data into a table
UPDATE - updates existing data within a
table
DELETE - deletes all rows from a table, the
space for the records remain,can be rolled
back.
DML
INSERT: adds new rows to a table.
UPDATE: modifies one or more
attributes.
DELETE: deletes one or more rows
from a table.
EXAMPLE TABLE
date
food
sold
02/25/08
pizza
350
02/26/08
hotdog
500
INSERT STATEMENT
To insert a row into a table, it is necessary to
have a value for each attribute, and order
matters.
INSERT statement syntax:
INSERT into <table name>
VALUES ('value1', 'value2', NULL);
Example: INSERT into FoodCart
VALUES (02/26/08', pizza', 70 );
UPDATE STATEMENT
To update the content of the table:
UPDATE statement syntax:
UPDATE <table name> SET <attr> = <value>
WHERE <selection condition>;
Example: UPDATE FoodCart SET sold = 349
WHERE date = 02/25/08 AND food =
pizza;
DELETE STATEMENT
To delete rows from the table:
DELETE statement syntax:
DELETE FROM <table name>
WHERE <condition>;
Example: DELETE FROM FoodCart
WHERE food = hotdog;
Can be ROLLBACK. We have to COMMIT the
transaction to make the change permanent.
DCL
DCL is Data Control Language
statements. Some examples:
COMMIT - save work done
SAVEPOINT - identify a point in a
transaction to which you can later
roll back
ROLLBACK - restore database to
original since the last COMMIT
SQL
STATEMENTS,OPERATIONS,CLAUSES
SQL Statements:
Select
SQL Operations:
Join
Left Join
Right Join
Like
SQL Clauses:
Order By
Group By
Having
BASIC SELECT STATEMENT
A basic SELECT statement includes 3 clauses
SELECT <attribute name> FROM <tables> WHERE <condition>
A basic SELECT statement includes 3 clauses
SELECT <attribute name> FROM <tables> WHERE <condition>
FROM
Specifies the tables that serve as the input to the statement
WHERE
Specifies the selection condition, including the join condition.
SQL: SELECT Statement (cont.)
Using a * in a select statement indicates that
every attribute of the input table is to be
selected.
Example: SELECT * FROM WHERE ;
To get unique rows, type the keyword
DISTINCT after SELECT.
Example: SELECT DISTINCT * FROM
WHERE ;
Example:
Person
Name
Age
Weight
Harry
34
80
Sally
28
George
1) SELECT *
FROM person
WHERE age >
30;
Name
Age
Weight
64
Harry
34
80
29
70
Helena
54
54
Helena
54
54
Peter
34
80
Peter
34
80
2) SELECT weight
FROM person
WHERE age >
30;
3) SELECT distinct weight
FROM person
WHERE age > 30;
Weight
Weight
80
80
54
54
80
SQL: Join operation
A join can be specified in the FROM clause
which list the two input relations and the
WHERE clause which lists the join
condition.
Example:
Emp
ID
1000
1001
1002
Dept
State
CA
MA
TN
ID
1001
1002
1003
Divisio
n
IT
Sales
Biotec
h
SQL: Join operation (cont.)
inner join = join
SELECT *
FROM emp join dept (or FROM emp, dept)
on emp.id = dept.id;
Emp.I
D
1001
1002
Emp.Stat
e
MA
TN
Dept.I
D
1001
1002
Dept.Divisio
n
IT
Sales
SQL: Join operation (cont.)
left outer join = left join
SELECT *
FROM emp left join dept
on emp.id = dept.id;
Emp.I
D
1000
1001
1002
Emp.Stat
e
CA
MA
TN
Dept.I
D
null
1001
1002
Dept.Divisio
n
null
IT
Sales
SQL: Join operation (cont.)
right outer join = right join
SELECT *
FROM emp right join dept
on emp.id = dept.id;
Emp.I
D
1001
1002
null
Emp.Stat
e
MA
TN
null
Dept.I
D
1001
1002
1003
Dept.Divisio
n
IT
Sales
Biotech
SQL: Like operation
Pattern matching selection
% (arbitrary string)
SELECT *
FROM emp
WHERE ID like %01;
finds ID that ends with 01, e.g. 1001, 2001, etc
_ (a single character)
SELECT *
FROM emp
WHERE ID like _01_;
finds ID that has the second and third character
as 01, e.g. 1010, 1011, 1012, 1013, etc
SQL: The ORDER BY Clause
Ordered result selection
desc (descending order)
SELECT *
FROM emp
order by state desc
puts state in descending order, e.g. TN, MA, CA
asc (ascending order)
SELECT *
FROM emp
order by id asc
puts ID in ascending order, e.g. 1001, 1002, 1003
SQL: The GROUP BY Clause
The function to divide the tuples into groups and
returns an aggregate for each group.
Usually, it is an aggregate functions companion
SELECT food, sum(sold) as totalSold
FROM FoodCart
group by food;
FoodCart
date
02/25/0
8
02/26/0
8
02/26/0
food
pizza
hotdog
pizza
sold
349
500
70
food
hotdo
g
pizza
totalSol
d
500
419
SQL: The HAVING Clause
The substitute of WHERE for aggregate functions
Usually, it is an aggregate functions companion
SELECT food, sum(sold) as totalSold
FROM FoodCart
group by food
having sum(sold) > 450;
FoodCart
date
02/25/0
8
02/26/0
8
02/26/0
food
pizza
hotdog
pizza
sold
349
500
70
food totalSol
hotdo d
500
g
SQL: Aggregate Functions
Are used to provide summarization information for
SQL statements, which return a single value.
COUNT(attr)
SUM(attr)
MAX(attr)
MIN(attr)
AVG(attr)
Note: when using aggregate functions, NULL values
are not considered, except in COUNT(*) .
SQL: Aggregate Functions (cont.)
FoodCart
date
02/25/0
8
02/26/0
8
02/26/0
8
food
pizza
hotdog
pizza
sold
349
500
70
COUNT(attr) -> return # of rows that are not null
Ex: COUNT(distinct food) from FoodCart; -> 2
SUM(attr) -> return the sum of values in the attr
Ex: SUM(sold) from FoodCart; -> 919
MAX(attr) -> return the highest value from the attr
SQL: Aggregate Functions (cont.)
FoodCart
date
02/25/0
8
02/26/0
8
02/26/0
8
food
pizza
hotdog
pizza
sold
349
500
70
MIN(attr) -> return the lowest value from the attr
Ex: MIN(sold) from FoodCart; -> 70
AVG(attr) -> return the average value from the attr
Ex: AVG(sold) from FoodCart; -> 306.33
Note: value is rounded to the precision of the datatype