Sie sind auf Seite 1von 16

DAY 1

LAB MODULE : SQL

PROCEDURE TO ENTER INTO SPUFI


1.
2.
3.
4.
5.
6.

CREATE ONE PDS AS INPUT FILE. TRNG555.DB2.INAN


CREATE ONE SDS AS OUTPUT FILE. TRNG555.DB2.OUTAN
FROM THE PRIMARY OPTION MENU SELECT M(MORE).
SELECT 8
SELECT 1 ( MAKE SURE DB2 SUBSYSTEM NAME IS DB2P)
IN SPUFI SCREEN ENTER INPUT DS NAME ALONG WITH MEMBER NAME
TRNG555.DB2.INAN(PGM1)
7. IN SPUFI SCREEN ENTER OUTPUT DS NAME
TRNG555.DB2.OUTAN(PGM1)
8. WRITE SQL QUERY (DATABASE & TABLE SPACE IS TRNGDB1.TRNGTS1)
9. RUN THE QUERY BY GIVING EDIT;EXECUTE;AUTOCOMMIT; IN
COMMAND & PRESS F3.
10.EXECUTION CODE - SQLCODE 00/100 MEANS PGM EXECUTED SUCCESSFULLY.
SQL 1 : CREATE TABLE
CREATE TABLE
( EMPID
EFNAME
ELNAME
EMPDOB
EMPSAL
EMPDEPT
PRIMARY

EMPLOYEE
CHAR(5) NOT NULL,
CHAR(15) NOT NULL,
CHAR(15) NOT NULL,
DATE NOT NULL,
NUMERIC(7,2),
CHAR(5) NOT NULL,
KEY (EMPID)) IN TRNGDB1.TRNGTS1;

Other Data types of table can be


VARCHAR(20), INT, SMALLINT, DATE, TIME, TIMESTAMP, DEC(4,2), CLOB,
BLOB, GRAPHICS, DBCLOB
Another way to create table
CREATE TABLE MINSERT LIKE TRNG555.EMPLOYEE1 IN TRNGDB1.TRNGTS1
OPERATORS IN DB2:
-----------------------------ARITHMETIC OPERATORS
COMPARISON OPERATORS
LOGICAL OPERATORS

: +,-,*,/
: <,>,<=,>=,=,<>,IN,NOT IN,LIKE,BETWEEN...AND
: AND, OR, NOT

SQL 2 : CREATE INDEX


CREATE UNIQUE INDEX IDX2 ON EMPLOYEE(EMPID);

SQL 3 : INSERT
INSERT INTO EMPLOYEE (EMPID,EFNAME,ELNAME,EMPDOB,EMPSAL,EMPDEPT)
VALUES('A0001','JAIKUM','PRADEEP','7/25/1977',7000,'D0001');
NOTE: INSERT BELOW 9 RECORDS
GIVE DATE IN THE FORMAT MM/DD/YYYY OR 'YYYY-MM-DD');
SQL 4 : SELECT
SYNTAX:
SELECT * FROM <TABLE NAME>; - * REFERS TO ALL FIELDS.
SELECT * FROM <TABLE NAME>
[WHERE <CONDITION>]
[GROUPBY <COL>]
[HAVING <CONDITION>]
[ORDER BY <COL>];
SELECT * FROM EMPLOYEE;
OUTPUT
EMPID EFNAME
ELNAME
EMPDOB
EMPSAL EMPDEPT
---------+---------+---------+---------+---------+---------+------+--A0001 JAIKUM
PRADEEP
1977-07-25
7000.00 D0001
A0003 PRIYA
PV
1897-04-05
6000.00 D0002
B0001 ANURAG
GN
1997-07-05
12000.00 D0003
B0004 ABHILASH
GN
1900-12-05
10000.00 D0001
E0001 PRADEEP
PV
1999-11-05
15000.00 D0001
E0003 SEEMA
ROY
1977-08-30
8000.00 D0005
E0005 SINI
VINOD
1956-05-23
20000.00 M0001
E0007 DILEEP
KUMAR
1988-07-12
8000.00 M0001
E0008 DEEP
KU
1981-04-12
5000.00 E0002
E0009 MINI
MA
1981-08-07
9000.00 E0002
SQL 5 : DISPLAY 2 FIELDS - SELECT
SELECT EMPID,EFNAME FROM EMPLOYEE;
OUTPUT
A0001
A0003
B0001
B0004
E0001
E0003
E0005
E0007
E0008
E0009

JAIKUM
PRIYA
ANURAG
ABHILASH
PRADEEP
SEEMA
SINI
DILEEP
DEEP
MINI

SQL 6 : RETRIEVAL WITH WHERE - SELECT


SELECT * FROM EMPLOYEE WHERE EMPID='E0001';
OUTPUT
EMPID EFNAME
ELNAME
EMPDOB
EMPSAL EMPDEPT
---------+---------+---------+-------+---------+---------+---------+--E0001 PRADEEP
PV
1999-11-05
15000.00 D0001
SQL 7 : LAB 3.4 RETRIEVAL WITH WHERE - SELECT
SELECT * FROM EMPLOYEE WHERE EMPDEPT='D0001';
OUTPUT
EMPID EFNAME
ELNAME
EMPDOB
EMPSAL EMPDEPT
------+---------+---------+---------+---------+---------+---------+---A0001 JAIKUM
PRADEEP
1977-07-25
7000.00 D0001
B0004 ABHILASH
GN
1900-12-05
10000.00 D0001
E0001 PRADEEP
PV
1999-11-05
15000.00 D0001
SQL 8 : RETRIEVAL WITH ORDER BY - DESC - SELECT
SELECT * FROM EMPLOYEE ORDER BY EMPID DESC;
OUTPUT
EMPID EFNAME
ELNAME
EMPDOB
EMPSAL EMPDEPT
----+---------+---------+---------+---------+---------+---------+-----E0009 MINI
MA
1981-08-07
9000.00 E0002
E0008 DEEP
KU
1981-04-12
5000.00 E0002
E0007 DILEEP
KUMAR
1988-07-12
8000.00 M0001
E0005 SINI
VINOD
1956-05-23
20000.00 M0001
E0003 SEEMA
ROY
1977-08-30
8000.00 D0005
E0001 PRADEEP
PV
1999-11-05
15000.00 D0001
B0004 ABHILASH
GN
1900-12-05
10000.00 D0001
B0001 ANURAG
GN
1997-07-05
12000.00 D0003
A0003 PRIYA
PV
1897-04-05
6000.00 D0002
A0001 JAIKUM
PRADEEP
1977-07-25
7000.00 D0001
SQL 9 : RETRIEVAL WITH ORDER BY ASC - SELECT
SELECT * FROM EMPLOYEE ORDER BY EMPSAL ASC;
OUTPUT
---------+---------+---------+---------+---------+---------+---------+
EMPID EFNAME
ELNAME
EMPDOB
EMPSAL EMPDEPT
---------+---------+---------+---------+---------+---------+---------+

E0008
A0003
A0001
E0007
E0003
E0009
B0004
B0001
E0001
E0005

DEEP
PRIYA
JAIKUM
DILEEP
SEEMA
MINI
ABHILASH
ANURAG
PRADEEP
SINI

KU
PV
PRADEEP
KUMAR
ROY
MA
GN
GN
PV
VINOD

1981-04-12
1897-04-05
1977-07-25
1988-07-12
1977-08-30
1981-08-07
1900-12-05
1997-07-05
1999-11-05
1956-05-23

5000.00
6000.00
7000.00
8000.00
8000.00
9000.00
10000.00
12000.00
15000.00
20000.00

E0002
D0002
D0001
M0001
D0005
E0002
D0001
D0003
D0001
M0001

SQL 10 : RETRIEVAL WITH > - SELECT


SELECT EMPID,EFNAME FROM EMPLOYEE WHERE EMPSAL>10000;
OUTPUT
EMPID EFNAME
---------+---------+---------+---------+---------+--B0001 ANURAG
E0001 PRADEEP
E0005 SINI
SQL 11 : RETRIEVAL WITH > AND <

- SELECT

SELECT * FROM EMPLOYEE WHERE EMPSAL>5000 AND EMPSAL<15000;


OUTPUT
EMPID EFNAME
ELNAME
EMPDOB
EMPSAL EMPDEPT
---------+---------+---------+-------+---------+---------+---------+--A0001 JAIKUM
PRADEEP
1977-07-25
7000.00 D0001
A0003 PRIYA
PV
1897-04-05
6000.00 D0002
B0001 ANURAG
GN
1997-07-05
12000.00 D0003
B0004 ABHILASH
GN
1900-12-05
10000.00 D0001
E0003 SEEMA
ROY
1977-08-30
8000.00 D0005
E0007 DILEEP
KUMAR
1988-07-12
8000.00 M0001
E0009 MINI
MA
1981-08-07
9000.00 E0002
SQL 12 : RETRIEVAL WITH LIKE - SELECT
SELECT * FROM EMPLOYEE WHERE EMPID LIKE 'B%';
OUTPUT
EMPID EFNAME
ELNAME
EMPDOB
EMPSAL EMPDEPT
---------+---------+---------+--------+---------+---------+---------+-B0001 ANURAG
GN
1997-07-05
12000.00 D0003
B0004 ABHILASH
GN
1900-12-05
10000.00 D0001
SQL 13 : RETRIEVAL WITH LIKE - SELECT

SELECT * FROM EMPLOYEE WHERE ELNAME LIKE 'R%';


OUTPUT
EMPID EFNAME
ELNAME
EMPDOB
EMPSAL EMPDEPT
---------+---------+---------+---------+---------+---------+---------+E0003 SEEMA
ROY
1977-08-30
8000.00 D0005
SELECT * FROM EMPLOYEE WHERE ELNAME LIKE 'R___';
SQL 14 : SELECT - IN
SELECT * FROM EMP WHERE EMPDEPT IN (D0001, D0002, D0003);
SELECT * FROM EMP WHERE EMPDEPT=D0001 OR EMPDEPT = D0002);
SELECT * FROM EMP WHERE EMPDEPT NOT IN (D0001,D0002,D0003);
SQL 15 : SELECT - BETWEEN >= AND <=
SELECT * FROM EMP WHERE EMPSAL BETWEEN 10000 AND 20000;
SELECT * FROM EMP WHERE EMPSAL NOT BETWEEN 10000 AND 20000;
SELECT * FROM EMP WHERE EMPSAL >=10000 AND EMPSAL <= 20000;
SELECT * FROM EMP WHERE EMPSAL < 10000 OR EMPSAL > 20000;

SQL 16 : AGGREGATE FUNCTION


SELECT AVG(EMPSAL) FROM EMPLOYEE;
SELECT COUNT(*) FROM EMPLOYEE ;
SELECT MIN(EMPSAL) AS MIMM
SELECT MAX(EMPSAL)

FROM EMPLOYEE;

AS MAXX FROM EMPLOYEE;

SELECT SUM(EMPSAL) AS SUMM FROM EMPLOYEE;


SELECT AVG(EMPSAL) AS AVGG FROM EMPLOYEE;
SELECT COUNT(*) AS COUNT1 FROM EMPLOYEE;
SELECT COUNT(ELNAME) AS NAMEDIS FROM EMPLOYEE;
SELECT LENGTH(EFNAME) FROM TRNG555.EMPLOYEE1;

SELECT SUBSTR(EFNAME,3,2) FROM TRNG555.EMPLOYEE;


SELECT EMPDEPT,VALUE(EMPDEPT,'IBM') FROM EMPLOYEE;
SELECT LOWER(EFNAME) FROM TRNG555.EMPLOYEE;
SELECT UPPER(EFNAME) FROM TRNG555.EMPLOYEE;
SELECT HEX(EMPSAL) FROM TRNG555.EMPLOYEE;
SELECT FLOAT(EMPSAL) FROM TRNG555.EMPLOYEE;
SELECT INTEGER(EMPSAL) FROM TRNG555.EMPLOYEE;
SELECT DECIMAL(EMPSAL) FROM TRNG555.EMPLOYEE;
SELECT DIGITS(EMPSAL) FROM EMPLOYEE;
SELECT DATE(BIRTHDATE) FROM TRNG555.EMPLOYEE;
SELECT DAY(BIRTHDATE) FROM TRNG555.EMPLOYEE;
SELECT MONTH(BIRTHDATE) FROM TRNG555.EMPLOYEE;
SELECT YEAR(HIREDATE) AS YEAR1

FROM

EMPLOYEE;

SELECT DAYS(HIREDATE) AS DAYS1 FROM EMPLOYEE;


SELECT TIME1,CHAR(TIME1,USA) FROM TRNG555.EMPLOYEE;
SQL 17 : RETRIEVAL WITH LIKE (STARTS WITH 'P' OR ENDS WITH 'R')
SELECT EMPSAL FROM EMPLOYEE WHERE ELNAME LIKE 'P%' OR
ELNAME LIKE '%R';
OUTPUT
EMPSAL
7000.00
6000.00
15000.00
NOTE:
IF WE GIVE
SELECT EMPSAL FROM EMPLOYEE WHERE EMPID LIKE 'E%' OR ELNAME LIKE '%3';
WILL DISPLAY CORRESPONDING FIELD STARTING WITH E AND ENDING WITH 3 IF THE FIELD
CONTAINS MAXIMUM SIZE GIVEN AT THE TIME OF CREATING.
IN ORDER TO GET RESULT FOR '%R' DECLARE ELNAME WITH VARCHAR INSTEAD OF CHAR.
SQL 18 : RETRIEVAL WITH COMPUTATION

SELECT EMPSAL+500 FROM EMPLOYEE WHERE EMPDEPT='E0002';


OUTPUT
5500.00
9500.00
SQL 19 : RETRIEVAL WITH COMPUTATION

SELECT EMPID, EFNAME, ELNAME, EMPSAL-5000 AS BONUS FROM EMPLOYEE WHERE EMPDEPT LIK
'M%';
OUTPUT
15000.00
3000.00
SQL 20

: SELECT WITH LOGICAL OPERATORS:

SELECT * FROM EMP WHERE ENO> 100 AND SAL> 5000;


SELECT * FROM EMP WHERE ENO>100 OR SAL> 4000;

DAY - 2
SQL 20 : NULL RETRIEVAL
SELECT ELNAME, EFNAME FROM EMPLOYEE WHERE EMPDEPT IS NULL;
SELECT ELNAME, EFNAME FROM EMPLOYEE WHERE EMPDEPT IS NOT NULL;
SQL 21 : GROUP BY & SUM
SELECT EMPDEPT, SUM(EMPSAL) FROM EMPLOYEE GROUP BY EMPDEPT;
OUTPUT
EMPDEPT
D0001
D0002
D0003
D0005
E0002
M0001

SUM(EMPSAL) IN EACH DEPT


32000.00
6000.00
12000.00
8000.00
14000.00
28000.00

SQL 22 : SELECT WITH ORDER BY


SELECT * FROM EMP ORDER BY ENO DESC;
SELECT * FROM EMP WHERE ENO>100 ORDER BY ENAME;
SQL 23 : GROUP BY & HAVING

SELECT EMPDEPT, MAX (EMPSAL) FROM EMPLOYEE GROUP BY EMPDEPT ;


SELECT DEPT, AVG(SAL) ,MAX(SAL),MIN(SAL) FROM EMP GROUP BY DEPT HAVING
COUNT(*) > 2
SQL 24 : SELECT WITH DISTINCT:
--------------- TO GET UNIQUE
- TO ELIMINATE DUPLICATES
SELECT DISTINCT SAL FROM EMP;
SQL 24 : UPDATE
SYNTAX:
------------UPDATE <TABLE NAME> SET <COLUMN NAME>=<VALUE> WHERE <CONDITION>
EX:
----UPDATE EMP SET CITY='CHENNAI' WHERE ENO=101;
UPDATE EMPLOYEE SET EMPDOB='10/2/1988',
EMPSAL=9999
WHERE EFNAME='PRIYA';
SQL 25 : DELETE
SYNTAX:
DELETE FROM <TABLE NAME>

[ WHERE <CONDITION> ]

EX:
----DELETE FROM EMP;
DELETE FROM EMP WHERE ENO=100;
DELETE FROM EMPLOYEE WHERE EFNAME='MINI';
SQL 26 : REFERENTIAL INTEGRITY
STEP1.

CREATE TABLE DEPTS(DEPT_ID CHAR(4) NOT NULL,


DEPT_NM CHAR(8) NOT NULL,
MGR_ID CHAR(4) NOT NULL,
PRIMARY KEY(DEPT_ID))

IN TRNGDB1.TRNGTS1;
STEP2.

CREATE UNIQUE INDEX DEPTIDX ON DEPTS(DEPT_ID);

STEP3.

CREATE TABLE EMP(EMP_ID CHAR(4) NOT NULL,


EMP_NM CHAR(8) NOT NULL,
SALARY DECIMAL(6,2),
DEPT_ID CHAR(4) NOT NULL,
PRIMARY KEY(EMP_ID),
FOREIGN KEY(DEPT_ID) REFERENCES
DEPTS(DEPT_ID) ON DELETE
CASCADE/RESTRICT/SET NULL)
IN TRNGDB1.TRNGTS1;

STEP4.

CREATE UNIQUE INDEX EMPLSIDX ON EMP(EMP_ID);

NOTE: IF REFERENCES DEPTS is mentioned then by default, it refers to the primary


key of the parent table, if u want to refer to UNIQUE field, then specify
REFERENCES DEPTS (UNIQUE KEY FIELD NAME).
SQL 27 : SELF JOIN
Joining the table to itself.Looking table twice.
IT CAN COMPARE EACH AND EVERY ROW OF ONE TABLE WITH ALL OTHER ROWS IN
THE SAME TABLE
Sample table
CREATE TABLE EMPLOYEE(EMPNO CHAR(4) NOT NULL PRIMARY KEY, EMPNM
CHAR(10),EMPSL DEC(4,0),MGRID CHAR(4)) IN TRNGDB1.TRNGTS1;
CREATE
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT

UNIQUE INDEX EMPLOYEES ON EMPLOYEE(EMPNO);


INTO EMPLOYEE VALUES('1001','VENKAT',5000,'1004');
INTO EMPLOYEE VALUES('1002','AJAY',2000,'1001');
INTO EMPLOYEE VALUES('1003','MADHU',6000,'1002');
INTO EMPLOYEE VALUES('1004','MILIND',7000,'1002');
INTO EMPLOYEE VALUES('1005','ANUSH',8000,'1002');
INTO EMPLOYEE VALUES('1006','MEENA',9000,'1002');
INTO EMPLOYEE VALUES('1007','ASHOK',2000,'1004');
INTO EMPLOYEE VALUES('1008','ALOK',3000,'1004');
INTO EMPLOYEE VALUES('1009','SHEEMA',4000,'1002');

SELECT A.EMPNM,B.EMPNM AS MGRNAME FROM EMPLOYEE A,EMPLOYEE B WHERE


A.MGRID=B.EMPNO;

SQL 28 : SELECT CASE


1. SELECT EMPCD,EMPSL,

CASE
WHEN EMPSL <= 1000
WHEN EMPSL >= 1001
WHEN EMPSL >= 2001
END AS SALARYRANGE

THEN 'BELOW AVERAGE'


AND EMPSL <=2000 THEN 'AVERAGE'
THEN 'ABOVE AVERAGE'
FROM EMPS;

2. SELECT DEPTNO,CASE SUBSTR(DEPTNO,1,1)


WHEN 'A' THEN 'ADMINISTRATION'
WHEN 'B' THEN 'BOOK DEPOT'
WHEN 'C' THEN 'CUSTOMER CARE'
WHEN 'D' THEN 'DEVELOPMENT'
WHEN 'E' THEN 'ENTRY TYPE '
WHEN 'F' THEN 'FOREIGN ASSIGNMENT'
END AS CATOGORY FROM TT;
SQL 29 : JOIN
- TO COMBINE COLUMNS IN DIFFERENT TABLES OR SAME TABLE
- MAXIMUM NUMBER OF TABLES THAT CAN BE JOINED IS 15.
NOTE:

WHEN CODING A JOIN, WE MUST TAKE EXTRA CARE


TO CODE PROPER MATCHING PREDICATE FOR EACH
TABLE BEING JOINED. FAILURE TO DO SO CAN RESULT
IN A CARTESIAN PRODUCT.

STEP1
CREATE TABLE EMP
( EMPNO
CHAR(4) NOT NULL,
EMPNAME CHAR(10) NOT NULL,
DEPTNO
CHAR(4),
SALARY
DEC(4,0),
PRIMARY KEY(EMPNO)
) IN TRNGDB1.TRNGTS1;

STEP2
CREATE UNIQUE INDEX IDXNM ON EMP(EMPNO);
STEP3
INSERT
INSERT
INSERT
INSERT
INSERT

4 ROWS
INTO EMP
INTO EMP
INTO EMP
INTO EMP

VALUES(E001,A,D001,12000);
VALUES(E002,B,D002,22000);
VALUES(E003,C,D003,32000);
VALUES(E004,D,NULL,42000);

STEP3
CREATE TABLE DEPT
( DEPTNO
CHAR(4) NOT NULL,
DEPNAME CHAR(10)
) IN TRNGDB1.TRNGTS1;
STEP4
CREATE UNIQUE INDEX IDXNM ON EMP(EMPNO);

STEP-5
INSERT
INSERT
INSERT
INSERT

3 ROWS
INTO DEPT VALUES('D001',FINANCE);
INTO DEPT VALUES('D002',ACCOUNTS);
INTO DEPT VALUES('D003',SALES);

STEP6
DISPLAY TABLES
TABLE EMP
SELECT * FROM EMP;
TABLE DEPT
SELECT * FROM DEPT;
STEP7
INNER JOIN ( ONLY MATCHING COLUMNS OF TABLES ARE RETRIEVED)
SELECT EMPNO, DEPTNAME FROM EMP INNER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
---------+---------+-----EMPNO
DEPTNAME
---------+---------+-----E001
FINANCE
E002
ACCOUNTS
E003
FINANCE
STEP8
OUTER JOIN ( MATCHING & NON-MATCHING ARE RETRIEVED)
LEFT OUTER JOIN
SELECT EMPNO, DEPTNAME FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
---------+---------+-----EMPNO
DEPTNAME
---------+---------+-----E001
FINANCE
E002
ACCOUNTS
E003
FINANCE
E004
NULL
RIGHT OUTER JOIN
SELECT EMPNO, DEPTNAME FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
---------+---------+-----EMPNO
DEPTNAME

---------+---------+-----E001
FINANCE
E002
ACCOUNTS
E003
FINANCE
NULL
SALES
FULL OUTER JOIN
SELECT EMPNO, DEPTNAME FROM EMP FULL OUTER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
---------+---------+-----EMPNO
DEPTNAME
---------+---------+-----E001
FINANCE
E002
ACCOUNTS
E003
FINANCE
NULL
SALES
E004
NULL
SQL

30 : CARTESIAN JOIN OR CROSS JOIN

A Cartesian product IS THE RESULT OF A JOIN THAT DOES NOT SPECIFY A


PREDICATE
SELECT EMPNO, EMPNAME, SALARY, DEPTNAME FROM EMPOYEE,DEPT;
SQL 31 : SUBQUERY
MULTILEVEL SUBQUERY - NESTING OF MORE THAN ONE SUB QUERY IN A
QUERY(MAX 15)
SELECT * FROM EMPLOYEE WHERE EMPSAL > (SELECT EMPSAL FROM EMP WHERE
EMPNO=E001);
SELECT * FROM EMPLOYEE WHERE EMPSAL = (SELECT MAX(EMPSAL) FROM
EMPLOYEE WHERE EMPSAL < (SELECT MAX(EMPSAL) FROM EMPLOYEE))
MULTIPLE SUBQUERY - CAN NEST FROM MORE THAN TWO DIFFERENT TABLES.
SELECT EMPNO, EMPNAME FROM EMPLOYEE WHERE DEPTNO = ( SELECT DEPTNO
FROM DEPT WHERE DEPTNAME=FINANCE);
SELECT * FROM EMPLOYEE1 WHERE EMPSAL = (SELECT MAX(EMPSAL1) FROM
EMPLOYEE2) AND EMPNO=(SELECT MAX(BONUS) FROM EMPLOYEE3)
SQL 32 : UNION & UNION ALL
UNION(REDUNDANT DUPLICATES ARE ELIMINATED)

NOTE NO. OF COLUMNS IN EMP1 & EMP2 SHOULD BE SAME AND THEIR DATATYPE
SHOULD BE COMPATIBLE
SELECT ENO FROM EMP1 UNION SELECT ENO FROM EMP2;
UNION ALL (REDUNDANT DUPLICATES ARE NOT ELIMINATED)
SELECT NAME FROM EMP1 UNION ALL SELECT ENAME FROM EMP2;
SQL 33 : CREATING VIEW
CREATE VIEW EMPVIEW(EMPID,EFNAME,ELNAME,EMPDOB,EMPSAL,EMPDEPT)
AS SELECT * FROM EMPLOYEE ;
DISPLAY DETAILS IN VIEW
SELECT * FROM EMPVIEW;
-----+---------+---------+---------+---------+---------+---------+----EMPID EFNAME
ELNAME
EMPDOB
EMPSAL EMPDEPT
-----+---------+---------+---------+---------+---------+---------+----A0001 JAIKUM
PRADEEP
1977-07-25
7000.00 D0001
A0003 PRIYA
PV
1988-10-02
6000.00 D0002
B0001 ANURAG
GN
1997-07-05
12000.00 D0003
B0004 ABHILASH
GN
1900-12-05
10000.00 D0001
E0001 PRADEEP
PV
1999-11-05
15000.00 D0001
E0003 SEEMA
ROY
1977-08-30
8000.00 D0005
CREATE VIEW EMPVIEW(EMPID,EFNAME,ELNAME,EMPDOB,EMPSAL,EMPDEPT)
AS SELECT * FROM EMPLOYEE WHERE EMPSAL > 5000;
NOT UPDATABLE VIEWS
----------- VIEWS CREATED USING DISTINCT CLAUSE
- VIEWS CREATED USING GROUP FUNCTIONS
- VIEWS CREATED USING GROUP BY CLAUSE
- VIEWS CREATED USING HAVING CLAUSE
- VIEWS CREATED USING SUBQUERIES
- VIEWS CREATED USING JOINS
- VIEWS CREATED FROM MULTIPLE TABLES
UPDATABLE VIEWS
------- ROW COLUMN SUBSET VIEWS EXTRACTED FROM A SINGLE TABLE

SQL 34 : GRANT & REVOKE


1.

GRANT SELECT ON EMPDEPT TO PUBLIC;

2.

GRANT ALL ON EMPLOYEE TO KC02526 WITH GRANT OPTION;

3.

GRANT SELECT, UPDATE (EMPNAME,EMPSAL) TO KC02526;

5.

REVOKE SELECT ON EMP FROM KC02526;

6.

REVOKE ALL ON DEPT FROM KC02526;

SQL 35 : TRIGGER
STEP1 - CREATE TRIGGER TRIG1N AFTER INSERT ON EMPX
FOR EACH ROW MODE DB2SQL
UPDATE EMPTX SET EMPNAME='RAHUL' WHERE EMPNO='A002';
STEP2 - CREATE TRIGGER BOOKS_AFTER_INSERT_ROW
AFTER INSERT ON BOOKS
FOR EACH ROW
(INSERT INTO AUDIT_LOG VALUES ('BOOKS', SYSDATE));
SQL 36 : SELECTING FROM DB2-CATALOG
1.

SELECT * FROM SYSIBM.SYSTABLES WHERE CREATOR='KC02526'

2.

SELECT * FROM SYSIBM.SYSCOLUMNS WHERE TBNAME='EMPLOYEE';

3.

SELECT COLNO,COLTYPE,LENGTH FROM SYSIBM.SYSCOLUMNS WHERE TBNAME='EMPLOYEE'

4.
SELECT * FROM SYSIBM.SYSCOLUMNS WHERE TBCREATOR ='KC02526' AND
TBNAME ='EMPLOYEE';
5.
SELECT * FROM SYSIBM.SYSFOREIGNKEYS WHERE TBNAME='EMP' AND
CREATOR='KC02526';
6.
SELECT * FROM SYSIBM.SYSINDEXES WHERE CREATOR='TRNG555' AND
TBNAME='EMPLOYEE';
7.

SELECT * FROM SYSIBM.SYSVIEWS WHERE CREATOR='TRNG555';

8.

SELECT * FROM SYSIBM.SYSSYNONYMS WHERE CREATOR = 'TRNG555';

9.

SELECT DAYS(CURRENT DATE) FROM SYSIBM.SYSDUMMY1;

10.

SELECT DATE(CURRENT DATE) FROM SYSIBM.SYSDUMMY1;

11.

SELECT TIME(CURRENT TIMESTAMP) FROM SYSIBM.SYSDUMMY1;

12.

SELECT DATE(CURRENT TIMESTAMP) FROM SYSIBM.SYSDUMMY1;

13.

SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1;

14. SELECT DATE('5/31/1988') + 1 MONTH - 1 MONTH FROM


SYSIBM.SYSDUMMY1;
15. SELECT DATE('5/31/1988') + 30 DAYS
SYSIBM.SYSDUMMY1;

- 30 DAYS

FROM

SQL : 37 DROPING TABLE / VIEW / INDEX


DROP TABLE EMP;
DROP INDEX EMPIDX;
DROP VIEW VIEWNAM;
SQL : 38 RENAMING TABLE
RENAME TABLE EMPLOYEE TO NEW_EMPLOYEE;
SQL : 39 ALTERING TABLE
ALTER TABLE EMPM ADD BONUS DECIMAL(6,2);
ALTER TABLE EMPLOYEE ALTER LASTNAME SET DATA TYPE VARCHAR(30)

ALTER TABLE EMPLOYEE DROP PRIMARY KEY;


ALTER TABLE EMPLOYEE ADD PRIMARY KEY(EMPNO);
SQL : 40 ALIAS / SYNONYMS
SYNONYM
------- ALTERNATE NAME FOR A TABLE OR VIEW
- PRIVATE TO THE USER WHO CREATED IT
- INFORMATION ABOUT SYNONYMS ARE STORED IN SYSIBM.SYSSYNONYMS
SYNTAX
-

CREATE SYNONYM

<SYNONYM NAME> FOR

Eg.
CREATE SYNONYM S1 FOR ISAM40.EMP
-

CREATE SYNONYM S2 FOR ISAM40.V1

USERID.TABLENAME / VIEWNAME

ALIAS
----- ALTERNATE NAME FOR A TABLE OR VIEW
- PUBLIC TO ALL USERS
- GLOBAL OBJECT
- IF BASE TABLE IS DROPPED, ALIAS WILL NOT BE DROPPED
- ALIAS CAN BE CREATED WITHOUT THE BASE TABLE
SYNTAX
- CREATE ALIAS <ALIAS NAME> FOR USERID.TABLENAME/VIEWNAME
Eg.
- CREATE ALIAS AA FOR ISAM40.EMP

Das könnte Ihnen auch gefallen