Categories of SQL Statements
description
Transcript of Categories of SQL Statements
1
Categories of SQL Statements • Data definition statements• Data manipulation statements• Cursor manipulation statements• Cursor optimization statements• Dynamic management statements• Data access statements• Data integrity statements• Optimization statements• Routine Definition statements• Auxiliary statements• Client/server connection statements• Optical subsystem statements
2
Data Definition StatementsALTER FRAGMENT ALTER FUNCTIONALTER INDEX ALTER PROCEDUREALTER ROUTINE ALTER TABLECLOSE DATABASE CREATE AGGREGATECREATE CAST CREATE DATABASECREATE DISTINCT TYPE CREATE EXTERNAL TABLECREATE INDEX CREATE OPAQUE TYPECREATE PROCEDURE CREATE PROCEDURE FROMCREATE ROLE CREATE ROW TYPECREATE SCHEMA CREATE SYNONYMCREATE TABLE CREATE TEMPORARY TABLECREATE TRIGGER CREATE VIEWDATABASE DROP AGGREGATEDROP CAST DROP DATABASEDROP INDEX DROP PROCEDUREDROP ROLE DROP ROW TYPEDROP SYNONYM DROP TABLEDROP TRIGGER DROP VIEWRENAME COLUMN RENAME DATABASERENAME TABLE TRUNCATE
3
Data Manipulation Statements
DELETE INSERT
LOAD SELECT
UNLOAD UPDATE
Cursor Manipulation Statements
CLOSE DECLARE
FETCH FLUSH
FREE OPEN
PUT SET AUTOFREE
Optimization Statements
SET AUTOFREE
SET DEFERRED_PREPARE
4
Dynamic Management StatementsALLOCATE COLLECTION ALLOCATE DESCRIPTORALLOCATE ROW DEALLOCATE COLLECTIONDEALLOCATE DESCRIPTOR DEALLOCATE ROWDESCRIBE EXECUTEEXECUTE IMMEDIATE FREEGET DESCRIPTOR PREPARESET DEFERRED_PREPARE SET DESCRIPTOR Data Access StatementsGRANT GRANT FRAGMENTLOCK TABLE REVOKEREVOKE FRAGMENT SET ISOLATIONSET LOCK MODE SET ROLESET SESSION AUTHORIZATION SET TRANSACTIONSET TRANSACTION MODE UNLOCK TABLE
5
Data Integrity Statements
BEGIN WORK COMMIT WORK
ROLLBACK WORK SET DATABASE OBJECT MODE
SET LOG SET PLOAD FILE
SET TRANSACTION MODE START VIOLATIONS TABLE
STOP VIOLATIONS TABLE
Optimization Statements
SET EXPLAIN SET OPTIMIZATION
SET PDQPRIORITY SET RESIDENCY
SET SCHEDULE LEVEL SET STATEMENT CACHE
UPDATE STATISTICS
6
Routine Definition Statements
ALTER FUNCTION ALTER PROCEDURE
ALTER ROUTINE CREATE FUNCTION
CREATE FUNCTION FROM CREATE PROCEDURE
CREATE PROCEDURE FROM CREATE ROUTINE FROM
DROP FUNCTION DROP PROCEDURE
DROP ROUTINE EXECUTE FUNCTION
EXECUTE PROCEDURE SET DEBUG FILE TO
7
Auxiliary Statements
INFO OUTPUT
GET DIAGNOSTICS SET DATASKIP
WHENEVER
Client/Server Connection Statements
CONNECT DISCONNECT
SET CONNECTION
Optical Subsystem Statements
ALTER OPTICAL CLUSTER CREATE OPTICAL CLUSTER
DROP OPTICAL CLUSTER RELEASE
RESERVE SET MOUNTING TIMEOUT
8
Data Type
9
Data Type
10
CREATE DATABASE
11
CREATE SCHEMA
12
CREATE TABLE
13
CREATE TABLE 1
14
CREATE TABLE 2
15
CREATE TABLE 3
16
CREATE TABLE 4
17
CREATE TABLE 5
18
CREATE INDEX
19
TRIGGER
• A mechanism that resides in the database.• It is available to any user who has permission to use it.• Specifies that when a particular action, an insert, a select, a delete, or an update, occurs on a particular table, the database server should automatically perform one or more additional actions.• The additional actions can be INSERT, DELETE, UPDATE, EXECUTE PROCEDURE or EXECUTE FUNCTION statements.
20
CREATE TRIGGER 1
21
CREATE TRIGGER 2
22
CREATE TRIGGER 3
23
CREATE TRIGGER 4
24
CREATE TRIGGER 5
25
CREATE PROCEDURE 1
26
CREATE PROCEDURE 2
27
CREATE PROCEDURE 3
28
Example 1:
CREATE TRIGGER upqtyUPDATE OF quantity ON itemsBEFORE (EXECUTE PROCEDURE upd_items_p1)
Example 2:
CREATE PROCEDURE upd_items_p1()DEFINE GLOBAL old_qty INT DEFAULT 0;LET old_qty = (SELECT SUM(quantity) FROM items);
END PROCEDURE;
CREATE PROCEDURE upd_items_p2()DEFINE GLOBAL old_qty INT DEFAULT 0;DEFINE new_qty INT;LET new_qty = (SELECT SUM(quantity) FROM items;IF new_qty > old_qty * 1.50 THEN
RAISE EXCEPTION –746, 0, ‘Not allowed / rule violation;’END IF
END PROCEDURE;
29
Example 3: CREATE TRIGGER up_itemsUPDATE OF quantity ON itemsBEFORE(EXECUTE PROCEDURE upd_items_p1())AFTER(EXECUTE PROCEDURE upd_items_p2());
30
Example 4: FOR EACH ROW clause, REFERENCING clause
CREATE TABLE log_record(item_num SMALLINT,ord_num INTEGER,username CHAR (8),update_time DATETIME YEAR TO MINUTE,old_qty SMALLINT,new_qty SMALLINT);
CREATE TRIGGER upqtyUPDATE OF quantity ON itemsREFERENCING OLD AS pre_upd NEW AS post_updFOR EACH ROW
(INSERT INTO log_record VALUES (pre_upd.item_num, pre_upd.order_num, USER, CURRENT year to fraction(3), pre_upd.quantity, post_upd.quantity));
31
Example 5: WHEN condition
CREATE TRIGGER up_priceUPDATE OF unit_price ON stockREFERENCING OLD AS pre NEW AS postFOR EACH ROW WHEN (post.unit_price > pre.unit_price * 2)
(INSERT INTO warn_tab VALUES (pre.stock_num, pre.order_num, pre.unit_price, post.unit_price, CURRENT))
32
Example 6: passing data to SPL procedure
CREATE TRIGGER upd_totprUPDATE OF quantity ON itemsREFERENCING OLD AS pre_upd NEW AS post_updFOR EACH ROW(EXECUTE PROCEDURE calc_totpr(pre_upd.quantity,
post_upd.quantity, pre_upd.total_price) INTO total_price)
CREATE PROCEDURE calc_totpr(old_qty SMALLINT, new_qty SMALLINT, total MONEY(8)) RETURNING MONEY(8);DEFINE u_price LIKE items.total_price;DEFINE n_total LIKE items.total_price;LET u_price = total / old_qty;LET n_total = new_qty * u_price;RETURN n_total;
END PROCEDURE
33
Zdroje:Informix Dynamic Server 2000, Product Documentation