Unit 2 SQL PL SQL
Unit 2 SQL PL SQL
MANAGEMENT
SYSTEM By
[DBMS]
Prof. Vinay
S.Nalawade
SQL & PL-SQL
SQL Introduction
SQL
Characteristics
•ANSI & ISO
•Manipulation
•Common English Syntax
•Either upper or Lower cases
•Declarative not Procedural
•Powerful
SQL
Advantages
•High Speed
•Portable
•Well defined Standard
•Supports Object Based
Programming
•Used with all DBMS vendors
SQL
Advantages
•Used for RDBMS
•Easy to learn & understand
•Complete Language for a
database
•Dynamic
•Programming ,Interactive
SQL
Advantages
•Multiple data views
•Used in Internet
SQL
Data types
•CHAR
•VARCHAR
•BOOLEAN
•SMALLINT
•INTEGER or INT
•DECIMAL
SQL
Data types
•NUMERIC
•FLOAT
•DATE
•TIME
SQL
Literals
•NUMERIC
•CHARACTERS
•STRINGS
•DATE
•TIME
SQL
•DDL –
CREATE,ALTER,DROP,RENAME
•DML –
SELECT,INSERT,UPDATE,DELETE
•DCL –
GRANT,REVOKE
•TCL -
BEGIN,COMMIT,ROLLBACK
SQL OPERATORS
•Arithmetic
•Comparison
•Logical
•Bitwise
•Compound
SQL
•Creating Table
•Modifying Table
•Deleting Table
SQL VIEWS
•Creating Views
•Updating Views
•Dropping Views
SQL INDEX
•Single Column Index
•Composite Index
•Unique Index
•Implicit Index
SELECT Overall Form
SELECT <ATTRIBUTE AND FUNCTION
LIST>
FROM <TABLE LIST>
[WHERE <CONDITION>]
[GROUP BY <GROUPING
ATTRIBUTE(S)>]
[HAVING <GROUP CONDITION>]
[ORDER BY <ATTRIBUTE LIST>];
Use of DISTINCT,ALL
RENAME
Use of AS
SET OPERATIONS
UNION , INTERSECTION ,
MINUS
String functions
ORDER BY,GROUP
BY,HAVING
PREDICATES
•Comparison Predicates
•BETWEEN Predicate
•IN Predicate
•Outer Join
- Left Outer Join
- Right Outer Join
- Full Outer Join
Position(posting_no, skill)
Duty-allocation(posting_no, emp_no,
day, shift)
Employee Position
Duty-allocation
- SELECT *
FROM DUTY_ALLOCATION
Employee Position
Duty-allocation
Duty-allocation
Duty-allocation
Duty-allocation
Duty-allocation
Duty-allocation
Duty-allocation
- SELECT EMP_NO
FROM DUTY_ALLOCATION
WHERE DAY = 19860419 OR DAY = 19860420.
Employee Position
Duty-allocation
Duty-allocation
Duty-allocation
Duty-allocation
Duty-allocation
Duty-allocation
Duty-allocation
Duty-allocation
Duty-allocation
Works(emp_name, company_name,
salary)
Company(company_name, city)
Manages(emp_name,
manager_name)
Employee Company
Works Manages
- SELECT EMPLOYEE_NAME
FROM WORKS
WHERE COMPANY_NAME=‘FBC’
Employee Company
Works Manages
Works Manages
Works Manages
- SELECT W.EMPLOYEE_NAME
FROM WORKS AS W, EMPLOYEE AS E,
COMPANY AS C
WHERE
E.EMPLOYEE_NAME=W.EMPLOYEE_NAME AND
Employee Company
Works Manages
- SELECT E.EMPLOYEE_NAME
FROM EMPLOYEE AS E,EMPLOYEE AS T,
MANAGES
WHERE E.EMP_NAME=MANAGES.EMP_NAME
AND E.STREET=T.STREET AND E.CITY=T.CITY
Employee Company
Works Manages
- (SELECT EMPLOYEE_NAME
FROM EMPLOYEE)
MINUS
(SELECT EMPLOYEE_NAME
FROM WORKS
WHERE COMPANY_NAME = ‘FBC’)
Employee Company
Works Manages
- SELECT EMPLOYEE_NAME
FROM WORKS
WHERE SALARY > SELECT MAX(SALARY)
FROM WORKS
WHERE
COMPANY_NAME = ‘FBC’)
Employee Company
Works Manages
- SELECT T.EMPLOYEE_NAME
FROM WORKS T
WHERE SALARY > (SELECT AVG(S.SALARY)
FROM WORKS S
WHERE
PL/ SQL
•4GL(Supports OOPS).
•Syntax:
Declaration
BEGIN
Block of stmts;
END;
/
•Demos:
SQL>
BEGIN
INSERT INTO STUDENT
VALUES(6,'Rahul');
COMMIT;
END;
/
PL/ SQL
SQL>
DECLARE
X NUMBER(4);
BEGIN
X:=56;
INSERT INTO STUDENT
VALUES(X,'AMEYA');
END;
/
PL/ SQL
SQL>
DECLARE
X NUMBER(4);
BEGIN
SELECT ID INTO X
FROM STUDENT
WHERE NAME = ‘Rahul';
INSERT INTO STUDENT
VALUES(X,'Om');
END;
/
PL/ SQL
SQL>
DECLARE
X STUDENT % ROWTYPE;
BEGIN
SELECT * INTO X
FROM STUDENT
WHERE ID=56;
INSERT INTO STUDENT
VALUES(X.ID,X.NAME);
END;
/
PL/ SQL
SQL>
DECLARE X NUMBER(4):=2;
BEGIN
WHILE X<6
LOOP
INSERT INTO STUDENT
VALUES(X,'GUEST');
X:=X+1;
END LOOP;
END;
/
PL/ SQL
•Demo: Loops in PL/SQL block
SQL>
DECLARE
X NUMBER(4):=2;
BEGIN
INSERT INTO STUDENT VALUES(X,'A');
GOTO ABC;
<<PQR>>
INSERT INTO STUDENT VALUES(X,'C');
X:=X+1;
<<ABC>>
INSERT INTO STUDENT VALUES(X,'B');
IF X < 4 THEN
GOTO PQR;
END IF;
END;
PL/ SQL
•Demo: PL/SQL Sub - block
SQL>
DECLARE
Z NUMBER(4):=2;
BEGIN
INSERT INTO STUDENT VALUES(Z,'BEFORE
SUB');
DECLARE
A NUMBER(4):=3;
BEGIN
INSERT INTO STUDENT VALUES(A,'IN SUB');
END;
INSERT INTO STUDENT VALUES(Z,'AFTER
SUB');
END;
PL/ SQL CURSORS
1)Explicit Cursors
- Programmer created.
•Events are
BEFORE INSERT , AFTER INSERT
BEFORE DELETE , AFTER DELETE
BEFORE UPDATE , AFTER
UPDATE
DATABASE TRIGGERS
•Trigger Demo:
•Uses:
- Used to maintain Logs(audit
trails).
•SYSTEM PRIVILEGES
•OBJECT PRIVILEGES
EMBEDDED SQL
•Need
•Host variables
•Advantages
•Working
•Syntax
•Advantages
•Working
•Syntax