0% found this document useful (0 votes)
103 views

SQL Niit

1) The document provides steps to enter Structured Query Language (SQL) queries into SPUFI and describes SQL components like DDL, DML, DCL, and TCL. 2) It includes examples of SQL statements like CREATE TABLE, INSERT, SELECT, and explains integrity constraints. 3) Various data types, operators, indexes and keys are defined along with multi-row insert and output from a sample SELECT query.

Uploaded by

NishantSharma
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
103 views

SQL Niit

1) The document provides steps to enter Structured Query Language (SQL) queries into SPUFI and describes SQL components like DDL, DML, DCL, and TCL. 2) It includes examples of SQL statements like CREATE TABLE, INSERT, SELECT, and explains integrity constraints. 3) Various data types, operators, indexes and keys are defined along with multi-row insert and output from a sample SELECT query.

Uploaded by

NishantSharma
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 32

DAY – 1 LAB MODULE : SQL

PROCEDURE TO ENTER INTO SPUFI

1. CREATE ONE PDS AS INPUT FILE. XXXXXXXX.DB2.SOURCE


2. CREATE ONE SEQ DS AS OUTPUT FILE. XXXXXXXX.DB2.OUTFILE
3. FROM THE PRIMARY OPTION MENU SELECT M(MORE).
4. SELECT 15
5. SELECT 1 ( MAKE SURE DB2 SUBSYSTEM NAME IS ------)
6. IN SPUFI SCREEN ENTER INPUT DS NAME ALONG WITH MEMBER NAME
‘XXXXXXXX.DB2.SOURCE(SQL1)’
7. IN SPUFI SCREEN ENTER OUTPUT DS NAME
‘XXXXXXXX.DB2.OUTFILE’
8. WRITE SQL QUERY (DATABASE & TABLE SPACE IS SHRDB4.SHRTS4)
9. RUN THE QUERY BY GIVING EDIT;EXECUTE;AUTOCOMMIT; IN
COMMAND & PRESS F3.
10.EXECUTION CODE - SQLCODE 00/100 MEANS PGM EXECUTED SUCCESSFULLY.

SQL - STRUCTURED QUERY LANGUAGE


-----------------------------------------------------------

1) DDL - DATA DEFINITION LANGUAGE


2) DML - DATA MANIPULATION LANGUAGE
3) DCL - DATA CONTROL LANGUAGE
4) TCL - TRANSACTION CONTROL LANGUAGE

DDL: - CONCERNED WITH STRUCTURE OF DB2 OBJECT


----

CREATE - CREATE A NEW TABLE


ALTER - USED TO ALTER AN EXISTING TABLE
DROP - USED TO REMOVE ENTIRE OBJECT
RENAME - USED TO RENAME THE EXISTING TABLE NAME
TRUNCATE – SED TO DELETE ALL RECORDS FOR THE TABLE

DML: - CONCERNED ONLY WITH VALUES


----

INSERT - INSERTING NEW ROWS


UPDATE - MODIFYING THE CONTENTS OF THE RECORDS
DELETE - DELETION OF RECORD
SELECT - USED TO RETRIEVE DATAS

DCL:
----

GRANT - GRANTING PERMISSION TO OTHER USERS


REVOKE- CANCEL PERMISSION WHICH IS GRANTED

TCL:
----

COMMIT - SAVE PERMANENTLY TO DATABASE


ROLLBACK - UNDO CONTROL TO PREVIOUS STATEMENT

SQL 1 : CREATE TABLE

Syntax:

CREATE TABLE <Table Name> (<Field1><Data Type> NOT NULL,


<Field2><Data Type> CONSTRAINT<Constraint Name> PRIMARY
KEY) IN DBMATE1.TSLEMA01;

CREATE TABLE EMPLOYEE (EMPNO INTEGER CONSTRAINT C_EMP


PRIMARY KEY, EMPNM CHAR(25) NOT NULL) IN
DBMATE1.TSLEMA01;

CREATE TABLE EMPLOYEE (EMPNO INTEGER, EMPNM CHAR(25) NOT


NULL, CONSTRAINT C_EMP PRIMARY KEY (EMPNO)) IN
DBMATE1.TSLEMA01;

A sample Table with all data type declared

CREATE TABLE TEST


(M1 CHAR (8) NOT NULL PRIMARY KEY,
M2 VARCHAR (20) NOT NULL,
M3 VARCHAR (10) NOT NULL WITH DEFAULT,
M4 INTEGER,
M5 SMALLINT,
M6 DATE,
M7 TIME,
M8 TIMESTAMP,
M9 DECIMAL(6,3)
) IN DBMATE1.TSLEMA01;

Other Data types of table can be


VARCHAR(20), INT or INTEGER, SMALLINT, DATE, TIME, TIMESTAMP, DEC(4,2),
NUMERIC(4,2), FLOAT, REAL, CLOB, BLOB, GRAPHICS, DBCLOB.

CREATE TABLE EMPLOYEE


( EMPID CHAR(5) NOT NULL,
EFNAME CHAR(15) NOT NULL,
ELNAME CHAR(15) NOT NULL,
EMPDOB DATE NOT NULL,
EMPSAL DECIMAL(7,2),
EMPDEPT CHAR(5) NOT NULL,
PRIMARY KEY (EMPID)) IN DBMATE1.TSLEMA01;

INTEGRITY CONSTRAINTS
---------------------
- USED TO PREVENT INVALID DATA ENTRY IN A DATABASE TABLE.
- INTEGRITY REFERS ACCURACY, VALIDITY OR CORRECTNESS OF DATA IN
DATABASE.

3 TYPES OF INTERITY CONSTRIANTS:


-------------------------------
DOMAIN INTERGRITY - NOT NULL, CHECK
ENTITY INTEGRITY - PRIMARY KEY, UNIQUE
REFERENTIAL INTERGITY - FOREIGN KEY

DOMAIN INTEGRITY:
-----------------
NOT NULL:
---------
- BY DEFAULT ALL COLUMNS WILL ALLOW NULL VALUES. IF NOT NULL ISSPECIFIED FOR A
COLUMN, THEN SOME VALUE HAS TO BE ENTERED TO THE PARTICULAR COLUMN

NULL (Default),
NOT NULL,
NOT NULL WITH DEFAULT,
NOT NULL WITH DEFAULT ‘HELLO’
NOT NULL WITH DEFAULT 1234
NOT NULL WITH DEFAULT '7/25/1977'
NOT NULL WITH DEFAULT ‘10.30.00’

DEFAULT DEPENDS ON THE DATA TYPE

ZERO – INT / SMALLINT / DECIMAL / NUMERIC


SPACES – CHAR / VARCHAR
CURRENT DATE – DATE
CURRENT TIME – TIME
CURRENT TIMESSTAMP – TIMESTAMP

CHECK CONSTRIANT:
-----------------

- IT SETS A RANGE AND IF THE RANGE IS EXCEEDED, THE CONSTRAINT IS SET TO BE


VIOLATED.

- USED TO CHECK VALUE FOR A SPECIFIED COLUMN WHETHER IT IS BELOW OR BEYOND THE
SPECIFIED LIMIT.

- CREATE TABLE EMPLOYEE (EMPNO INTEGER NOT NULL, EMPNM CHAR(25) NOT NULL,
SALARY INTEGER CHECK (SALARY > 15000))IN DBMATE1.TSLEMA01;

- CREATE TABLE TEST (RNO INT, NAME VARCHAR (10),


SEX CHAR (1) CHECK (SEX='M' OR SEX='F' ), MARK INT) IN DB.TS

- CREATE TABLE TEST(EMPID INT, EMPSAL INT CHECK (SAL<100000), DEPT CHAR(6))
IN DB.TS;

- CREATE TABLE TEST(EMPID INT, EMPSAL INT EMPSAL DEC(4,0) (CHECK EMPSAL>=2000
AND EMPSAL <=4000) IN DB.TS;

ENTITY INTEGRITY CONSTRIANT:


----------------------------

PRIMARY KEY CONSTRIANT:


-----------------------
- USED TO REJECT DUPLICATE AND NULL VALUES.
- CAN BE ONLY ONE PRIMARY KEY IN A TABLE.
- CAN ASSIGN A SINGLE PRIMARY KEY OR TO A COMBINATION OF COLUMNS, WHICH IS
CALLED AS COMPOSITE PRIMARY KEY.

RULES:
------
- DEFINE NOT NULL CONSTRIANT FOR PRIMARY KEY COLUMN.
- CREATE UNIQUE INDEX.

CREATING PRIMARY KEY:


---------------------

TABLE LEVEL CONSTRIANT:


-----------------------
- CREATE TABLE TEST (ENO INT NOT NULL, ENAME CHAR(20),
PRIMARY KEY(ENO) ) IN DB.TS;

COLUMN LEVEL CONSTRIANT:


------------------------
- CREATE TABLE TEST (ENO INT NOT NULL PRIMARY KEY, ENAME CHAR(20))IN DB.TS;

INDEX:
------
INDEX CONTAINS KEY & ADDRESS (LOCATION)

1. NON-UNIQUE INDEX
2. UNIQUE INDEX

DEFAULT VALUE - NON UNIQUE INDEX

Syntax: CREATE [UNIQUE] INDEX <Index Name> ON <Table Name><Field1


(Order), Field2 (Order), ….>

Order Can be of ascending and descending.

EG:
---
CREATE UNIQUE INDEX <INDEX-NAME> ON <TNAME>(<COL-NAME>)

CREATE UNIQUE INDEX:


--------------------
- CREATE UNIQUE INDEX IND1 ON TEST (ENO);

COMPOSITE KEY:
--------------
- WHEN A KEY IS MADE FROM MORE THAN ONE FIELD IT IS CALLED COMPOSITE KEY.

EG.

- CREATE TABLE TEST(ENO INT NOT NULL, ENAME CHAR(20), SAL INT NOT NULL,
PRIMARY KEY(ENO,SAL)) IN DB.TS;

COMPOSITE INDEX:
----------------
- WHEN AN INDEX IS MADE FOR MORE THAN ONE FIELD IT IS CALLED COMPOSITE INDEX.

Eg.
- CREATE UNIQUE INDEX IND2 ON TEST(ENO,SAL);
ALTERNATE KEY:
--------------
- UNIQUE AND NON-UNIQUE KEY
- CAN BE MORE THAN ONE ALTERNATE KEY IN SINGLE TABLE.
- CAN ASSIGN A COMBINATION OF COLUMNS CALLED AS COMPOSITE ALTERNATE KEY.

RULES:
------
- DEFINE NOT NULL FOR ALTERNATE KEY WITH UNIQUE SYNTAX.
- CREATE UNIQUE INDEX.

EX:
---
CREATE TABLE TEST(ENO INTEGER NOT NULL PRIMARY KEY, ENAME VARCHAR(10) UNIQUE
NOT NULL, PAN NUMERIC(5) UNIQUE NOT NULL) IN DB.TS;

CREATE UNIQUE INDEX A1 ON TEST(ENO) ;


CREATE UNIQUE INDEX C1 ON TEST(PAN) ;

CREATE NON-UNIQUE INDEX:


--------------------
- CREATE INDEX B1 ON TEST(ENAME) ;

COMPOSITE ALTERNATE KEY:


-------------------------
CREATE TABLE EMP(ENO INTEGER NOT NULL PRIMARY KEY, ENAME VARCHAR(10) NOT NULL,
SAL NUMERIC(5) NOT NULL, UNIQUE(ENAME,SAL) ) IN SAMDB5.SAMSP5;

CREATE UNIQUE INDEX IND1 ON TEST(ENO) ;


CREATE UNIQUE INDEX IND4 ON TEST(ENAME,SAL);

CANDIDATE KEY:
--------------
- MORE THAN ONE KEY IN A TABLE BUT ONLY ONE PRIMARY KEY .

Another way to create table

CREATE TABLE NEWTABLE LIKE EMPLOYEE IN DB.TS;

OPERATORS (PREDICATES) IN DB2:

ARITHMETIC OPERATORS : +,-,*,/


COMPARISON OPERATORS : <,>,<=,>=,=,<>,IN,NOT IN,LIKE,BETWEEN
LOGICAL OPERATORS : AND, OR, NOT

SQL 2 : CREATE INDEX

CREATE UNIQUE INDEX IDX2 ON EMPLOYEE(EMPID);

CREATE UNIQUE INDEX IDXIND2 ON EMPLOYEE(EMPID DESC);

SQL 3 : INSERT

INSERT INTO EMPLOYEE (EMPID,EFNAME,ELNAME,EMPDOB,EMPSAL,EMPDEPT)


VALUES('A0001','JAIKUM','PRADEEP','7/25/1977',7000,'D0001');
INSERT INTO EMPLOYEE VALUES ('C0001','JAIKUM','PRADEEP','7/25/1977',NULL,'D0001');

INSERT INTO EMPLOYEE VALUES ('D0001','JAIKUM','PRADEEP','7/25/1977',DEFAULT,


'D0001');

INSERT INTO EMP VALUES(‘D0002’, CURRENT DATE, TIME(CURRENT TIMESTAMP) )

NOTE:
Specify DATE in ‘YYYY-MM-DD' format or in ‘MM/DD/YYYY’ format, TIME in ‘24.00.00’
format, TIMESTAMP in ‘9999-12-31-24.00.00.000000000’ format which is date and time
by year, month, day, hour, minute, second, and microsecond.

Make some more entries as below

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

MULTI-ROW INSERT

INSERT INTO table2 (column1, column2, column3, ...)


SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

INSERT INTO TABLE2 SELECT * FROM TABLE1;

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 JAIKUM
A0003 PRIYA
B0001 ANURAG
B0004 ABHILASH
E0001 PRADEEP
E0003 SEEMA
E0005 SINI
E0007 DILEEP
E0008 DEEP
E0009 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 : RETRIEVAL WITH WHERE - SELECT

SELECT * FROM EMPLOYEE WHERE EMPDOB='1977-07-25'

SELECT * FROM EMPLOYEE WHERE EMPDEPT='D0001';

OUTPUT

EMPID EFNAME ELNAME EMPDOB EMPSAL EMPDEPT


------+---------+---------+---------+---------+---------+---------+----
A0001 JAIKUM PRADEEP 1977-07-25 7000.00 D0001
B0004 ABHILAS GN 1977-07-25 10000.00 D0001
E0001 PRADEP PV 1977-07-25 15000.00 D0001
E0005 SINI VINOD 1977-07-25 20000.00 D0001
E0007 DILIP KUMAR 1977-07-25 8000.00 D0001

SQL 8 : RETRIEVAL WITH ORDER BY - DESC - SELECT

ORDER BY clauses is that all columns identified in the ORDER BY clause


must appear in the SELECT clause.
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 DEEP KU 1981-04-12 5000.00 E0002
A0003 PRIYA PV 1897-04-05 6000.00 D0002
A0001 JAIKUM PRADEEP 1977-07-25 7000.00 D0001
E0007 DILEEP KUMAR 1988-07-12 8000.00 M0001
E0003 SEEMA ROY 1977-08-30 8000.00 D0005
E0009 MINI MA 1981-08-07 9000.00 E0002
B0004 ABHILASH GN 1900-12-05 10000.00 D0001
B0001 ANURAG GN 1997-07-05 12000.00 D0003
E0001 PRADEEP PV 1999-11-05 15000.00 D0001
E0005 SINI VINOD 1956-05-23 20000.00 M0001

SQL 10 : RETRIEVAL WITH > - SELECT

SELECT EMPID, EFNAME FROM EMPLOYEE WHERE EMPSAL>10000;

OUTPUT

EMPID EFNAME
---------+---------+---------+---------+---------+---
B0001 ANURAG
E0001 PRADEEP
E0005 SINI

SELECT EMPID, EFNAME FROM EMPLOYEE WHERE EMPSAL>=10000;

SELECT EMPID, EFNAME FROM EMPLOYEE WHERE EMPSAL<10000;

SELECT EMPID, EFNAME FROM EMPLOYEE WHERE EMPSAL<=10000;

SELECT EMPID, EFNAME FROM EMPLOYEE WHERE EMPSAL<>10000;


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___';

SELECT * FROM EMP WHERE EFNAME LIKE '%A';

SELECT * FROM EMP WHERE ELNAME LIKE '_A';

SQL 14 : SELECT - IN

SELECT * FROM EMPLOYEE WHERE EMPDEPT IN (‘D0001’, ‘D0002’, ‘D0003’);

SELECT * FROM EMPLOYEE WHERE EMPDEPT NOT IN (‘D0001’, ‘D0002’, ‘D0003’);

SQL 15 : SELECT - BETWEEN >= AND <=

SELECT * FROM EMPLOYEE WHERE EMPSAL BETWEEN 10000 AND 20000;


SELECT * FROM EMPLOYEE WHERE EMPSAL NOT BETWEEN 10000 AND 20000;

SELECT * FROM EMPLOYEE WHERE EMPSAL >=10000 AND EMPSAL <= 20000;

SELECT * FROM EMPLOYEE WHERE EMPSAL < 10000 OR EMPSAL > 20000;

SELECT * FROM EMPLOYEE WHERE EMPDEPT=D0001 OR EMPDEPT = D0002);

SQL 16 : AGGREGATE FUNCTION

SELECT AVG(EMPSAL) FROM EMPLOYEE;

SELECT COUNT(*) FROM EMPLOYEE ;

SELECT COUNT(EMPSAL) FROM EMPLOYEE ;

SELECT MIN(EMPSAL) FROM EMPLOYEE;

SELECT MAX(EMPSAL) 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 NAMEIS FROM EMPLOYEE;

SQL 17 : AGGREGATE FUNCTION

SELECT DATE(EMBDOB) FROM EMPLOYEE; Returns 2016-01-05

SELECT DAY(EMPDOB) FROM EMPLOYEE; Returns in the range 1 to 31. NO OF DAYS


FROM BEGINNING MONTH

SELECT DAYOFWEEK(‘2016-12-03’) FROM SYSIBM.SYSDUMMY1; Returns 7 for Saturday.

SELECT DAYOFYEAR(EMPDOB) FROM EMPLOYEE; Returns day from January 1st.

SELECT WEEK(EMPDOB) FROM EMPLOYEE; Returns WEEK from January 1st.

SELECT QUARTER(EMPDOB) FROM EMPLOYEE; Returns QUARTER(1,2,3,4) from January 1st.

SELECT MONTH(EMPDOB) FROM EMPLOYEE; Returns in the range 1 to 12.

SELECT YEAR(EMPDOB) AS YEAR1 FROM EMPLOYEE; Returns 2016, returns year part

SELECT DAYS(EMPDOB) AS DAYS1 FROM EMPLOYEE; Returns 735968 of 2016-01-05FROM


1600, 31ST DEC.

SELECT TIME("19:30:10") FROM SYSIBM.SYSDUMMY1; Returns 19:30:10

SELECT TIME(DOT), HOUR(DOT), SECOND(DOT), MINUTE(DOT) FROM EMPLOYEE;


SELECT TIMESTAMP(DATETIME) FROM EMPLOYEE;

SELECT ADD_MONTHS (CURRENT_DATE,5) FROM SYSIBM.SYSDUMMY1;

SELECT DAYS (CURRENT DATE) - DAYS (DATE('1999-10-22')) FROM SYSIBM.SYSDUMMY1;


Calculates the difference between two dates

SELECT LAST_DAY(CURRENT DATE) FROM SYSIBM.SYSDUMMY1; RETURNS THE LAST DAY OF


THE MONTH FOR THE SPECIFIED DB2 DATE OR TIMESTAMP

SELECT NEXT_DAY(CURRENT DATE,'FRIDAY') FROM SYSIBM.SYSDUMMY1; RETURNS A


TIMESTAMP SPECIFYING THE FIRST FRIDAY AFTER TODAY.

SELECT LOCATE(‘N’,ELNAME) FROM EMPLOYEE; Returns first N position in ELNAME

SELECT LOCATE(‘N’,ELNAME,10) FROM EMPLOYEE; Returns first N in ELNAME


From 10th position onwards

SELECT RIGHT(ENAME,2) FROM EMPLOYEE; Returns last two characters of all the
ENAME column

SELECT RIGHT('SQL Tutorial', 3) FROM SYSIBM.SYSDUMMY1; Returns ial

SELECT LEFT(ENAME,2) FROM EMPLOYEE; Returns two position from left for all column of
ENAME

SELECT LEFT('SQL Tutorial', 3) FROM SYSIBM.SYSDUMMY1; Returns SQL

SELECT LENGTH(EFNAME) FROM EMPLOYEE1;RETURNS THE LENGTH OF THE COLUMN

SELECT LENGTH(EMPNAME) FROM EMPLOYEE; RETURNS THE MAX SIZE OF THE COLUMN i.e
10 , IF VARCHAR AND THE VALUE ENTERED IS ABCD THEN THE LENGTH RETURNS4.

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

SELECT LOWER(EFNAME) FROM EMPLOYEE;

SELECT UPPER(EFNAME) FROM EMPLOYEE;

SELECT CONCAT('MR.',ENAME) FROM EMPLOYEE;

SELECT 'MR.'||ENAME||'@'||'YAHOO.COM' FROM EMPLOYEE;

SELECT REPLACE('JACK AND JUE','J','BL') FROM EMPLOYEE; => BLACK AND BLUE

SELECT RTRIM('SQL Tutorial ') AS RightTrimmedString; Removes trailing spaces


from a string.

SELECT LTRIM(' SQL Tutorial') AS LeftTrimmedString; RemoveS leading spaces


from a string

SELECT STRIP(NAME) FROM EMPLOYEE - leading/trailing blank spaces will be removed

SELECT EMPNO ,STRIP(EMPNO,L,'*') FROM EMPLOYEE - "STRIPED LEADING *“

SELECT EMPNO ,STRIP(EMPNO,T,'*') FROM EMPLOYEE - "STRIPED TRAILING”


SELECT EMPNO ,STRIP(EMPNO,B,'*') FROM EMPLOYEE - "STRIPED BOTH *"

SELECT MOD(M,N) FROM EMPLOYEE; MOD(11,4) => 11/4 => 3 =>REMAINDER

SELECT POWER(3,2) FROM EMPLOYEE => 9

SELECT SIGN(EMPSAL) FROM EMPLOYEE; Returns 1 if EMPSAL > 0, Returns 0 if


EMPSAL = 0 and Returns -1 if EMPSAL is < 0

SELECT ROUND(EMPSAL) FROM EMPLOYEE;

SELECT SQRT(36) FROM EMPLOYEE =>6

SELECT ROUND(15.193,2) FROM EMPLOYEE =>15.2

SELECT TRUNCATE(15.193,1) FROMEMPLOYEE =>15.1

SELECT TRANSLATE(‘BACK’, ‘R’, ‘C’) FROM SYSIBM. SYSDUMMY1; THE CHARACTER


STRING ‘C’ IS REPLACED WITH THE CHARACTER STRING ‘R’.

SELECT REPEAT(‘HELLO',2) FROM SYSIBM.SYSDUMMY1;

VALUE & COALESCE & IFNULL are both same

SELECT VALUE(ENAME,'MAINFRAME') FROM EMPLOYEE => when the name is null the second
parameter 'MAINFRAME' will be displayed

SELECT EMPNO, EMPNAME, EMPSAL, VALUE(EMPSAL,0) FROM TESTDBP;

SELECT EMPNO, EMPNAME, EMPSAL, COALESCE(EMPSAL,0) FROM TESTDBP;

SELECT DEPTNO, DEPTNAME, COALESCE(MGRNO, 'ABSENT') FROM DEPARTMENT;

SELECT EMPCD,IFNULL(EMPNAME,‘HELLO') FROM EMPPLYEE; Same as VALUE

SELECT NULLIF(CITY,'MUMBAI') FROM EMPLOYEE =>when CITY=MUMBAI, NULL will be


displayed

SQL 18 : RETRIEVAL WITH COMPUTATION

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

OUTPUT
ABC

5500.00
9500.00

SQL 19 : RETRIEVAL WITH COMPUTATION

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

SQL 20 : SELECT WITH LOGICAL OPERATORS:

SELECT * FROM EMPLOYEE WHERE EMPSAL>4000 AND EMPSAL<= 5000;


SELECT * FROM EMPLOYEE WHERE EMPSAL>4000 OR EMPSAL<8000;

SQL 21 : NULL RETRIEVAL

INSERT INTO EMPLOYEE (EMPID,EFNAME,ELNAME,EMPDOB,EMPSAL,EMPDEPT)


VALUES('A000N','JAIKUM','PRADEEP','7/25/1977',NULL,'N0001');

SELECT ELNAME, EFNAME FROM EMPLOYEE WHERE EMPSAL IS NULL;

OUTPUT
-------

ELNAME EFNAME
---------+---------+----
PRADEEP JAIKUM

SELECT ELNAME, EFNAME FROM EMPLOYEE WHERE EMPSAL IS NOT NULL;

ELNAME EFNAME
---------+---------+-----
PRADEEP JAIKUM
PV PRIYA
GN ANURAG
GN ABHILAS
PV PRADEP
ROY SEEMA
VINOD SINI
KUMAR DILIP
KU DEEP
MA MINI

SQL 22 : GROUP BY & SUM

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

OUTPUT

EMPDEPT SUM(EMPSAL) IN EACH DEPT

D0001 60000.00
D0002 6000.00
D0003 12000.00
D0005 8000.00
E0002 14000.00

SQL 23 : SELECT WITH ORDER BY


- ARRANGING IN ASCENDING OR DESCENDING ORDER.
- BY DEFAULT ASCENDING ORDER

SELECT * FROM EMPLOYEE ORDER BY ENO DESC;

SELECT * FROM EMPLOYEE WHERE EMPSAL>1000 ORDER BY ENAME;

SELECT EMPID, EFNAME, ELNAME FROM EMPLOYEE ORDER BY 3 DESC;

SQL 24 : GROUP BY & HAVING

- USED TO DISPLAY THE VALUES GROUPED BY ONE PARTICULAR COLUMN VALUE.


- The GROUP BY clause is normally used along with five built-in aggregate
functions (SUM, AVG, MAX, MIN, COUNT)

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

OUTPUT:
-------
DEPT MAX(SAL)
--- --------
D0001 20000.00
D0002 6000.00
D0003 12000.00
D0005 8000.00
E0002 9000.00

NOTE : Example of ERROR

-SELECT ELNAME,AVG(SALARY) FROM EMPLOYEE GROUP BY DEPT;

Here ELNAME is not a group column and not included in GROUP BY clause.

HAVING:
-------
- WHERE IS APPLIED TO ELIMINATE ROWS FROM THE TABLE WHEREAS HAVING IS USED TO
ELIMINATE GROUPS.
- Conditions in the HAVING clause are applied after groups are formed.
- Search condition of the HAVING clause examines the grouped rows and produces
a row for each group where the search condition in the HAVING clause is true.

SELECT EMPDEPT, MAX(EMPSAL) FROM EMPLOYEE GROUP BY EMPDEPT HAVING COUNT(*)>=2;

OUTPUT:
-------
EMPDEPT MAX(SAL)
--- --------
D0001 20000.00
E0002 9000.00

Eg.

- SELECT EMPDEPT, AVG(EMPSAL), MAX(EMPSAL), MIN(EMPSAL) FROM EMPLOYEE


WHERE EMPDEPT = 'D0001' GROUP BY EMPDEPT;

OUTPUT
------
EMPDEPT AVG(SAL) MAX(SAL) MIN(SAL)

---------+---------+---------+---------+---------

D0001 12000.00 20000.00 7000.00

SQL 25 : SELECT WITH DISTINCT:


---------------
- TO GET UNIQUE
- TO ELIMINATE DUPLICATES

SELECT DISTINCT EMPSAL FROM EMPLOYEE;

EMPSAL
---------+----
5000.00
6000.00
7000.00
8000.00
9000.00
10000.00
12000.00
15000.00
20000.00

SELECT COUNT(DISTINCT EMPDEPT) FROM EMPLOYEE;

SQL 25 : SELECT WITH FETCH:

SELECT * FROM EMPLOYEE FETCH FIRST 10 RECORDS ONLY;

LAST 10 ROWS

SELECT * FROM EMPLOYEE ORDER BY EMPNO DESC FETCH FIRST 10 ROWS ONLY;

SQL 25 : UPDATE

SYNTAX:
-------------
UPDATE <TABLE NAME> SET <COLUMN NAME>=<VALUE> WHERE <CONDITION>

EX:
-----
UPDATE EMPLOYEE SET EMPDEPT='E0005' WHERE EMPID = 'E0008';

UPDATE EMPLOYEE SET TOT=MARK1+MARK2 WHERE EMPID=’E1000’;

UPDATE EMPLOYEE SET


EMPDOB='10/2/1988',
EMPSAL=9999,
EMPDEPT=NULL
WHERE EFNAME='PRIYA';
SQL 26 : DELETE

SYNTAX:

DELETE FROM <TABLE NAME> [ WHERE <CONDITION> ]

EX:
-----

DELETE FROM EMPLOYEE;

DELETE FROM EMPLOYEE WHERE EMPID=’E0001’;

DELETE FROM EMPLOYEE WHERE EFNAME='MINI';

DELETE FROM EMPLOYEE WHERE EMPNAME IS NULL;

NOTE:

For DELETE & SELECT, it should be IS NULL, but in case UPDATE, it should be = NULL.

SQL 27 : TRUNCATE

TRUNCATE TABLE EMPLOYEE; The TRUNCATE statement DELETES all of the records from a table.

DAY - 2

SQL 28 : REFERENTIAL INTEGRITY

 These constraints are used to establish Parent – Child relationship


between two tables having common column.
 To establish this relationship, a column in the parent table should be
defined as primary key and same column in the child table should be
foreign key.
 The foreign key column in the child should refer to corresponding column
in the primary key or UNIQUE NOT NULL key.

Syntax:

CREATE TABLE <Child Table Name> (<Field1><Data Type> NOT NULL, <Field2><Data
Type> CONSTRAINT<Constraint Name> REFERENCES <Parent Table Name (<Field>)>)

Or

CREATE TABLE <Child Table Name> (<Field1><Data Type> NOT NULL, FOREIGN KEY
<Field2><Data Type> CONSTRAINT<Constraint Name> REFERENCES <Parent Table Name
(<Field>)>)

ON INSERT RULES

WE CAN NOT INSERT ANY ROW IN FOREIGN KEY OF CHILD TABLE THAT IS NOT PRESENT IN
PARENT (PRIMARY) KEY OF PARENT TABLE.

DELETE RULES
---------------
USED TO CHECK WHAT HAPPENS TO A FOREIGN KEY OF A CHILD TABLE WHEN A ROW IN A
PARENT TABLE IS DELETED.

1. ON DELETE RESTRICT (DEFAULT) or ON DELETE NO ACTION

DOES NOT ALLOW TO DELETE A PARENT ROW WHEN DEPENDENTS ARE EXISTING.WHEN THAT
PARTICULAR CHILD RECORD IS DELETED, DELETION IS POSSIBLE IN PARENT TABLE.

2. ON DELETE CASCADE

IF A ROW IN PARENT TABLE IS DELETED, THE CORRESPONDING ROW IN THE CHILD TABLE
WILL ALSO BE DELETED.

3. ON DELETE SET NULL

IF A ROW IN PARENT TABLE IS DELETED, THE CORRESPONDING FOREIGN KEY ENTRY WILL
BE SET TO NULL VALUE.

NOTE:
-----

WHEN A PARENT TABLE IS DROPPED, REFERENTIAL INTEGRITY CONSTRAINT WILL BE


DROPPED WHEREAS THE CHILD TABLE WILL EXIST.

PARENT TABLE

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 DB.TS;

STEP2. CREATE UNIQUE INDEX DEPTIDX ON DEPTS(DEPT_ID);

CHILD TABLE

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 DB.TS;

STEP4. CREATE UNIQUE INDEX EMPLSIDX ON EMP(EMP_ID);

NOTE:
1. 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).
2. WHEN A PARENT TABLE IS DROPPED, REFERENTIAL INTEGRITY CONSTRAINT WILL BE
DROPPED WHEREAS THE CHILD TABLE WILL EXIST.
3. A FOREIGN KEY constraint does not have to be linked only to a PRIMARY KEY
constraint in another table; it can also be defined to reference the
columns of a UNIQUE constraint in another table.
4. Unlike primary keys, foreign keys can contain duplicate values. Also, it is
OK for them contain NULL values. Indexes aren't automatically created for
foreign keys; however, as a DBA, you can define them. A table is allowed to
contain more than one foreign key.
5. It is perfectly fine to have two foreign key columns referencing the same
primary key column in a different table since each foreign key value will
reference a different record in the related table.

SQL 29 : SELECT CASE

SELECT EMPID, EFNAME, EMPSAL,


CASE
WHEN EMPSAL <= 1000 THEN 'BELOW AVERAGE'
WHEN EMPSAL >= 1001 AND EMPSAL <=2000 THEN 'AVERAGE'
WHEN EMPSAL >= 2001 THEN 'ABOVE AVERAGE'
END AS SALARYRANGE FROM EMPLOYEE;
OUTPUT
------------
EMPID EFNAME EMPSAL SALARYRANGE
1001 RAJ 9000 AVERAGE
1002 HARI 12000 ABOVE AVERAGE
1003 VEENA 5000 BELOW AVERAGE

SQL 30 : JOIN

 THE PURPOSE OF A JOIN IS TO COMBINE THE DATA ACROSS TABLES.


 A JOIN IS ACTUALLY PERFORMED BY THE WHERE CLAUSE WHICH COMBINES THE
SPECIFIED ROWS OF TABLES.
 IF A JOIN INVOLVES IN MORE THAN TWO TABLES THEN ORACLE JOINS FIRST TWO
TABLES BASED ON THE JOINS CONDITION AND THEN COMPARES THE RESULT WITH
THE NEXT TABLE AND SO ON.
 MAXIMUM NUMBER OF TABLES THAT CAN BE JOINED IS 15.

TYPES
EQUI JOIN
NON-EQUI JOIN
SELF JOIN
CROSS JOIN
INNER JOIN
OUTER JOIN
 LEFT OUTER
 RIGHT OUTER
 FULL OUTER

NOTE:
WHEN CODING A JOIN, WE MUST TAKE EXTRA CARETO CODE PROPER
MATCHING PREDICATE FOR EACHTABLE BEING JOINED. FAILURE TO
DO SO CAN RESULTIN A CARTESIAN PRODUCT.

STEP1

CREATE TABLE DEPT


(
DEPTNO CHAR(2) NOT NULL,
DNAME CHAR(10) NOT NULL,
LOC CHAR(10) NOT NULL,
PRIMARY KEY (DEPTNO)
) IN SHRDB4.SHRTS4;

STEP2

CREATE UNIQUE INDEX IDXJ1 ON DEPT(DEPTNO);

STEP3

SQL> INSERT INTO DEPT VALUES (‘10’,’MKT’,’HYD’);


SQL> INSERT INTO DEPT VALUES (‘20’,’FIN’,’BANG’);
SQL> INSERT INTO DEPT VALUES (‘30’,’HR’,’BOMBAY’);

STEP4

SQL>SELECT * FROM DEPT;

DEPTNO DNAME LOC


------ ---------- ----------
10 MKT HYD
20 FIN BANG
30 HR BOMBAY

STEP5

CREATE TABLE EMP


(
EMPNO CHAR(3) NOT NULL,
ENAME CHAR(10) NOT NULL,
JOB CHAR(10) NOT NULL,
MGR CHAR(4),
DEPTNO CHAR(2),
PRIMARY KEY (EMPNO)
) IN SHRDB4.SHRTS4;

STEP6

CREATE UNIQUE INDEX IDXJ2 ON EMP (EMPNO);

STEP7

SQL> INSERT INTO EMP VALUES (‘111’,’SAKET’,’ANALYST’,’444’,’10’);


SQL> INSERT INTO EMP VALUES (‘222’,’SUDHA’,’CLERK’,’333’,’20’);
SQL> INSERT INTO EMP VALUES (‘333’,’JAGAN’,’MANAGER’,’111’,’10’);
SQL> INSERT INTO EMP VALUES (‘444’,’MADHU’,’ENGINEER’,’222’,’40’);
STEP8

SELECT * FROM EMP;

EMPNO ENAME JOB MGR DEPTNO


---------- ---------- ---------- ---------- ----------
111 SAKETH ANALYST 444 10
222 SUDHA CLERK 333 20
333 JAGAN MANAGER 111 10
444 MADHU ENGINEER 222 40

STEP8

EQUI JOIN

A JOIN WHICH CONTAINS AN ‘=’ OPERATOR IN THE JOINS CONDITION.

EX:

SQL> SELECT EMPNO, ENAME, JOB, DNAME,LOC FROM EMP E,DEPT D WHERE
E.DEPTNO=D.DEPTNO;

EMPNO ENAME JOB DNAME LOC


---------- ---------- ---------- ---------- ----------
111 SAKETH ANALYST MKT HYD
333 JAGAN MANAGER MKT HYD
222 SUDHA CLERK FIN BANG

ON CLAUSE

SQL> SELECT EMPNO, ENAME, JOB, DNAME,LOC FROM EMP E JOIN DEPT D
ON(E.DEPTNO=D.DEPTNO);

EMPNO ENAME JOB DNAME LOC


---------- ---------- ---------- ---------- ----------
111 SAKETH ANALYST MKT HYD
333 JAGAN MANAGER MKT HYD
222 SUDHA CLERK FIN BANG

NON-EQUI JOIN

A JOIN WHICH CONTAINS AN OPERATOR OTHER THAN ‘=’ IN THE JOINS CONDITION.

EX:

SQL> SELECT EMPNO,ENAME,JOB,DNAME,LOC FROM EMP E,DEPT D WHERE E.DEPTNO >


D.DEPTNO;

EMPNO ENAME JOB DNAME LOC


---------- ---------- ---------- ---------- ----------
222 SUDHA CLERK MKT HYD
444 MADHU ENGINEER MKT HYD
444 MADHU ENGINEER FIN BANG
444 MADHU ENGINEER HR BOMBAY

SELF JOIN

JOINING THE TABLE ITSELF IS CALLED SELF JOIN.

EX:

SQL> SELECT E1.EMPNO,E2.ENAME,E1.JOB,E2.DEPTNO FROM EMP E1,EMP E2 WHERE


E1.EMPNO=E2.MGR;

EMPNO ENAME JOB DEPTNO


---------- ---------- ---------- ----------
111 JAGAN ANALYST 10
222 MADHU CLERK 40
333 SUDHA MANAGER 20
444 SAKETH ENGINEER 10

CROSS / CARTESIAN PRODUCT JOIN

THIS WILL GIVES THE CROSS PRODUCT.

EX:
SQL> SELECT EMPNO,ENAME,JOB,DNAME,LOC FROM EMP, DEPT;

EMPNO ENAME JOB DNAME LOC


---------- ---------- ---------- ---------- ----------
111 SAKET ANALYST MKT HYD
111 SAKET ANALYST FIN BANG
111 SAKET ANALYST HR BOMBAY
222 SUDHA CLERK MKT HYD
222 SUDHA CLERK FIN BANG
222 SUDHA CLERK HR BOMBAY
333 JAGAN MANAGER MKT HYD
333 JAGAN MANAGER FIN BANG
333 JAGAN MANAGER HR BOMBAY
444 MADHU ENGINEER MKT HYD
444 MADHU ENGINEER FIN BANG
444 MADHU ENGINEER HR BOMBAY
NUMBER OF ROWS DISPLAYED IS 12

INNER JOIN

THIS WILL DISPLAY ALL THE RECORDS THAT HAVE MATCHED.

EX:
SQL> SELECT EMPNO,ENAME,JOB,DNAME,LOC FROM EMP INNER JOIN DEPT
ON EMP.DEPTNO=DEPT.DEPTNO;

EMPNO ENAME JOB DNAME LOC


---------- ---------- ---------- ---------- ----------
111 SAKETH ANALYST MKT HYD
333 JAGAN MANAGER MKT HYD
222 SUDHA CLERK FIN BANG

OUTER JOIN

OUTER JOIN GIVES THE NON-MATCHING RECORDS ALONG WITH MATCHING RECORDS.

LEFT OUTER JOIN

- RETRIEVS MATCHING ROWS FROM BOTH THE TABLES AND NON MATCHING ROWS FROM
THE LEFT TABLE.
- THE NON-MATCHING ROWS IN THE RIGHT TABLE WILL BE FILLED WITH NULL VALUES.

EX:

SQL> SELECT EMPNO,ENAME,JOB,DNAME,LOC FROM EMP LEFT OUTER JOIN DEPT


ON EMP.DEPTNO=DEPT.DEPTNO ;

OR

SQL> SELECT EMPNO,ENAME,JOB,DNAME,LOC FROM EMP E LEFT OUTER JOIN DEPT D


ON E.DEPTNO=D.DEPTNO;

EMPNO ENAME JOB DNAME LOC


---------- ---------- ---------- --------
333 JAGAN MANAGER MKT HYD
111 SAKET ANALYST MKT HYD
222 SUDHA CLERK FIN BANG
444 MADHU ENGINEER ----- -------

RIGHT OUTER JOIN

- RETRIEVS MATCHING ROWS FROM BOTH THE TABLES AND NON MATCHING ROWS FROM THE
RIGHT TABLE.
- THE NON-MATCHING ROWS IN THE LEFT TABLE WILL BE FILLED WITH NULL VALUES.
EX:

SQL> SELECT EMPNO,ENAME,JOB,DNAME,LOC FROM EMP E RIGHT OUTER JOIN DEPT D


ON E.DEPTNO=D.DEPTNO ;
OR

SQL> SELECT EMPNO,ENAME,JOB,DNAME,LOC FROM EMP LEFT OUTER JOIN DEPT


ON EMP.DEPTNO=DEPT.DEPTNO ;

EMPNO ENAME JOB DNAME LOC


---------- ---------- ---------- ---------- ----------
333 JAGAN MANAGER MKT HYD
111 SAKET ANALYST MKT HYD
222 SUDHA CLERK FIN BANG
----- ---------- ---------- HR BOMBAY

FULL OUTER JOIN

- MATCHING ROWS FROM BOTH THE SIDES AND NON MATCHING ROWS FROM BOTH THE
SIDES OF THE JOIN WILL BE FETCHED AND THE CORRESPONDING NON-MATCHING ROWS
WILL BE FILLED WITH NULL VALUES.

EX:

SQL> SELECT EMPNO,ENAME,JOB,DNAME,LOC FROM EMP E FULL JOIN DEPT D


ON E.DEPTNO=D.DEPTNO ;

EMPNO ENAME JOB DNAME LOC


---------- ---------- ---------- ---------- ----------
333 JAGAN MANAGER MKT HYD
111 SAKET ANALYST MKT HYD
222 SUDHA CLERK FIN BANG
----- ---------- ---------- HR BOMBAY
444 MADHU ENGINEER ---------- ----------
SQL 31 : CARTESIAN JOIN OR CROSS JOIN

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

SELECT EMPIDO, EFNAME, SALARY, DEPTSFROM EMPLOYEE,DEPT;

SQL 32 : SUBQUERY

- QUERY WITHIN A QUERY


- NESTING OF ONE QUERY WITHIN ANOTHER QUERY
- STATEMENT CONTAINING SUB QUERY IS CALLED PARENT STATEMENT OR MAIN QUERY
- SUBQUERY OR INNER QUERY WILL BE EXECUTED FIRST.
- MAXIMUM NUMBER OF SUB QUERIES CAN BE 15.

EXAMPLE EMP TABLE

ENO ENAME SAL DEPT


--- ----- --- ---
101 X 5000 FIN
102 Y 20000 ADMN
103 X 10000 FIN
104 A 10000 ADMN
105 B 10000 ACCT
106 C 15000 FIN

SELECT * FROM EMP WHERE SAL>=(SELECT MAX(SAL) FROM EMP)

SELECT * FROM EMP WHERE SAL >= (SELECT SAL FROM EMP WHERE ENO=’104’);

SELECT * FROM EMP WHERE SAL = (SELECT MAX(SAL) FROM EMP WHERE SAL < (SELECT
MAX(SAL) FROM EMP))

EXIST QUALIFIER
---------------

- SUBQUERY EVALUATED TO TRUE OR FALSE BASED ON CONDITION GIVEN


- RETRIEVES DATA WHEN SUBQUERY EVALUATED TRUE

SELECT * FROM EMP WHERE EXISTS ( SELECT * FROM BANK WHERE NAME LIKE 'R%')

NON EXIST QUALIFIER


---------------------------------
- RETRIEVES DATA WHEN SUBQUERY EVALUATED FALSE

SELECT * FROM EMP WHERE NOT EXISTS( SELECT * FROM BANK WHERE NAME LIKE 'R%')

SQL 34 : UNION & UNION ALL

- The UNION operator is used to combine the result-set of two or more SELECT
statements.
 Each SELECT statement within UNION must have the same number of columns
 The columns must also have similar data types
 The columns in each SELECT statement must also be in the same order
 MAXIMUM OF 15 TABLES CAN BE JOINED
 Though the column names can be different like NAME & ENAME their data
type should be compatible.

UNION
-----
- ELIMINATE DUPLICATES
- TO MERGE THE ROWS
- OUTPUT IN ASCENDING ORDER

SELECT City FROM Customers


UNION
SELECT City FROM Suppliers
ORDER BY City;

SELECT ENO FROM EMP1 UNION ALL SELECT ENO FROM EMP2

SELECT * FROM EMP1 UNION SELECT * FROM EMP2

UNION ALL
-----------------
- RETRIEVES ALL THE VALUES INCLUDING DUPLICATES

SELECT NAME FROM EMP1 UNION ALL SELECT ENAME FROM EMP2;

SELECT City FROM Customers


UNION ALL
SELECT City FROM Suppliers
ORDER BY City;

SELECT City, Country FROM Customers


WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;

SQL 34 : CREATING VIEW

VIEWS
-----
- VIEW IS A VIRTUAL TABLE
- VIEW IS NOT AN AUTONOMOUS TABLE, IT IS DEFINED IN TERMS OF OTHER BASE TABLES.

ADVANTAGE
---------
- IT IS NOT PHYSICALLY STORED IN DATABASE AND HENCE IT WILL NOT OCCUPY ANY SPACE
- IT CAN BE CREATED BY TAKING SUBSET OF ROWS AND COLUMNS FROM BASE TABLE
- IT CAN BE CREATED BY TAKING INFORMATION FROM MULTIPLE TABLES THROUGH JOINS
- THE COLUMN NAME CAN BE CHANGED IN A VIEW AND IT WILL NOT AFFECT THE INFORMATION
IN A BASE TABLE.
- VIEWS ARE LIKE WINDOW PRESENTATION OF A BASE TABLE, SO CHANGES IN BASE TABLE
WILL BE REFLECTED IN VIEWS & VICEVERSA.
- IT IS CALLED AS STORED QUERY BECAUSE THE SQL QUERY WHILE CREATING A VIEW WILL NOT
BE EXECUTED AND IT WILL BE SIMPLY STORED IN CATALOG TABLE SYSVIEWS.

CREATE VIEW V1 AS SELECT * FROM EMPLOYEE;

SELECT * FROM V1;

NOTE
- IF THE BASE TABLE IS DROPPED, VIEW IS ALSO DROPPED.
- VIEW CAN BE CREATED BY TAKING INFORAMTION FROM ANOTHER VIEW
- ALTERING THE STRUCTURE OF BASE TABLE WILL NOT AFFECT THE STRUCTURE OF THE VIEW

CREATE VIEW EMPVIEW(A1,B1,C1)


AS SELECT * FROM EMPLOYEE ;

SELECT * FROM EMPVIEW;

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;

EXAMPLES
-----------------
CREATE VIEW V1 AS SELECT * FROM EMPLOYEE;

CREATE VIEW V2 AS SELECT ENO FROM EMPLOYEE WHERE EMPSAL>10000;

CREATE VIEW V3 AS SELECT * FROM EMPLOYEE WHERE EMPSAL < 2000 WITH CHECK
OPTION;

CREATE VIEW V4 AS SELECT * FROM V1 WHERE EMPSAL > 6000;

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 EXTRACTED FROM A SINGLE TABLE

SQL 35 : GRANT & REVOKE

GRANT ALL ON EMPDEPT TO PUBLIC;

GRANT SELECT ON EMPDEPT TO LEMA02;

GRANT SELECT, UPDATE(EMPNM, EMPSAL) ON EMP TO LEMA02;

GRANT INSERT ON EMPLOYEE TO LEMA02 WITH GRANT OPTION;

REVOKE SELECT ON EMP FROM LEMA02;

REVOKE ALL ON DEPT FROM LEMA02;

SQL 36 : SELECTING FROM DB2-CATALOG

1. SELECT * FROM SYSIBM.SYSTABLES WHERE CREATOR='LEMA01'

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 ='LEMA01' AND TBNAME


='EMPLOYEE';

5. SELECT * FROM SYSIBM.SYSFOREIGNKEYS WHERE TBNAME='EMPLOYEE' AND


CREATOR='ADMIN01';

6. SELECT * FROM SYSIBM.SYSINDEXES WHERE CREATOR='ADMIN01' AND


TBNAME='EMPLOYEE';

7. SELECT * FROM SYSIBM.SYSVIEWS WHERE CREATOR='ADMIN01';

8. SELECT * FROM SYSIBM.SYSSYNONYMS WHERE CREATOR = 'ADMIN01';

9. SELECT DAY(CURRENT DATE) FROM SYSIBM.SYSDUMMY1; 25

10. SELECT DATE(CURRENT DATE) FROM SYSIBM.SYSDUMMY1; 2005-03-25

11. SELECT TIME(CURRENT TIMESTAMP) FROM SYSIBM.SYSDUMMY1;

12. SELECT DATE(CURRENT TIMESTAMP) FROM SYSIBM.SYSDUMMY1;

13. SELECT CURRENT DATE FROM SYSIBM.SYSDUMMY1 - 2005-03-25

14. SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1 - 11.09.30

15. SELECT CURRENT TIMESTAMP FROM SYSIBM.SYSDUMMY1 -


2005-03-25-11.09.30.850985

16. SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1;


17. SELECT DATE('5/31/1988') + 1 MONTH FROM SYSIBM.SYSDUMMY1;

18. SELECT DATE('5/31/1988') + 1 MONTH - 1 MONTH FROM SYSIBM.SYSDUMMY1;

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

SQL : 38 DROPING TABLE / VIEW / INDEX

DROP TABLE EMP;

DROP INDEX EMPIDX;

DROP VIEW VIEWNAM;

DROP ALIAS AS1 ;

DROP SYNONYM SN1

Drop Constraints:

Constraints defined on a table can be dropped with the help of alter table
command with Drop Constraint keyword.

Syntax: ALTER TABLE <Table Name> DROP CONSTRAINT <Constraint


Name>

e.g. ALTER TABLE EMPLOYEE DROP CONSTRAINT CDID

SQL : 39 RENAMING TABLE

RENAME TABLE EMPLOYEE TO NEW_EMPLOYEE;

SQL : 39 RENAMING A COLUMN

The RENAME COLUMN clause is a new option on the ALTER TABLE statement.

You can rename an existing column in a base table to a new name without
losing stored data

ALTER TABLE <tabname> RENAME COLUMN <column_name> TO <new_column_name>

SQL : 40 ALTERING TABLE

ALTER TABLE EMPLOYEE ADD BONUS DECIMAL(6,2);

ALTER TABLE EMPLOYEE ALTER ELNAME SET DATA TYPE VARCHAR(30);

ALTER TABLE EMPLOYEE DROP PRIMARY KEY;


ALTER TABLE EMPLOYEE ADD PRIMARY KEY (EMPNO);

ALTER TABLE EMP ADD AAA CHAR(4);

NOTE:
ADDS A NEW COLUMN WITH NULL VALUES, BUT
ALTER TABLE EMP ADD AAA CHAR(4) NOT NULL IS NOT ALLOWED .
TO OVERCOME TRY NEXT COMMAND WITH DEFALUT VALUES.

ALTER TABLE EMP ADD PHONE VARCHAR(10) NOT NULL WITH DEFAULT ;

SQL : 41 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 USERID.TABLENAME / VIEWNAME

CREATE SYNONYM S1 FOR EMPLOYEE;

CREATE SYNONYM S2 FOR V1;

SQL : 42 ALIAS

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

CREATE ALIAS AA FOR EMPLOYEE;

SQL 43:COMMIT/ ROLLBACK.

COMMIT
-------------
- IT IS USED TO SAVE THE TRANSACTION
- IT IS USED TO MAKE ALL THE CHANGES PERMANENTLY IN A DATABASE

COMMIT;

ROLLBACK
------------------
- IT IS USED TO UNDO ALL THE CHANGES MADE IN THE PRESENT TRANSACTION
ROLLBACK;

******************* END **************************************

DB2 – 10 DETAILS

1. Table Name 30 characters( now 128 characters) Column name (18


characters ( now 30 characters)
2. Cursor Name – 30
3. Database Name – 8
4. Plan Name – 8
5. Package name - 8
6. Table Space name – 8
7. PGM Name – 8
8. Maximm Sub query in one statement – 224
9. Char – 255
10. VARCHAR – 4046
11. Maximum Column in one Table – 750
12. Maximum number of records can be inserted in one INSERT is 32767
13. Partition – 64
14. SQLCA – 136
15. SQLCODE – PIC S9(9) COMP-4
16.

------SCROLLABLE CURSOR DETAILS-----

Direction Detail
option
Positions the cursor on the next row and read that row.
NEXT This is the default if no position is specified.

Positions the cursor on the previous row and read that row
PRIOR
Positions the cursor on the first row and read that row
FIRST
Positions the cursor on the last row and read that row
LAST
Positions the cursor before the first row.[No data is read
BEFORE in this case]

Positions the cursor after the last row.[No data is read in


AFTER this case]

Read the current row but does not change the cursor
CURRENT
position.

Evaluates (a host variable or integer) n in relationship


tothe cursor’s current position.
RELATIVE n For example,ifn is -1,the cursor is positioned on the
previous row of the result table.
If n is +3,the cursor is positioned three rows after the
current row.
ABSOLUTE n If n is ZERO : CURSOR will be positioned before the
FIRST row of result table.
Direction Detail
option
Ifn is positive : CURSOR will be positioned on nthrecord of
result table from TOP.
n = 3 : CURSOR will be positioned on 3rdrecord of result
table from TOP

If n is negative : CURSOR will be positioned on


(last+nth+1)record of result table from BOTTOM.
Let say result table has total 10 record.So
n= -1 : CURSOR will be positioned on LAST Record
[(10-1+1) = 10]

n= -3 : CURSOR will be positioned on 8th Record


[(10-3+1) = 8]

===============================================================

You might also like