SQL Niit
SQL Niit
DCL:
----
TCL:
----
Syntax:
INTEGRITY CONSTRAINTS
---------------------
- USED TO PREVENT INVALID DATA ENTRY IN A DATABASE TABLE.
- INTEGRITY REFERS ACCURACY, VALIDITY OR CORRECTNESS OF DATA IN
DATABASE.
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’
CHECK CONSTRIANT:
-----------------
- 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(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;
RULES:
------
- DEFINE NOT NULL CONSTRIANT FOR PRIMARY KEY COLUMN.
- CREATE UNIQUE INDEX.
INDEX:
------
INDEX CONTAINS KEY & ADDRESS (LOCATION)
1. NON-UNIQUE INDEX
2. UNIQUE INDEX
EG:
---
CREATE UNIQUE INDEX <INDEX-NAME> ON <TNAME>(<COL-NAME>)
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;
CANDIDATE KEY:
--------------
- MORE THAN ONE KEY IN A TABLE BUT ONLY ONE PRIMARY KEY .
SQL 3 : INSERT
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.
MULTI-ROW INSERT
SQL 4 : SELECT
SYNTAX:
OUTPUT
OUTPUT
A0001 JAIKUM
A0003 PRIYA
B0001 ANURAG
B0004 ABHILASH
E0001 PRADEEP
E0003 SEEMA
E0005 SINI
E0007 DILEEP
E0008 DEEP
E0009 MINI
OUTPUT
OUTPUT
OUTPUT
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
OUTPUT
EMPID EFNAME
---------+---------+---------+---------+---------+---
B0001 ANURAG
E0001 PRADEEP
E0005 SINI
OUTPUT
OUTPUT
OUTPUT
SQL 14 : SELECT - IN
SELECT * FROM EMPLOYEE WHERE EMPSAL >=10000 AND EMPSAL <= 20000;
SELECT * FROM EMPLOYEE WHERE EMPSAL < 10000 OR EMPSAL > 20000;
SELECT YEAR(EMPDOB) AS YEAR1 FROM EMPLOYEE; Returns 2016, returns year part
SELECT RIGHT(ENAME,2) FROM EMPLOYEE; Returns last two characters of all the
ENAME column
SELECT LEFT(ENAME,2) FROM EMPLOYEE; Returns two position from left for all column of
ENAME
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 REPLACE('JACK AND JUE','J','BL') FROM EMPLOYEE; => BLACK AND BLUE
SELECT VALUE(ENAME,'MAINFRAME') FROM EMPLOYEE => when the name is null the second
parameter 'MAINFRAME' will be displayed
OUTPUT
ABC
5500.00
9500.00
SELECT EMPID, EFNAME, ELNAME, EMPSAL-5000 AS BONUS FROM EMPLOYEE WHERE EMPDEPT
LIKE 'M%';
OUTPUT
15000.00
3000.00
OUTPUT
-------
ELNAME EFNAME
---------+---------+----
PRADEEP JAIKUM
ELNAME EFNAME
---------+---------+-----
PRADEEP JAIKUM
PV PRIYA
GN ANURAG
GN ABHILAS
PV PRADEP
ROY SEEMA
VINOD SINI
KUMAR DILIP
KU DEEP
MA MINI
OUTPUT
D0001 60000.00
D0002 6000.00
D0003 12000.00
D0005 8000.00
E0002 14000.00
OUTPUT:
-------
DEPT MAX(SAL)
--- --------
D0001 20000.00
D0002 6000.00
D0003 12000.00
D0005 8000.00
E0002 9000.00
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.
OUTPUT:
-------
EMPDEPT MAX(SAL)
--- --------
D0001 20000.00
E0002 9000.00
Eg.
OUTPUT
------
EMPDEPT AVG(SAL) MAX(SAL) MIN(SAL)
---------+---------+---------+---------+---------
EMPSAL
---------+----
5000.00
6000.00
7000.00
8000.00
9000.00
10000.00
12000.00
15000.00
20000.00
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';
SYNTAX:
EX:
-----
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
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.
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.
IF A ROW IN PARENT TABLE IS DELETED, THE CORRESPONDING FOREIGN KEY ENTRY WILL
BE SET TO NULL VALUE.
NOTE:
-----
PARENT TABLE
CHILD TABLE
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 30 : JOIN
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
STEP2
STEP3
STEP4
STEP5
STEP6
STEP7
STEP8
EQUI JOIN
EX:
SQL> SELECT EMPNO, ENAME, JOB, DNAME,LOC FROM EMP E,DEPT D WHERE
E.DEPTNO=D.DEPTNO;
ON CLAUSE
SQL> SELECT EMPNO, ENAME, JOB, DNAME,LOC FROM EMP E JOIN DEPT D
ON(E.DEPTNO=D.DEPTNO);
NON-EQUI JOIN
A JOIN WHICH CONTAINS AN OPERATOR OTHER THAN ‘=’ IN THE JOINS CONDITION.
EX:
SELF JOIN
EX:
EX:
SQL> SELECT EMPNO,ENAME,JOB,DNAME,LOC FROM EMP, DEPT;
INNER JOIN
EX:
SQL> SELECT EMPNO,ENAME,JOB,DNAME,LOC FROM EMP INNER JOIN DEPT
ON EMP.DEPTNO=DEPT.DEPTNO;
OUTER JOIN
OUTER JOIN GIVES THE NON-MATCHING RECORDS ALONG WITH MATCHING RECORDS.
- 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:
OR
- 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:
- 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:
A Cartesian product IS THE RESULT OF A JOIN THAT DOES NOT SPECIFY A PREDICATE
SQL 32 : SUBQUERY
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
---------------
SELECT * FROM EMP WHERE EXISTS ( SELECT * FROM BANK WHERE NAME LIKE 'R%')
SELECT * FROM EMP WHERE NOT EXISTS( SELECT * FROM BANK WHERE NAME LIKE 'R%')
- 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 ENO FROM EMP1 UNION ALL SELECT ENO FROM EMP2
UNION ALL
-----------------
- RETRIEVES ALL THE VALUES INCLUDING DUPLICATES
SELECT NAME FROM EMP1 UNION ALL SELECT ENAME FROM EMP2;
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.
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
EXAMPLES
-----------------
CREATE VIEW V1 AS SELECT * FROM EMPLOYEE;
CREATE VIEW V3 AS SELECT * FROM EMPLOYEE WHERE EMPSAL < 2000 WITH CHECK
OPTION;
Drop Constraints:
Constraints defined on a table can be dropped with the help of alter table
command with Drop Constraint keyword.
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
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
-------
SYNTAX
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
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;
DB2 – 10 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]
Read the current row but does not change the cursor
CURRENT
position.
===============================================================