5. A brief DB2 History 1983 DB2 v1 ships 1993 DB2 for OS/2 and Aix 1994 DB2 for MVS v4 introduces Data Sharing 1996 DB2 UDB - multimedia, web-ready, cross-platform (non-mainframe) 1999 DB2 UDB for OS/390 (v6.1) 2001 DB2 UDB for OS/390 and z/OS (v7.1) 2004 DB2 UDB for z/OS (v8.1) 2004 DB2 UDB for LUW (v8.2)
6. The Guts of DB2 Directory Catalog Tables Logs BSDS DB2 User Thread EDM Pool Sort Pool Buffer Pools RID Pool Temporary Database Working Storage Program Logic
7. The Guts of DB2 Address Space Name Functions DBAS Database Services Address Space SSAS System Services Address Space IRLM Intersystem Resource Lock Manager DDF Distributed Data Facility SPAS Stored Procedure Address Space(s)
12. SQL SQL DCL DDL DML GRANT REVOKE CREATE ALTER DROP SELECT UPDATE INSERT DELETE
13. Results Sets DB2 Request sent to database Multiple rows returned as a results set
14. Authorities SYSADM Systems Administrator Can do anything to everything DBADM Database Administrator Can do anything to a database User-based Select, Update, Insert, Delete access on permissions tables; Execute, Bind access on packages; utilities/operations upon objects. SYSMAINT/SYSCTRL Other administrative DBMAINT/DBCTRL functions in DB2 }{
16. DB2’s VSAM data sets M enu O ptions V iew U tilities C ompilers H elp ----------------------------------------------------------------------------- DSLIST - Data Sets Matching FIGDB2.DSNDBC.DFIGE0H.*ABORT* Row 1 of 6 Command ===> Scroll ===> CSR Command - Enter "/" to select action Tracks %Used XT Device ----------------------------------------------------------------------------- FIGDB2.DSNDBC.DFIGE0H.SABORT.I0001.A001 FIGDB2.DSNDBD.DFIGE0H.SABORT.I0001.A001 1950 ? 31 3390 FIGDB2.DSNDBC.DFIGE0H.XABORT0.I0001.A001 FIGDB2.DSNDBD.DFIGE0H.XABORT0.I0001.A001 120 ? 6 3390 FIGDB2.DSNDBC.DFIGE0H.IABORT1.I0001.A001 FIGDB2.DSNDBD.DFIGE0H.IABORT1.I0001.A001 16 ? 15 3390 *************************** End of Data Set list **************************** Partition number Tablespace/Index name Database name High-level qualifier
20. Data types SMALLINT/INTEGER CHARACTER/VARCHAR GRAPHIC/VARGRAPHIC/DBCLOB CHARACTER LARGE OBJECT/CLOB BINARY LARGE OBJECT/BLOB DECIMAL/NUMERIC FLOAT/REAL/DOUBLE DATE TIME TIMESTAMP ROWID
21. User-Defined Data types The user-defined DISTINCT TYPE is based on one of the previous basic data types. E.g. CREATE DISTINCT TYPE AUDIO AS BLOB (1M); CREATE DISTINCT TYPE VIDEO AS BLOB (1M); Then, your CREATE TABLE statement might look like this: CREATE TABLE VIDEO_CATALOG (VIDEO_NUMBER CHAR(6) NOT NULL, VIDEO_SOUND AUDIO, VIDEO_PICS VIDEO, ROW_ID ROWID NOT NULL GENERATED ALWAYS);
26. Check Constraints Data value restrictions on the contents of a column. EXTN CHAR(4) CONSTRAINT NUMBER CHECK (EXTN BETWEEN ‘0000’ AND ‘9999’) CONSTRAINT BYPASS CHECK(BYPASS IN ('Y', 'N') AND (BYPASS = 'N' OR (BYPASS = 'Y’ AND REASON IS NOT NULL)))
27. Triggers CREATE TRIGGER UPD_SALARY BEFORE UPDATE OF SALARY ON EMP FOR EACH ROW MODE DB2SQL WHEN (NEW.SALARY>(OLD.SALARY*1.5)) BEGIN ATOMIC SIGNAL SQLSTATE ‘75001’ (‘Raise exceeds 50%’); END; CREATE TRIGGER RISK.GRT_DEL AFTER DELETE ON RISK.GENERIC FOR EACH ROW MODE DB2SQL BEGIN ATOMIC INSERT INTO RISK.AUDIT_TRAIL (TABLE_NAME, ACTION, GRT, GRTNAME, GRTDESC) VALUES ('GENERIC','D', OLD.GRT, OLD.GRTNAME, OLD.GRTDESC); END;
77. Programming with cursors …and so on until the last line of the results set… …the next FETCH returns an SQLCODE of +100, with no rows returned. Host variables may or may not contain valid data at this point, so ALWAYS check your SQLCODE before processing your data! Results Set . . .
78. Programming with cursors Always clean up your cursors! Data processing is finalised, the cursor is closed and all your results set storage is cleared up once you issue the CLOSE C1 statement, after your FETCH processing gets the +100 SQLCODE signifying the end of the results set.