Sie sind auf Seite 1von 13

1

DB2(DATABASE 2)

 Relational Database Management System(RDBMS)


 Universal Database(UDB)

This is one of the sub systems in Mainframes.


Any number of Sub Systems can be created in Mainframes as per the requirements.

Hierarchy of DB2 Sub system:

Database Group

Storage group1 Storage group2 Storage group3

TS1 TS2 TS3 TS4 INS1 TS5 INS2 TS6 TS7

T1 T2 T3 IND1 IND2 V1 V2

Rows Cols Index1 Index2 Rows Cols

TS – Table Space INS – Index Space


T – Table IND – Index
V – view

Maximum storage space for a Table Space is 64 million bytes.


SQL can be used to Create, Delete, and Update and Query the Objects

SQL queries can be executed by the following techniques


1. Application programming
2. Tools like QMF (Query Management Facility)
SPUFI (SQL Processor User File Input)
2

FILE -AID
DATA TYPES :

Integer -- 4 bytes
Small int -- 2 bytes
Char(n) – N bytes
Varchar(n) – N+2 bytes
Graph(n) – 2n bytes
Vargraph(n)– 2N+2 bytes
Date – 10 bytes
Time – 8 bytes
Timestamp – 26 bytes

NORMALIZATION :

Arranging the data in the Database in organized manner.


1NF: Avoiding multiple values or set of values in one column.
2NF: Avoiding repeated rows by defining primary key.
3NF: Separating functionally dependent and non-functionally dependent columns
Primary key :-

 Uniquely identified row


 Which can be formed with single or multiple columns
 Does not allow duplicate records
 Cannot contain Null

Foreign key : -

 Another identifier which can be used to build relationship between the tables
 Must be the primary key of parent table with same data type & length
 Can consists of single or multiple columns
 Can contain Null or duplicate rows
 Multiple foreign keys can be defined in one table
 Foreign key should be defined at the time of defining child table in the create
command by “WITH REFERENCES” option.

CREATE TABLE ITEM(


INO INTEGER,
INAME CHAR(15),
CNO INTEGER,
PRIMARY KEY IS INO,
FOREIGN KEY IS CNO
WITH REFERENCES CUST)
3

REFERENCE INTEGRITY:
The relationship between two tables which can be achieved by defining foreign
key.

PRIMARY KEY FOREIGN KEY

1. Cannot contain Null values or duplicate 1. Can contain NULL values or


rows duplicate rows
2. Cannot be updated 2. Can be updated
3. Can be defined as a foreign key 3. which must be primary key of
in other table another table.
4. only one primary key can be defined for 4. multiple foreign keys can be
one table defined for one table.

SQL(Structured Query Language)

 DDL (Data Definition Language)


Create, alter, drop
 DML (Data Manipulation Language)
Insert, update, select & delete
 DCL (Data Control Language)
Grant, Revoke
 TCL (Transaction Control Language)
Commit, Rollback
Static insertion: Insert into cust(cno, cname, cloc) values (10, “xyz”, “hyd”)
Dynamic insertion: Insert into cust(cno, cname, cloc) values (v1, v2, v3)
v1,v2, v3 are host variables to be defined in working storage section.
Delete from cust
Delete from cust where cno = 20
Update cust set cname = “ xyz” where cno = 20
Select cno,cname from cust
Select * from cust
Select * from, cust where cno = v1
Select * from cust wehre cno=v1 and cname =v2
Select * from cust where cno between 20 and 60
Select * from cust where cname like “%y%”
Column functions:
Select max(sal) from emp
Select min(sal) from emp
Select avg(sal) from emp
Select sum(sal) from emp
4

To avoid duplicate rows : select distinct cno,cname from cust


To get total no. of rows : select count(*) from cust

SUBQUERY:

 Query within Query


 First inner query executes & out query executes based on the result of inner query
 Max of 15 sub queries can be coded
 To simplify sub queries, logic can be built with combination of COBOL + SQL
statements

To retrieve second maximum salary from emp table:

Select max(sal) from emp where sal <(select max(sal) from emp)

To retrieve third maximum salary from emp table:

Select max(sal) from emp


where sal < (select max(sal) from emp
Where sal < (select max(sal) from emp))

CO-RELATED SUBQUERY:

 For every row of outer query, inner query must executes at least once
 First outer query executes & then inner query executes
 Practical examples : to fine top 2,3 or n salaries

Select a. sal from emp a


where 0 = (select count(*) from emp b
Where a.sal < b.sal)

0 -- max
1 – 2nd max
2 – 3rd max
3 – 4th max

DCLGEN :

Declaration Generator . a tool to generates the equivalent COBOL variables.


Which can be used to generate host variables with equivalent data types of DB2
columns.

DCLGEN
5

DB2 Table COBOL

Host variables:

 Can be used to pass the data from cobol program to DB2 table or DB2 table to
COBOL program.
 When host variables are coded with sql statements it must be prefixed with :
like :hv-cname.
 Table name must be supplied as input to DCLGEN & partition dataset should be
as output.
 After creating DCLGEN variables which must be copied to application program
in WORKING-STORAGE SECTION by using include command i.e.
Exec sql
Inlcude custDCL
End-exec.
 Include & copy have the same functionality

SQLCODE :

 Predefined numeric number which can be used to check SQL statements for
successful , unsuccessful execution.
 SQLCODE can be stored in SQLCA(SQL Communication Area)
 Copy SQLCA in WORKING-STORAGE SECTION
 System defined variable
 Evaluate or if statement must be coded to check the SQLCODE immediately after
SQL statement.
 SQLCODE =00 ---- successful
= +100 --- end of table or record not found.

Sample program:

WORKING-STORAGE SECTION.

EXEC SQL
INCLUDE SQLCA
END-EXEC

EXEC SQL
INCLUDE CUSTDCL
END-EXEC.
01 WS-SQL-CODE PIC S9(4)
88 88-SUCCESS VALUE 00
88 88-NOTFOUND VALUE 100
6

88 88-FORIENG KEY VOILATION VALUE –532


88 88- MULITPLE ROW VALUE –811

PROCEDURE DIVISION.

UPDATE CUST
SET CNAME = :HV-CNAME
WHERE CNO=:HV-CNO
MOVE SQLCODE TO WS-SQLCODE.
EVALUE WS-SQL-CODE
WHEN 88-SUCCESS
DISPLAY “SUCCESSFULLY UPDATED”
WHEN 88-NOTFOUND
DISPLAY “ RECORD NOT FOUND”
WHEN 88-FOREIGNKEYVOILATION
DISPLAY “ FOREIGN KEY VOILATION”
WHEN OTHER
DISPLAY “ ERROR OCCURRED IN UPDATE”
STOP RUN
END-EVALUATE.
STOP RUN.

CURSOR:

To retrieve multiple rows for a given condition.

Let us take the following example:

Exec sql
Select cno,cname,cloc
into :hv-cno,:hv-cname,:hv-cloc
from cust where cloc =:hv-cloc
end-exec.
If the condition satisfy for one row it executes successfully. If the condition satisfy for
multiple rows it wont work. It returns –811 as SALCODE. For this we use cursors.

 Cursors can be used to retrieve multiple rows for a given condition


 Cursor cycle is declare open fetch close
 Declare: declares or define name for cursor against a table
Can be coded in working-storage section or procedure division
For better readability code in working-storage section.
 Open: can be used to open a cursor with rows for a given conditions inbuffer.
Retireves data in to buffer
Must be coded in the procedure division only
7

Where condition value must be supplied before opening a cursor.


 Fetch: can be used to retrieve rows one by one from buffer into application prog.
Which must be coded in procedure divison after open.
Must be coded with hostvariables
No of host variables in fetch & no of columns in the declare must be same
Canbe executed multiple times using perform. i.e. till EOT or record not
found which can be identified by SQLCODE = 100

 Close : used to close the cursor


Must be coded in procedure division only
Must be executed after open statement.

Practical examples : Can be used to retrieve the data based on loc, date, products.

EXEC SQL
DECLARE C1 CURSOR FOR
SELECT CNO,CNAME FROM CUST
WHERE CNAME=:HV-CNAME
END-EXEC.
EXEC SQL
OPEN C1.
END-EXEC.
PERFORM UNTIL SQLCODE= 100
EXEC SQL
FETCH C1 INTO :HV-CNO,:HV-CNAME
END-EXEC
END-PERFORM.
EXEC SQL
CLOSE C1
END-EXEC

For Update of where current of:

 Which can be used to update row by row when multiple rows are satisfied.
 Before update cursor has to be declared with for update of column option.
 Where current of cursor name option must be used with update command
 Withhold: this option can be used to remain cursors open even after commit
statement.
 Must be coded with cursor statement

EXEC SQL
DECLARE C2 CURSOR WITH HOLD FOR
SELECT CNO,CNAME FROM CUST
WHERE CNAME=:HV-CNAME
FOR UPDATE OF CNAME
END-EXEC.
8

EXEC SQL
OPEN C1.
END-EXEC.
EXEC SQL
FETCH C2 INTO :HV-CNO,:HV-CNAME
END-EXEC
EXEC SQL
UPDATE CUST SET CNAME=”ABC” WHERE CURRENT OF C2.
EMD=EXEC.
EXEC SQL
CLOSE C1
END-EXEC

INDEX:

 Index allows duplicate values


 unique index doesn’t allow duplicate rows
 cross reference between index table & table is called clustered index.
 Create index in1 on cust(cno)

PRIMARY KEY INDEX UNIQUE INDEX

1. Uniquely identified row. Record identified based on Records identified based on


the index the index
2. No duplicated rows, no Duplicate rows, null values No duplicate rows
null values are allowed
3. Can consist of single or Dan consist of single or Can consist of single or
multiple columns multiple columns columns
4. Which will be stored in Which is stored in SYSINDEX Which is stored in sysindex
SYSKEYS.

VIEWS:

CREATE VIEW CVIEW(VCNO,VCNAME,VCLOC) AS


(SELECT CNO,CNAME,CLOC FROM CUST WHERE
CNAME LIKE “%X%)
 Logical representation of the table
 Stored in virtual memory
 Can be derived from single table or multiple tables
 Views are updateable if they are derived from single table without any column
functions , group by
 Multiple views can be generated from single table.
 Views are stored in sysviews

Advantages of Views:
9

 Data security
 Data correctness
 Logical data independence
 Part of the information can be visible to the sers
 Accessing can be faster.
DELETE RULES:

 Delete rules can be applied for delete command against Database.


 Delete rules are 3 types
1. on delete cascade – all matching child rows will be deleted
automatically when we delete parent row.
2. on delete restrict – all matching rows will be restricted when we
delete parent row which is default.
3. on delete set null – all matching child row will be set to null
when we delete parent row.

UNION:

 UNION is used to concatenate rows into one table from single or multiple tables.
 Rules : no. of columns & data type of both the queries must be same. column
may be different
 UNION can be used to eliminate duplicate rows
 UNION ALL retrieved duplicate rows also.

SELECT CNO,CNAME FROM CUST WHERE CNO=10


UNION/UNIONALL
SELECT CNO,CNAME FROM ITEM WHERE INO=20

JOINS:

 JOINS can be used to concatenate columns from one table or multiple tables.
 JOIN types are :
1. left outer join : which can be used to retrieve matching, non
matching rows from leftside table
2. right outer join: which can be used to retrieve matching, non
matching rows from right side table.
3. full outer join: which can be used to retrieve matching, non
matching rows from both the tables.
4. self join or inner join : can be achieved by defining alias for the
table.

EXPLAIN :

It can be used to evaluate the performance of SQL queries.


It can be used to tune SQL queries.
Input is SQL queries and output is plan-table.
10

For every SQL query one plan-table will generate.


All plan-tables are stored in physical seq file.

Plan table

Query table no.of index no.of indexs owner join type groupby cputime
block no name cols

1 cust 10 in1 1 custc self y 10 min

DB2 CATALOG:

 Consists of Table pace, Index space, Index, unique index, Views, Alias,
synonyms, keys.
 When we create table, the details of table are entered in Systable automatically.

SysIBM.SYSTABLE

Table Name No.of cols Owner name Created by Created date Created time
Cust 10 Abc Xyz 02-apr-2004 0850
Item 15 Mno Rst 06-apr-2004 1020

SysIBM.SYSINDEX

Index Table No.of Owner Created Created Created


name Name cols name by date time
In1 Cust 10 Abc Xyz 02-apr- 0850
2004
In2 Item 15 Mno Rst 06-apr- 1020
2004

SysIBM.SYSCOLS

Col name Table name Index name Primary key Foreign key
Cno Cust In1 Cno -----
Cname Cust In1 Cno
Cloc Cust In2 cno
Ino Item Ino Cno
Iname Item Ino Cno
Ides Item Ino cno
11

SysIBM.SYSKEYS: All primary & foreign keys.

Grant table syscols to all


Grant table syscols(select/delete/update) to user1,user2
Revoke table syscols from all.

CATALOG:

SYSTABLE, SYSCOL, SYSKEYS, SYSINDEX, SYSPKS, SYSFKS, SYSALIAS,


SYSSYNONYMS, SYSINDEX, SYSVIEWS,SYSTABLESPACE, SYSINDEXSPACE.

PRECOMPILATION PROCESS:

Pre compiler takes COBOL+DB2 program as input & generates DBRM which will be
stored in userdefined PDS as separate member.

DSNHPC --- IBM supplied utility used for precompilation.

Precompiler functions:

 Separates SQL & COBOL statements


 Check SQL syntaxs
 Replace all SQL statements with host language call statements in the compiled
program.
 Which generates timestamp tokens

BIND:

BIND takes DBRM as input & generate package & application plan. The package will
be loaded to the directory. Plan will be loaded to sysplans.

Bind functions:

 Checks authorization for SQL statement


 Checks the syntax errors of SQL statements like
1. Missing co name in the select list & used in order by & group by
2. Mismatch columns host variables
3. Data type mismatch of columns & host variables
4. Indicator variables not declared
5. Data truncation.

BIND SUBCOMPONANTS/PARAMETERS:

1. OPTIMIZER:
 It generates optimized access path by analyzing the statistics of SQL
statements which will be stored.
12

 RUNSTATS utility is one of the ISPF panel option which is stored in DB2
defaults option.
 Optimized path is stored in package which is not executable module.

2. ISOLATION LEVEL:
Which can be used to lock the database at the time of executing SQL statements.

Cusrsor stability(CS): It acquires the address of a row. Sets the pointer to a


specified row based on SQL query & acquires the lock against that row. Then
releases the klock after the transaction before commit.

Repeatable Read(RR): which acquires the address of a row & acquire lock
against the page(1 page -4024 bytes) & then released the lock after the commit
statements.

Default is RR.

3. RUNTIME SUPERVISOR:
Which is to oversee execution of SQL statements.
Statistics like no of tables, columns, indexes, keys

4. PLAN/APPLICATION PLAN:
It consists of executable module which is actual output of SQL statements which
must be specified in the RUNJCL to execute SQL queries if the program is batch
program. If the program is online which must be specified in RCT. Application
plan will be loaded to load module with time stamp tokens.

COBOL COMPILATION:
The compiler takes COBOL statement as input to generate object program, &
loaded to the load module by line/edit with time stamp tokens.
13

COBOL + DB2

PRECOMPILER

COBOL DBRM

OBJ PROG BIND

PACKAGE

PLAN

OBJ PROG
APPL PLAN
Run time
supervisor

UTILITIES USED:

DSNHPC : system utility pre compiler.


IKJEFT01 or IKJEFT01B --- BIND
IGYCRCTL or IKFCBLOO --- COBOL compilation
IEWL or HEWL --- link/edit

Das könnte Ihnen auch gefallen