0% found this document useful (0 votes)
39 views8 pages

DB2

The document describes how to create tables in a database with different data types and constraints. It includes examples of creating tables, inserting data, updating records, deleting records, and performing queries. Key information covered includes data types, primary keys, foreign keys, indexes, identity columns, and date/time formats.

Uploaded by

oussama achouri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views8 pages

DB2

The document describes how to create tables in a database with different data types and constraints. It includes examples of creating tables, inserting data, updating records, deleting records, and performing queries. Key information covered includes data types, primary keys, foreign keys, indexes, identity columns, and date/time formats.

Uploaded by

oussama achouri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 8

Employee Table =

Emp Id 9(6) NUMERIC(6) PIC S9(6) COMP-3


Emp Name X(15) CHAR(15) PIC X(15)
Emp DOB 9(08) DATE PIC X(10) = YYYY-MM-DD
Emp Basic 9(5)V99 DECIMAL(7,2) PIC S9(5)v99 COMP-3
Emp HRA 9(5)V99 DECIMAL(7,2) PIC S9(5)v99 COMP-3
Emp Desg X(10) CHAR(10) PIC X(10)
Emp Loc X(10) CHAR(10) PIC X(10)

DECIMAL(m,n) PIC S9(m-n)V9(n) COMP-3

S9(4) COMP SMALLINT -2**15 to 2**15 - 1


S9(8) COMP INTEGER -2**31 to 2**31 - 1

CREATE TABLE EMPLOYEE_TABLE


(EMP_ID NUMERIC(6)
,EMP_NAME CHAR(15)
,EMP_DOB DATE
,EMP_BASIC DECIMAL(7,2)
,EMP_HRA DECIMAL(7,2)
,EMP_DESG CHAR(10)
,EMP_LOC CHAR(10))
IN DBMATE1.TCAPGAnn ; where nn = 2 digit of your TSO ID
Database.Tablespace

INSERT INTO EMPLOYEE_TABLE


(EMP_ID ,EMP_NAME ,EMP_DOB ,EMP_BASIC ,EMP_HRA ,EMP_DESG ,EMP_LOC)
VALUES(333333, 'SHARATH KUMAR ', '2000-03-03', 30000.30, 3000,
'ANALYST ', 'HYDERABAD ') ;
INSERT INTO EMPLOYEE_TABLE
(EMP_ID ,EMP_NAME ,EMP_DOB ,EMP_BASIC ,EMP_HRA ,EMP_DESG ,EMP_LOC)
VALUES(444444, 'STUTI SAH ', '2000-04-04', 40000.40, 4000,
'ANALYST ', 'UTTARAKAND') ;
INSERT INTO EMPLOYEE_TABLE
(EMP_ID ,EMP_NAME ,EMP_DOB ,EMP_BASIC ,EMP_HRA ,EMP_DESG ,EMP_LOC)
VALUES(555555, 'ADHIK PANDEY ', '2000-05-05', 50000.50, 5000,
'ANALYST ', 'MUMBAI ') ;

INSERT INTO EMPLOYEE_TABLE


VALUES(999999, 'AMOGH VAIDYA ', '1988-02-29', 90000.90, 9000,
'MF TRAINER', 'BANER PUNE') ;

SELECT * FROM EMPLOYEE_TABLE ;

SELECT * FROM EMPLOYEE_TABLE


WHERE EMP_BASIC > 20000 ;

SELECT * FROM EMPLOYEE_TABLE


WHERE EMP_BASIC BETWEEN 20000 AND 35000 ;

SELECT * will display all the Columns in the Order in which they were created

SELECT EMP_ID, EMP_NAME, EMP_BASIC, EMP_DOB, EMP_HRA, EMP_LOC, EMP_DESG FROM


EMPLOYEE_TABLE

SELECT * FROM EMPLOYEE_TABLE


ORDER BY EMP_DOB ; default is Ascending
ORDER BY EMP_DOB DESC; then it is Descending
SELECT COUNT(*) FROM EMPLOYEE_TABLE ; Total count of Rows in Table

SELECT EMP_ID, EMP_NAME, EMP_BASIC, EMP_HRA, EMP_BASIC + EMP_HRA AS TOTAL_SALARY


FROM EMPLOYEE_TABLE ;

SELECT MIN(EMP_BASIC) AS MIN_BASIC


,MAX(EMP_BASIC) AS MAX_BASIC
,AVG(EMP_BASIC) AS AVG_BASIC
,SUM(EMP_BASIC) AS TOT_BASIC
FROM EMPLOYEE_TABLE ;

DELETE FROM EMPLOYEE_TABLE


WHERE EMP_BASIC > 99000 ; this will Delete All Rows from the Table where
Condition is satisfied

DELETE FROM EMPLOYEE_TABLE ; this will Delete All Rows from the Table

UPDATE EMPLOYEE_TABLE
SET EMP_BASIC = EMP_BASIC * 1.1
,EMP_HRA = EMP_BASIC * 0.1
WHERE EMP_ID = 999999 this will Update All Rows from the Table where
Condition is satisfied

UPDATE EMPLOYEE_TABLE
SET EMP_BASIC = EMP_BASIC * 1.1
,EMP_HRA = EMP_BASIC * 0.1
WHERE EMP_LOC = 'PUNE' this will Update All Rows from the Table where
Condition is satisfied

UPDATE EMPLOYEE_TABLE
SET EMP_BASIC = EMP_BASIC * 1.1
,EMP_HRA = EMP_BASIC * 0.1 ; this will Update All Rows from the Table

SELECT CURRENT DATE AS CURR_DATE


,CURRENT TIME AS CURR_TIME
,CURRENT TIMESTAMP AS CURR_TS
FROM SYSIBM.SYSDUMMY1 ;
---------+---------+---------+---------+---------
CURR_DATE CURR_TIME CURR_TS
---------+---------+---------+---------+---------
2021-09-08 03.31.11 2021-09-08-03.31.11.848207

YYYY-MM-DD HH.MM.SS YYYY-MM-DD-HH.MM.SS.nnnnnn where nnnnnn = micro seconds

DROP TABLE EMP_TABLE ;


CREATE TABLE EMP_TABLE
(EMP_ID NUMERIC(6) NOT NULL PRIMARY KEY
,EMP_NAME CHAR(15)
,EMP_DOB DATE
,EMP_BASIC DECIMAL(7,2)
,EMP_HRA DECIMAL(7,2)
,EMP_DESG CHAR(10)
,EMP_LOC CHAR(10))
IN DBMATE1.TCAPGA17 ;

For creating a Table with a Primary Key -

DROP TABLE EMP_TABLE ;


COMMIT ;
CREATE TABLE EMP_TABLE
(EMP_ID NUMERIC(6) NOT NULL PRIMARY KEY
,EMP_NAME CHAR(15)
,EMP_DOB DATE
,EMP_BASIC DECIMAL(7,2)
,EMP_HRA DECIMAL(7,2)
,EMP_DESG CHAR(10)
,EMP_LOC CHAR(10))
IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX EMP_IDX ON EMP_TABLE(EMP_ID) ;
SELECT * FROM EMP_TABLE ;

Alternate Syntax to Create a Primary Key in the Table -

DROP TABLE EMP_TABLE ;


COMMIT ;
CREATE TABLE EMP_TABLE
(EMP_ID NUMERIC(6) NOT NULL
,EMP_NAME CHAR(15)
,EMP_DOB DATE
,EMP_BASIC DECIMAL(7,2)
,EMP_HRA DECIMAL(7,2)
,EMP_DESG CHAR(10)
,EMP_LOC CHAR(10)
,PRIMARY KEY(EMP_ID))
IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX EMP_IDX ON EMP_TABLE(EMP_ID) ;
======================================================
Using Constraints to restrict the Values that can be inserted for a specific Column
=

DROP TABLE EMP_TABLE ;


COMMIT ;
CREATE TABLE EMP_TABLE
(EMP_ID NUMERIC(6) NOT NULL
,EMP_NAME CHAR(15)
,EMP_DOB DATE
,EMP_BASIC DECIMAL(7,2)
,EMP_HRA DECIMAL(7,2)
,EMP_DESG CHAR(10)
,EMP_LOC CHAR(03)
CONSTRAINT CHK_LOC CHECK
(EMP_LOC IN ('PNQ', 'MUM', 'CHN', 'HYD'))
,PRIMARY KEY(EMP_ID))
IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX EMP_IDX ON EMP_TABLE(EMP_ID) ;
SELECT * FROM EMP_TABLE ;
==================================================================
Using Identity to auto generate the Value of a Primary Key

DROP TABLE CUSTOMER_TABLE ;


CREATE TABLE CUSTOMER_TABLE
(CUST_ID NUMERIC(5) NOT NULL
GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMEMENT BY 1)
,CUST_NAME CHAR(15)
,CUST_DATE DATE
) IN DBMATE1.TCAPGA17 ;
INSERT INTO CUSTOMER_TABLE
(CUST_NAME, CUST_DATE) VALUES('CUST-1', '2021-09-01') ;
INSERT INTO CUSTOMER_TABLE
(CUST_NAME, CUST_DATE) VALUES('CUST-2', '2021-09-02') ;
INSERT INTO CUSTOMER_TABLE
(CUST_NAME, CUST_DATE) VALUES('CUST-3', '2021-09-03') ;
INSERT INTO CUSTOMER_TABLE
(CUST_NAME, CUST_DATE) VALUES('CUST-4', '2021-09-04') ;
INSERT INTO CUSTOMER_TABLE
(CUST_NAME, CUST_DATE) VALUES('CUST-5', '2021-09-05') ;
SELECT * FROM CUSTOMER_TABLE ;
==================================================================
Referential Integrity =
DROP TABLE LOCATION_TABLE ;
COMMIT ;
CREATE TABLE LOCATION_TABLE
(LOC_ID CHAR(03) NOT NULL
,LOC_NAME CHAR(17)
,PRIMARY KEY(LOC_ID)
) IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX LOC_IDX ON LOCATION_TABLE(LOC_ID) ;
--
DROP TABLE EMPLOYEE_TABLE ;
COMMIT ;
CREATE TABLE EMPLOYEE_TABLE
(EMP_ID CHAR(05) NOT NULL
,EMP_NAME CHAR(15)
,EMP_LOC CHAR(03)
,EMP_DOB DATE
,EMP_TECH CHAR(05)
,EMP_EARN DECIMAL(7,2)
,EMP_DEDN DECIMAL(7,2)
,PRIMARY KEY(EMP_ID)
,FOREIGN KEY(EMP_LOC) REFERENCES LOCATION_TABLE(LOC_ID)
) IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX EMP_IDX2 ON EMPLOYEE_TABLE(EMP_ID) ;
SELECT * FROM LOCATION_TABLE ;
SELECT * FROM EMPLOYEE_TABLE ;
--------------------------------------------------------------
DELETE FROM EMPLOYEE_TABLE ;
DELETE FROM LOCATION_TABLE ;
INSERT INTO LOCATION_TABLE VALUES('BGL', 'BENGALURU');
INSERT INTO LOCATION_TABLE VALUES('CHN', 'CHENNAI ');
INSERT INTO LOCATION_TABLE VALUES('MUM', 'MUMBAI ');
INSERT INTO LOCATION_TABLE VALUES('HYD', 'HYDERABAD');
INSERT INTO LOCATION_TABLE VALUES('PNQ', 'PUNE ');
SELECT * FROM LOCATION_TABLE ;
--
INSERT INTO EMPLOYEE_TABLE
VALUES('A3333', 'EMP NAME - A33', 'CHN', '1993-03-03', 'JAVA ', 30000.00,
3000.00) ;
INSERT INTO EMPLOYEE_TABLE
VALUES('A4444', 'EMP NAME - A44', 'HYD', '1994-04-04', 'TEST ', 40000.00,
4000.00) ;
INSERT INTO EMPLOYEE_TABLE
VALUES('A2222', 'EMP NAME - A22', 'MUM', '1992-02-02', 'SAP ', 20000.00,
2000.00) ;
INSERT INTO EMPLOYEE_TABLE
VALUES('A5555', 'EMP NAME - A55', 'BGL', '1995-05-05', '.NET ', 50000.00,
5000.00) ;
INSERT INTO EMPLOYEE_TABLE
VALUES('A1111', 'EMP NAME - A11', 'PNQ', '1991-01-01', 'MAINF', 10000.00,
1000.00) ;
--
SELECT * FROM EMPLOYEE_TABLE ;
===================================================================================
====
Hands On - Problem 1
1) ON DELETE RESTRICT (which is Default)
- prevents Row from getting deleted from Location Table if any Employee is
assigned to that Location

Create the following Member = CRTREF1


DROP TABLE LOCATION_TABLE ;
COMMIT ;
CREATE TABLE LOCATION_TABLE
(LOC_ID CHAR(03) NOT NULL
,LOC_NAME CHAR(17)
,PRIMARY KEY(LOC_ID)
) IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX LOC_IDX ON LOCATION_TABLE(LOC_ID) ;
--
DROP TABLE EMPLOYEE_TABLE ;
COMMIT ;
CREATE TABLE EMPLOYEE_TABLE
(EMP_ID CHAR(05) NOT NULL
,EMP_NAME CHAR(15)
,EMP_LOC CHAR(03)
,EMP_DOB DATE
,EMP_TECH CHAR(05)
,EMP_EARN DECIMAL(7,2)
,EMP_DEDN DECIMAL(7,2)
,PRIMARY KEY(EMP_ID)
,FOREIGN KEY(EMP_LOC) REFERENCES LOCATION_TABLE(LOC_ID)
,ON DELETE RESTRICT
) IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX EMP_IDX2 ON EMPLOYEE_TABLE(EMP_ID) ;
==========
Create the following Member = INSREF1
INSERT INTO LOCATION_TABLE the 6 Rows as below -
VALUES('BGL', 'BENGALURU'); SQL CODE =
VALUES('CHN', 'CHENNAI '); SQL CODE =
VALUES('MUM', 'MUMBAI '); SQL CODE =
VALUES('HYD', 'HYDERABAD'); SQL CODE =
VALUES('PNQ', 'PUNE '); SQL CODE =
VALUES('NDL', 'NEW DELHI'); SQL CODE =

INSERT INTO EMPLOYEE_TABLE the 5 Rows as below -


VALUES('A1111', 'EMP NAME - A11', 'PNQ', '1991-01-01', 'MAINF', 10000.00, 1000.00);
SQL CODE =
VALUES('A2222', 'EMP NAME - A22', 'MUM', '1992-02-02', 'SAP ', 20000.00, 2000.00);
SQL CODE =
VALUES('A3333', 'EMP NAME - A33', 'CHN', '1993-03-03', 'JAVA ', 30000.00, 3000.00);
SQL CODE =
VALUES('A4444', 'EMP NAME - A44', 'HYD', '1994-04-04', 'TEST ', 40000.00, 4000.00);
SQL CODE =
VALUES('A5555', 'EMP NAME - A55', 'BGL', '1995-05-05', '.NET ', 50000.00, 5000.00);
SQL CODE =
========
Create the following Member = PROCESS1
UPDATE EMPLOYEE_TABLE
SET EMP_LOC = 'PNQ' WHERE EMP_ID = 'A5555'; SqlCode =
UPDATE EMPLOYEE_TABLE
SET EMP_LOC = 'KOL' WHERE EMP_ID = 'A3333'; SqlCode =

DELETE FROM LOCATION_TABLE WHERE LOC_ID = 'KOL'; SqlCode =


DELETE FROM LOCATION_TABLE WHERE LOC_ID = 'HYD'; SqlCode =
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Hands On - Problem 2
2) ON DELETE SET NULL
- when you delete a Row from Location Table for which an Employee is assigned,
the Emp Loc in Employee Table for that Employee will be Set to Null

Create the following Member = CRTREF2


DROP TABLE LOCATION_TABLE ;
COMMIT ;
CREATE TABLE LOCATION_TABLE
(LOC_ID CHAR(03) NOT NULL
,LOC_NAME CHAR(17)
,PRIMARY KEY(LOC_ID)
) IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX LOC_IDX ON LOCATION_TABLE(LOC_ID) ;
--
DROP TABLE EMPLOYEE_TABLE ;
COMMIT ;
CREATE TABLE EMPLOYEE_TABLE
(EMP_ID CHAR(05) NOT NULL
,EMP_NAME CHAR(15)
,EMP_LOC CHAR(03)
,EMP_DOB DATE
,EMP_TECH CHAR(05)
,EMP_EARN DECIMAL(7,2)
,EMP_DEDN DECIMAL(7,2)
,PRIMARY KEY(EMP_ID)
,FOREIGN KEY(EMP_LOC) REFERENCES LOCATION_TABLE(LOC_ID)
,ON DELETE SET NULL
) IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX EMP_IDX2 ON EMPLOYEE_TABLE(EMP_ID) ;
==========
Create the following Member = INSREF2
INSERT INTO LOCATION_TABLE the 6 Rows as below -
VALUES('BGL', 'BENGALURU'); SQL CODE =
VALUES('CHN', 'CHENNAI '); SQL CODE =
VALUES('MUM', 'MUMBAI '); SQL CODE =
VALUES('HYD', 'HYDERABAD'); SQL CODE =
VALUES('PNQ', 'PUNE '); SQL CODE =
VALUES('NDL', 'NEW DELHI'); SQL CODE =

INSERT INTO EMPLOYEE_TABLE the 5 Rows as below -


VALUES('A1111', 'EMP NAME - A11', 'PNQ', '1991-01-01', 'MAINF', 10000.00, 1000.00);
SQL CODE =
VALUES('A2222', 'EMP NAME - A22', 'MUM', '1992-02-02', 'SAP ', 20000.00, 2000.00);
SQL CODE =
VALUES('A3333', 'EMP NAME - A33', 'CHN', '1993-03-03', 'JAVA ', 30000.00, 3000.00);
SQL CODE =
VALUES('A4444', 'EMP NAME - A44', 'HYD', '1994-04-04', 'TEST ', 40000.00, 4000.00);
SQL CODE =
VALUES('A5555', 'EMP NAME - A55', 'BGL', '1995-05-05', '.NET ', 50000.00, 5000.00);
SQL CODE =
========
Create the following Member = PROCESS2
UPDATE EMPLOYEE_TABLE
SET EMP_LOC = 'PNQ' WHERE EMP_ID = 'A5555'; SqlCode =
UPDATE EMPLOYEE_TABLE
SET EMP_LOC = 'KOL' WHERE EMP_ID = 'A3333'; SqlCode =

DELETE FROM LOCATION_TABLE WHERE LOC_ID = 'KOL'; SqlCode =


DELETE FROM LOCATION_TABLE WHERE LOC_ID = 'HYD'; SqlCode =
- check the contents of EMP_LOC in the Employee Table for EMP_ID = 'A4444';
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Hands On - Problem 3
3) ON DELETE CASCADE
- when you delete a Row from Location Table for which an Employee is assigned,
All Rows in Employee Table where EMP_LOC is equal to that Location will be Deleted

Create the following Member = CRTREF3


DROP TABLE LOCATION_TABLE ;
COMMIT ;
CREATE TABLE LOCATION_TABLE
(LOC_ID CHAR(03) NOT NULL
,LOC_NAME CHAR(17)
,PRIMARY KEY(LOC_ID)
) IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX LOC_IDX ON LOCATION_TABLE(LOC_ID) ;
--
DROP TABLE EMPLOYEE_TABLE ;
COMMIT ;
CREATE TABLE EMPLOYEE_TABLE
(EMP_ID CHAR(05) NOT NULL
,EMP_NAME CHAR(15)
,EMP_LOC CHAR(03)
,EMP_DOB DATE
,EMP_TECH CHAR(05)
,EMP_EARN DECIMAL(7,2)
,EMP_DEDN DECIMAL(7,2)
,PRIMARY KEY(EMP_ID)
,FOREIGN KEY(EMP_LOC) REFERENCES LOCATION_TABLE(LOC_ID)
,ON DELETE CASCADE
) IN DBMATE1.TCAPGA17 ;
CREATE UNIQUE INDEX EMP_IDX2 ON EMPLOYEE_TABLE(EMP_ID) ;
==========
Create the following Member = INSREF3
INSERT INTO LOCATION_TABLE the 6 Rows as below -
VALUES('BGL', 'BENGALURU'); SQL CODE =
VALUES('CHN', 'CHENNAI '); SQL CODE =
VALUES('MUM', 'MUMBAI '); SQL CODE =
VALUES('HYD', 'HYDERABAD'); SQL CODE =
VALUES('PNQ', 'PUNE '); SQL CODE =
VALUES('NDL', 'NEW DELHI'); SQL CODE =

INSERT INTO EMPLOYEE_TABLE the 5 Rows as below -


VALUES('A1111', 'EMP NAME - A11', 'PNQ', '1991-01-01', 'MAINF', 10000.00, 1000.00);
SQL CODE =
VALUES('A2222', 'EMP NAME - A22', 'MUM', '1992-02-02', 'SAP ', 20000.00, 2000.00);
SQL CODE =
VALUES('A3333', 'EMP NAME - A33', 'CHN', '1993-03-03', 'JAVA ', 30000.00, 3000.00);
SQL CODE =
VALUES('A4444', 'EMP NAME - A44', 'HYD', '1994-04-04', 'TEST ', 40000.00, 4000.00);
SQL CODE =
VALUES('A5555', 'EMP NAME - A55', 'BGL', '1995-05-05', '.NET ', 50000.00, 5000.00);
SQL CODE =
========
Create the following Member = PROCESS3
UPDATE EMPLOYEE_TABLE
SET EMP_LOC = 'PNQ' WHERE EMP_ID = 'A5555'; SqlCode =
UPDATE EMPLOYEE_TABLE
SET EMP_LOC = 'KOL' WHERE EMP_ID = 'A3333'; SqlCode =

DELETE FROM LOCATION_TABLE WHERE LOC_ID = 'KOL'; SqlCode =


DELETE FROM LOCATION_TABLE WHERE LOC_ID = 'HYD'; SqlCode =
- check the contents of Employee Table
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
To try out the different Referential Integrity scenarios,
- you can use following SQLs in Sequence

1) ON DELETE RESTRICT =
- execute CRTREF1
- execute INSREF1
- execute PROCESS1

2) ON DELETE SET NULL =


- execute CRTREF2
- execute INSREF2
- execute PROCESS2

3) ON DELETE CASCADE =
- execute CRTREF3
- execute INSREF3
- execute PROCESS3
++++++++++++++++++++++

You might also like