Tuesday, 16 May 2023

SQL NOTES BRIEFELY

 



















 










/* 

we can divide total SQL concepts  into the following parts.

1) DDL: Data Definition Language - Create, Alter, Drop, Rename, Truncate, Grant, Revoke, Flashback

2) DQL: Data Query Language - Select

3) DML: Data Manipulation Language - Insert, Update, Delete

4) TCL: Transaction Control Language - Commit, Rollback, Savepoint




First Statement in Oracle SQL Developer;


Select 'SQL' as Technology from dual;


Select 

  (4+6 )as addition

, (4-6) as subtraction

, (4*6) as multiplication

, (44/6) as Division

--, (2>3) as boolean_1

--, (2=3) as boolean_2

--, (2!=3) as boolean_3

--, (2<3) as boolean_4 

, sysdate as Today_Date

from dual;


-------- general procedure of writing queries -----------

Select

list of columns

from Table(s)

Where

group by

having

order by


Distinct - to get unique records


* - to get all columns from table


When a calculation has more than one operators, it follows following the precedence(Sequence)

1) ()

2) *(Multiplication), /

3) +, -

*/

select * from table_1_sales_order;

select * from  table_6_salessummary;

select Tab_1.* from  table_6_salessummary Tab_1;

select Tab_1.* from  table_6_salessummary as Tab_1 ;


describe table_6_salessummary;

select CUSTOMER_NAME,POSTAL_CODE,CITY from  table_6_salessummary;


select CUSTOMER_NAME as CNAME,POSTAL_CODE ZIP,CITY  from  table_6_salessummary;


-- 1) Single line comments

-- Show the metadata of table 'table_1_sales_order'

-- we use symbol ';' to terminate the SQL query.

describe table_1_sales_order;



-- 2) Multi line comments ; we put our comments in between /* and */


/* 

Show the metadata of table 'table_1_sales_order'

we use symbol ';' to terminate the SQL query.

*/

describe table_1_sales_order;


--3) Create table

/*

drop the table 'EMP_CUSTOM_TABLE' if it exists,

then create a table 'EMP_CUSTOM_TABLE' ;

*/

DROP TABLE EMP_CUSTOM_TABLE;


CREATE TABLE EMP_CUSTOM_TABLE ( 


    EMPNO NUMBER NOT NULL CONSTRAINT EMP_CUSTOM_TABLE_PK PRIMARY KEY, 


    ENAME VARCHAR2(50), 


    JOB VARCHAR2(50), 


    MGR VARCHAR2(4000), 


    HIREDATE VARCHAR2(4000), 


    EXITDATE VARCHAR2(4000), 


    SAL NUMBER, 


    COMM NUMBER, 


    DEPTNO NUMBER, 


    LOCATION VARCHAR2(400) )

    ;

create table DEPT_CUSTOM_TABLE (

  deptno number(2,0) ,

  dname  varchar2(50 char) ,

  loc    varchar2(50 char) ,

  --

  primary key (deptno)

);



insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (10,'ACCOUNTING','NEW YORK');

insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (20,'RESEARCH','DALLAS');

insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (30,'SALES','CHICAGO');

insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (40,'OPERATIONS','BOSTON');

insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (50,'RandD','HYD');

insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (60,'TRAINING','MUMBAI');


--3) insert data into table EMP_CUSTOM_TABLE;

-- entering data for all columns;


INSERT INTO EMP_CUSTOM_TABLE VALUES (7369,'SMITH','CLERK',7902,TO_DATE('17-12-1980','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'), 800,NULL,20, 'HYD');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7499,'ALLEN','SALESMAN',7698,TO_DATE('20-2-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1600,300,30,'MUMBAI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7521,'WARD','SALESMAN',7698,TO_DATE('22-2-1981','dd-mm-yyyy'),TO_DATE('19-6-1983','dd-mm-yyyy'),1250,500,30, 'CHENNAI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7566,'JONES','MANAGER',7839,TO_DATE('2-4-1981','dd-mm-yyyy'),TO_DATE('27-11-1987','dd-mm-yyyy'),2975,NULL,20, 'HYD');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7654,'MARTIN','SALESMAN',7698,TO_DATE('28-9-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1250,1400,30, 'BANGALORE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7698,'BLAKE','MANAGER',7839,TO_DATE('1-5-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),2850,NULL,30, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7782,'CLARK','MANAGER',7839,TO_DATE('9-6-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),2450,NULL,10, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7788,'SCOTT','ANALYST',7566,TO_DATE('13-JUL-87','dd-mm-rr')-85,TO_DATE('7-1-1990','dd-mm-yyyy'),3500,NULL,20, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7839,'KING','PRESIDENT',NULL,TO_DATE('17-11-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),5000,NULL,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7844,'TURNER','SALESMAN',7698,TO_DATE('8-9-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1500,0,30, 'BANGALORE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7876,'ADAMS','CLERK',7788,TO_DATE('13-JUL-87', 'dd-mm-rr')-51,TO_DATE('7-1-1989','dd-mm-yyyy'),1100,NULL,20, 'CHENNAI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7900,'JAMES','CLERK',7698,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),950,NULL,30, 'HYD');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7902,'FORD','ANALYST',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1983','dd-mm-yyyy'),3230,NULL,20, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7934,'MILLER','CLERK',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1400,NULL,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (7999,'FORD','ANALYST',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),3050,NULL,20, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8001 ,'KUMAR','SALES',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1600,NULL,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8002 ,'SACHIN','MARKETING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),3200,NULL,20, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8003,'RAHUL','CLERK',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1100,NULL,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8004,'GAMBHIR','TRAINING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),3000,NULL,20, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8005,'SEHWAG','TRAINING',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1700,NULL,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8006,'YURAJ','TRAINING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1985','dd-mm-yyyy'),3000,NULL,20, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8007,'DHONI','MARKETING',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1986','dd-mm-yyyy'),1300,800,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8008,'KOHLI','SALES',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1985','dd-mm-yyyy'),3050,658,20, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8009,'PANDHYA','SALES',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1988','dd-mm-yyyy'),1350,800,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8010,'DHAWAN','ADVRTISING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1989','dd-mm-yyyy'),3000,NULL,20, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8011,'BHUVANESH','SALES',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1990','dd-mm-yyyy'),1360,NULL,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8012,'KUMBLE','TRAINING',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1300,NULL,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8013,'KAPIL','TRAINING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1985','dd-mm-yyyy'),3200,300,20, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8014,'ROBIN','MARKETING',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1986','dd-mm-yyyy'),1700,NULL,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8015,'JOSHI','SALES',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1985','dd-mm-yyyy'),3800,NULL,20, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8016,'SHASHTRI','SALES',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1988','dd-mm-yyyy'),1000,NULL,10, 'DELHI');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8017,'GANGULI','ADVRTISING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1989','dd-mm-yyyy'),3300,600,20, 'PUNE');


INSERT INTO EMP_CUSTOM_TABLE VALUES (8018,'SRINADH','SALES',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1990','dd-mm-yyyy'),1800,500,10, 'DELHI') ;



-- entering data for a few columns only but not all

INSERT INTO EMP_CUSTOM_TABLE (EMPNO, ENAME , JOB, MGR) values (8080,'VVS Laxman','SALES',7782);

INSERT INTO EMP_CUSTOM_TABLE (EMPNO, ENAME , JOB, MGR,SAL, COMM , DEPTNO, LOCATION) values (8090,'Kapil Dev','SALES',7782, 1000,50, 20,'Kolkatta') ;


-- 4) Oracle Supports the following data types;

/*

1) char(n) - we use this data type to store the alphanumeric data & size is static i.e. fixed size.

EX: Name char(5)

create table names(Name char(5));

insert into names values('A') --- it shows 5 characters

insert into names values('AB') --- it shows 5 characters

insert into names values('ABC') --- it shows 5 characters

select Name, length(Name) from names;


2) varchar2(n) - we use this data type to store the alphanumeric data & size is dynamic, depends on the data we supply.

drop table names2;

create table names2(Name varchar2(5));

insert into names2 values('A'); --- it shows 1 characters;

insert into names2 values('AB'); --- it shows 2 characters;

insert into names2 values('ABC'); --- it shows 3 characters;

insert into names2 values(''); --- it shows 0 characters since we enter empty

insert into names2 values('ASDF ASF'); --- it throws error since we are entering the data with more than 5 characters

select Name, length(Name) length from names2;


3) Number(n,m);

n: precision - it means total number of digits including decimal values

m: scale - it means total number of decimal positions


number(3,1) it means total 3 digits in that 1 for decimal remain 2 for integer;


xyz.abc - 'xyz' is integer part, 'abc' is decimal part

xyz - integer part

abc - decimal part

129.345 -> 129 is integer part and 345 is decimal part


create table names3(Name varchar2(50) ,age number(2) ,  height number(3,1 ) );

-- age is allowed digits but not decimals, we have to enter age in terms of exact years;

insert into names3 values('ABC' , 3, 4);

insert into names3 values('ABC1' ,7,5);

insert into names3 values('A' , 10, 4.5);

insert into names3 values('A2' , 10.1, 4.5); it throws error since age is having decimal.

insert into names3 values('A21' , 10.1, 4.5333); it throws error since height is having two decimal points.

select * from names3;

describe names3;


4) Date

it stores the date kind of data , 'yyyy-mm-dd'

EX: '2010-Apr-20'


5) TimeStamp

it stores the date kind of data , 'yyyy-mm-dd HH:MM:SS:MS'

EX: '2010-Apr-20 11:12:05'

drop table names4;

create table names4(Name varchar2(50) ,age number(2) ,  height number(3,1 ) , DOB Date, timestamp_data_enter TIMESTAMP  NOT NULL);

-- age is allowed digits but not decimals, we have to enter age in terms of exact years;

insert into names4 values('ABC' , 3, 4, TO_DATE('2021-11-19','yyyy-mm-dd') ,  TO_TIMESTAMP('2021-11-21 11:10:10' , 'yyyy-mm-dd HH:MM:SS' ));

TO_DATE('2021-11-19','dd-mm-yyyy')

TO_TIMESTAMP('2021-11-21 11:10:10' , 'dd-mm-yyyy HH:MM:SS' )

('2021-11-19','dd-mm-yyyy')


*/



--5) Constraints

/*

inline constraints : define along with the column

outline constraints : define at the end of the table creation;


Unique: Does not allow duplicate;

Not Null : Does not allow null or empty values; we have to specify along with the column i.e. inline constraints DOES NOT outline constraints

Primary Key: Unique + Not Null;

check: allow the pre defined valiues only

Foreign Key: used to join with another table


*/



------------------------- Creating a table without Constraints ------------------------- 

drop table Product_0;

create table Product_0 (

Serial_Number  number  ,

Product_ID varchar2(500),

Product_Name varchar2(500) ,

Sub_Category varchar2(500), 

Category varchar2(500),

Segment varchar2(500)

);


Insert into Product_0 values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_0 values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_0 values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_0 values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_0 values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_0 values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');


select * from Product_0;



------------------------- Creating tables with Constraints ------------------------- 


-- Inline Constraints

drop table Product_1;

create table Product_1 (

Serial_Number  number  constraint PID Not Null , -- inline costraint

Product_ID varchar2(500),

Product_Name varchar2(500)  Not Null, -- inline costraint

Sub_Category varchar2(500), 

Category varchar2(500),

Segment varchar2(500)

);


Insert into Product_1 values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_1 values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_1 values (3,'OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

--Insert into Product_1 values (NULL,'ANCD','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

--Insert into Product_1 values (4,'ANCD',NULL,'Storage','Office Supplies','Home Office');


select * from Product_1;


------------------- Start - Unique_Key ------------------- 

drop table Product_Unique_Key;

create table Product_Unique_Key (

Serial_Number  number  Unique , -- inline costraint

Product_ID varchar2(500),

Product_Name varchar2(500) ,

Sub_Category varchar2(500), 

Category varchar2(500),

Segment varchar2(500)

);


Insert into Product_Unique_Key values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_Unique_Key values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_Unique_Key values (3,'OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

Insert into Product_Unique_Key values (NULL,'ANCD','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

--Insert into Product_Unique_Key values (3,'ANCD',NULL,'Storage','Office Supplies','Home Office');


select * from Product_Unique_Key;

------------------- End - Unique_Key ------------------- 


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


------------------- Start - Check Constraint -------------------

drop table Product_Check_Values;

create table Product_Check_Values (

Serial_Number  number  Unique , 

Product_ID varchar2(500),

Product_Name varchar2(500) ,

Sub_Category varchar2(500), 

Category varchar2(500),

Segment varchar2(500),

constraint CHECK_Segment_Values Check (Segment in ('Home Office' , 'Consumer','Corporate'))

);


Insert into Product_Check_Values values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_Check_Values values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_Check_Values values (3,'OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

Insert into Product_Check_Values values (NULL,'ANCD','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

--Insert into Product_Check_Values values (3,'ANCD',NULL,'Storage','Office Supplies','ABCD');


select * from Product_Check_Values;

------------------- End - Check Constraint ------------------- 


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


------------------- Start - Not_Null ------------------- 

drop table Product_Not_Null;

create table Product_Not_Null (

Serial_Number  number  not null , 

Product_ID varchar2(500),

Product_Name varchar2(500) ,

Sub_Category varchar2(500), 

Category varchar2(500),

Segment varchar2(500)

);


Insert into Product_Not_Null values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_Not_Null values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_Not_Null values (3,'OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

--Insert into Product_Not_Null values (NULL,'ANCD','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');


select * from Product_Not_Null;

------------------- End - Not_Null ------------------- 


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


------------------- Start - Primary_Key_Outline ------------------- 

drop table Product_Primary_Key_Outline;

create table Product_Primary_Key_Outline (

Product_ID varchar2(500) ,

Product_Name varchar2(500) ,

Sub_Category varchar2(500), 

Category varchar2(500),

Segment varchar2(500) not null,

constraint PID_PKEY_Outline primary key (Product_ID) --- outline constraint

);


Insert into Product_Primary_Key_Outline values ('OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_Primary_Key_Outline values ('OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_Primary_Key_Outline values ('OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

Insert into Product_Primary_Key_Outline values ('OFF-PA-10002005','Xerox 225','Paper','Office Supplies','Consumer');

Insert into Product_Primary_Key_Outline values ('OFF-AR-10002399','Dixon Prang Watercolor Pencils, 10-Color Set with Brush','Art','Office Supplies','Corporate');



select * from Product_Primary_Key_Outline;


--Insert into Product_Primary_Key_Outline values ('OFF-LA-10003223','zzzz','Labels','Office Supplies','Home Office'); --- error.; since trying to enter the duplicte value

--Insert into Product_Primary_Key_Outline values ('OFF-ST-10002743','xxxx','Storage','Office Supplies','Home Office');--- error ; since trying to enter the duplicte value

------------------- End - Primary_Key_Outline ------------------- 


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


------------------- Start - Multiple_Constraints_at_a_Time ------------------- 


drop table Product_Multiple_Constraints_at_a_Time;

create table Product_Multiple_Constraints_at_a_Time (

Product_ID varchar2(500) ,

Product_Name varchar2(500) ,

Sub_Category varchar2(500), 

Category varchar2(500),

Segment varchar2(500) not null,


constraint CHECK_Segment_All Check (Segment in ('Home Office' , 'Consumer','Corporate')),--- outline constraint

constraint PK_PID_PNAME_All primary key(Product_ID,Product_Name), --- outline constraint - Composite Primary Key

constraint UNIQUE_All UNIQUE  (Product_ID,Product_Name,Sub_Category,Category,Segment) --- outline constraint - Composite Unique Key


);


Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-BI-10004094','GBC Standard Plastic Binding Systems Combs','Binders','Office Supplies','Home Office');

Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-AR-10003478','Avery Hi-Liter EverBold Pen Style Fluorescent Highlighters, 4/Pack','Art','Office Supplies','Consumer');

Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-PA-10002005','Xerox 225','Paper','Office Supplies','Consumer');

Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-AR-10002399','Dixon Prang Watercolor Pencils, 10-Color Set with Brush','Art','Office Supplies','Corporate');

Insert into Product_Multiple_Constraints_at_a_Time values ('FUR-CH-10004063','Global Deluxe High-Back Managers Chair','Chairs','Furniture','Home Office');

Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-BI-10004632','Ibico Hi-Tech Manual Binding System','Binders','Office Supplies','Home Office');

Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-AR-10001662','Rogers Handheld Barrel Pencil Sharpener','Art','Office Supplies','Home Office');


------------------- End - Multiple_Constraints_at_a_Time ------------------- 


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


------------------- End - Multiple_Constraints_at_a_Time ------------------- 



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

Insert into Product_1 values ('OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_1 values ('OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_1 values ('OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

Insert into Product_1 values ('OFF-BI-10004094','GBC Standard Plastic Binding Systems Combs','Binders','Office Supplies','Home Office');

Insert into Product_1 values ('OFF-AR-10003478','Avery Hi-Liter EverBold Pen Style Fluorescent Highlighters, 4/Pack','Art','Office Supplies','Consumer');

Insert into Product_1 values ('OFF-PA-10002005','Xerox 225','Paper','Office Supplies','Consumer');

Insert into Product_1 values ('OFF-AR-10002399','Dixon Prang Watercolor Pencils, 10-Color Set with Brush','Art','Office Supplies','Corporate');

Insert into Product_1 values ('FUR-CH-10004063','Global Deluxe High-Back Managers Chair','Chairs','Furniture','Home Office');

Insert into Product_1 values ('OFF-BI-10004632','Ibico Hi-Tech Manual Binding System','Binders','Office Supplies','Home Office');


select * from EMP_CUSTOM_TABLE;


describe EMP_CUSTOM_TABLE;



-----------------------------------Sample Tables for Analysis ----------------

----------------------------------- Creating Tables and inserting Data into Tables ----------------

----------------------------------- Adding constraints after create a Table ----------------


drop table Product_Sample;

create table Product_Sample (

Product_ID varchar2(500),

Product_Name varchar2(500) ,

Sub_Category varchar2(500), 

Category varchar2(500),

Segment varchar2(500)

);


Insert into Product_Sample values ('OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_Sample values ('OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_Sample values ('OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

Insert into Product_Sample values ('OFF-BI-10004094','GBC Standard Plastic Binding Systems Combs','Binders','Office Supplies','Home Office');

Insert into Product_Sample values ('OFF-AR-10003478','Avery Hi-Liter EverBold Pen Style Fluorescent Highlighters, 4/Pack','Art','Office Supplies','Consumer');

Insert into Product_Sample values ('OFF-PA-10002005','Xerox 225','Paper','Office Supplies','Consumer');

Insert into Product_Sample values ('OFF-AR-10002399','Dixon Prang Watercolor Pencils, 10-Color Set with Brush','Art','Office Supplies','Corporate');

Insert into Product_Sample values ('FUR-CH-10004063','Global Deluxe High-Back Managers Chair','Chairs','Furniture','Home Office');

Insert into Product_Sample values ('OFF-BI-10004632','Ibico Hi-Tech Manual Binding System','Binders','Office Supplies','Home Office');

Insert into Product_Sample values ('OFF-AR-10001662','Rogers Handheld Barrel Pencil Sharpener','Art','Office Supplies','Home Office');

Insert into Product_Sample values ('TEC-PH-10004977','GE 30524EE4','Phones','Technology','Home Office');

Insert into Product_Sample values ('TEC-PH-10004539','Wireless Extenders zBoost YX545 SOHO Signal Booster','Phones','Technology','Home Office');

Insert into Product_Sample values ('OFF-FA-10001883','Alliance Super-Size Bands, Assorted Sizes','Fasteners','Office Supplies','Home Office');

Insert into Product_Sample values ('OFF-PA-10000955','Southworth 25% Cotton Granite Paper  and  Envelopes','Paper','Office Supplies','Home Office');


describe Product_Sample;


ALTER TABLE Product_Sample MODIFY Product_ID NOT NULL;


ALTER TABLE Product_Sample MODIFY Product_ID UNIQUE;


ALTER TABLE Product_Sample MODIFY Product_Name PRIMARY KEY;


ALTER TABLE Product_Sample ADD CONSTRAINT CHECK_VALUES_SEGMENT_2  

Check (Segment in ('Home Office' , 'Consumer','Corporate')) ;


describe Product_Sample;


select * from Product_Sample;

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

drop table Sample_Sales;

create table Sample_Sales (

Row_ID varchar2(500) ,

Order_ID varchar2(500) ,

Order_Date Date,

Ship_Date Date,

Ship_Mode varchar2(500) ,

Product_ID varchar2(500) ,

Customer_ID varchar2(500),

Postal_Code varchar2(500),

Sales number(6,2),

Quantity number(6,2),

----- ADDING FOREIGN KEY ON COLUMN 'Product_ID' -----

CONSTRAINT FOREIGN_KEY_PID  FOREIGN KEY (Product_ID)

REFERENCES Product_Sample (Product_ID)

ON DELETE SET NULL -- second options is 'ON DELETE CASCADE'

);


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

Insert into Sample_Sales values ('7981','CA-2011-103800',TO_DATE('01/02/2020', 'mm/dd/yyyy'),TO_DATE('01/06/2020', 'mm/dd/yyyy'),'Standard Class','OFF-PA-10000174','DP-13000','77095',16.448,2);

Insert into Sample_Sales values ('740','CA-2011-112326',TO_DATE('01/03/2020', 'mm/dd/yyyy'),TO_DATE('01/07/2020', 'mm/dd/yyyy'),'Standard Class','OFF-LA-10003223','PO-19195','60540',11.784,3);

Insert into Sample_Sales values ('741','CA-2011-112326',TO_DATE('01/03/2020', 'mm/dd/yyyy'),TO_DATE('01/07/2020', 'mm/dd/yyyy'),'Standard Class','OFF-ST-10002743','PO-19195','60540',272.736,3);

Insert into Sample_Sales values ('742','CA-2011-112326',TO_DATE('01/03/2020', 'mm/dd/yyyy'),TO_DATE('01/07/2020', 'mm/dd/yyyy'),'Standard Class','OFF-BI-10004094','PO-19195','60540',3.54,2);

Insert into Sample_Sales values ('1760','CA-2011-141817',TO_DATE('01/04/2020', 'mm/dd/yyyy'),TO_DATE('01/11/2020', 'mm/dd/yyyy'),'Standard Class','OFF-AR-10003478','MB-18085','19143',19.536,3);

Insert into Sample_Sales values ('5328','CA-2011-130813',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/07/2020', 'mm/dd/yyyy'),'Second Class','OFF-PA-10002005','LS-17230','90049',19.44,3);

Insert into Sample_Sales values ('7181','CA-2011-106054',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/06/2020', 'mm/dd/yyyy'),'First Class','OFF-AR-10002399','JO-15145','30605',12.78,3);

Insert into Sample_Sales values ('7475','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','FUR-CH-10004063','ME-17320','42420',2573.82,9);

Insert into Sample_Sales values ('7476','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','OFF-BI-10004632','ME-17320','42420',609.98,2);

Insert into Sample_Sales values ('7477','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','OFF-AR-10001662','ME-17320','42420',5.48,2);

Insert into Sample_Sales values ('7478','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','TEC-PH-10004977','ME-17320','42420',391.98,2);

Insert into Sample_Sales values ('7479','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','TEC-PH-10004539','ME-17320','42420',755.96,4);

Insert into Sample_Sales values ('7480','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','OFF-FA-10001883','ME-17320','42420',31.12,4);

Insert into Sample_Sales values ('7481','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','OFF-PA-10000955','ME-17320','42420',6.54,1);

Insert into Sample_Sales values ('7661','CA-2011-105417',TO_DATE('01/06/2020', 'mm/dd/yyyy'),TO_DATE('01/11/2020', 'mm/dd/yyyy'),'Standard Class','FUR-FU-10004864','VS-21820','77340',76.728,3);

Insert into Sample_Sales values ('7662','CA-2011-105417',TO_DATE('01/06/2020', 'mm/dd/yyyy'),TO_DATE('01/11/2020', 'mm/dd/yyyy'),'Standard Class','OFF-BI-10003708','VS-21820','77340',10.43,7);

Insert into Sample_Sales values ('593','CA-2011-135405',TO_DATE('01/08/2020', 'mm/dd/yyyy'),TO_DATE('01/12/2020', 'mm/dd/yyyy'),'Standard Class','OFF-AR-10004078','MS-17830','78041',9.344,2);

Insert into Sample_Sales values ('594','CA-2011-135405',TO_DATE('01/08/2020', 'mm/dd/yyyy'),TO_DATE('01/12/2020', 'mm/dd/yyyy'),'Standard Class','TEC-AC-10001266','MS-17830','78041',31.2,3);

Insert into Sample_Sales values ('866','CA-2011-149020',TO_DATE('01/09/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Standard Class','OFF-LA-10004272','AJ-10780','22153',2.89,1);

Insert into Sample_Sales values ('867','CA-2011-149020',TO_DATE('01/09/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Standard Class','FUR-FU-10000965','AJ-10780','22153',51.94,1);

Insert into Sample_Sales values ('717','CA-2011-130092',TO_DATE('01/10/2020', 'mm/dd/yyyy'),TO_DATE('01/13/2020', 'mm/dd/yyyy'),'First Class','FUR-FU-10000010','SV-20365','19901',9.94,2);

Insert into Sample_Sales values ('764','CA-2011-162775',TO_DATE('01/12/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Second Class','OFF-EN-10001990','CS-12250','71111',11.36,2);

Insert into Sample_Sales values ('765','CA-2011-162775',TO_DATE('01/12/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Second Class','OFF-EN-10001532','CS-12250','71111',50.94,3);

Insert into Sample_Sales values ('766','CA-2011-162775',TO_DATE('01/12/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Second Class','TEC-AC-10003174','CS-12250','71111',646.74,6);

Insert into Sample_Sales values ('767','CA-2011-162775',TO_DATE('01/12/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Second Class','OFF-BI-10004187','CS-12250','71111',5.64,3);


describe Sample_Sales;


select * from Sample_Sales;



-- ********************** Altering Database objects  **********************


------------------- Start Create Table 'Product_Table_Sample' & Insert Data into Table 'Product_Table_Sample'  -------------------


drop table Product_Table_Sample;

create table Product_Table_Sample (

Product_ID varchar2(500),

Product_Name varchar2(500) ,

Sub_Category varchar2(500), 

Category varchar2(500),

Segment varchar2(500)

);


Insert into Product_Table_Sample values ('OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');

Insert into Product_Table_Sample values ('OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

Insert into Product_Table_Sample values ('OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

Insert into Product_Table_Sample values ('OFF-BI-10004094','GBC Standard Plastic Binding Systems Combs','Binders','Office Supplies','Home Office');

Insert into Product_Table_Sample values ('OFF-AR-10003478','Avery Hi-Liter EverBold Pen Style Fluorescent Highlighters, 4/Pack','Art','Office Supplies','Consumer');

Insert into Product_Table_Sample values ('OFF-PA-10002005','Xerox 225','Paper','Office Supplies','Consumer');


Insert into Product_Table_Sample values ('OFF-AR-10002399','Dixon Prang Watercolor Pencils, 10-Color Set with Brush','Art','Office Supplies','Corporate');

Insert into Product_Table_Sample values ('FUR-CH-10004063','Global Deluxe High-Back Managers Chair','Chairs','Furniture','Home Office');

Insert into Product_Table_Sample values ('OFF-BI-10004632','Ibico Hi-Tech Manual Binding System','Binders','Office Supplies','Home Office');

Insert into Product_Table_Sample values ('OFF-AR-10001662','Rogers Handheld Barrel Pencil Sharpener','Art','Office Supplies','Home Office');

Insert into Product_Table_Sample values ('TEC-PH-10004977','GE 30524EE4','Phones','Technology','Home Office');

Insert into Product_Table_Sample values ('TEC-PH-10004539','Wireless Extenders zBoost YX545 SOHO Signal Booster','Phones','Technology','Home Office');

Insert into Product_Table_Sample values ('OFF-FA-10001883','Alliance Super-Size Bands, Assorted Sizes','Fasteners','Office Supplies','Home Office');

Insert into Product_Table_Sample values ('OFF-PA-10000955','Southworth 25% Cotton Granite Paper  and  Envelopes','Paper','Office Supplies','Home Office');



select * from Product_Table_Sample;

select COUNT(*) AS NUMBER_OF_RECORDS  from Product_Table_Sample;


------------------- End -  Create Table 'Product_Table_Sample' & Insert Data into Table 'Product_Table_Sample'  -------------------


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


------------------- Start - Changing Values in a columns using 'UPDATE' statement -------------------

select DISTINCT Segment from Product_Table_Sample;


UPDATE Product_Table_Sample set Segment='Home_Office_Segment' where Segment='Home Office' ;


select DISTINCT Segment from Product_Table_Sample;


select * from Product_Table_Sample;


------------------- End - Changing Values in a columns using 'UPDATE' statement -------------------

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

------------------- Start - Delete values in a column -------------------

DELETE  from Product_Table_Sample  where Product_ID ='OFF-BI-10004094' ;

select * from Product_Table_Sample;

DELETE  from Product_Table_Sample  where Product_ID IN ('OFF-PA-10000955','FUR-FU-10004864');


select * from Product_Table_Sample;

------------------- End - Delete values in a column -------------------


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


------------------- Start - ADD new column to table -------------------

-- we can add only one column at a time.

ALTER TABLE Product_Table_Sample  ADD NOTES VARCHAR2(200);

select * from Product_Table_Sample;

ALTER TABLE Product_Table_Sample  ADD NOTES1 VARCHAR2(200) ;

--ALTER TABLE Product_Table_Sample  ADD NOTES2 VARCHAR2(200),NOTES3 VARCHAR2(200) ;


select * from Product_Table_Sample;


--- DELETING NOTES1, NOTES1 COLUMNS from TABLE 'Product_Table_Sample';

--ALTER TABLE  Product_Table_Sample DROP COLUMN NOTES1  ;

--ALTER TABLE  Product_Table_Sample DROP COLUMN NOTES  ;

------------------------ End - ADD new column to table ------------------------


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


-------------------------- Start - Where Caluse --------------------------

-- we use where caluse to restrict the data by applying some conditions - Filtering - getting required data

-- 'where' caluse apply the condtion on individual records; (***** we apply 'Having Clause" on aggregated records *****)

-- we EQUAL symbol to get only

-- = for single value

-- in for multiple values



------------ Single Condition ------------

select * from Product_Table_Sample where Sub_Category = 'Paper';


select * from Product_Table_Sample where Category <> 'Office Supplies';


select * from Product_Table_Sample where Sub_Category in( 'Paper' , 'Binders');

--- ABOVE AND BELOW QUERIES ARE SAME

select * from Product_Table_Sample where Sub_Category =  'Paper'  OR   Sub_Category = 'Binders' ;


select * from Product_Table_Sample where Sub_Category NOT in( 'Chairs' , 'Phones' , 'Art');


select * from Sample_Sales where   Quantity =4;


select * from Sample_Sales where   Quantity <4;


select * from Sample_Sales where   Quantity <=4;


select * from Sample_Sales where   Quantity >4;


select * from Sample_Sales where   Quantity >=4;


select * from Sample_Sales where   Quantity !=4;


select * from Sample_Sales where sales >100;


--- Multiple Conditions


select * from Sample_Sales where sales >100 and Quantity >=4;


select * from Sample_Sales where sales >50 or  Quantity >=4;


select * from Sample_Sales where sales  BETWEEN 10 AND 20;

--BETWEEN INCLUDES BORDER VALUES IT MEANS IT FETCHES RECORDS WITH 10 & 20 AS WELL IN THE ABOVE QUERY


select * from Sample_Sales where sales  NOT BETWEEN 10 AND 20;


select * from Sample_Sales where Quantity  NOT BETWEEN 3 AND 8;

select * from Sample_Sales where Quantity BETWEEN 3 AND 8;


select * from Sample_Sales ORDER BY Quantity DESC


-- IS NULL, NOT IS NULL, (***** = NULL WILL NOT WORK, i.e. COUNTRY = NULL WILL NOT WORK)

-- ADDING DUMMY NULL DATA INTO TABLE

INSERT INTO Sample_Sales(ROW_ID, sales,Quantity) VALUES( 'R_NULL_1', NULL,1);

INSERT INTO Sample_Sales(ROW_ID, sales,Quantity) VALUES( 'R_NULL_2', 2,NULL);

INSERT INTO Sample_Sales(ROW_ID, sales,Quantity) VALUES( 'R_NULL_3', NULL,NULL);


SELECT * FROM SAMPLE_SALES WHERE QUANTITY IS NULL;

SELECT * FROM SAMPLE_SALES WHERE QUANTITY  IS NOT NULL;


SELECT * FROM SAMPLE_SALES WHERE SALES  IS NULL;

SELECT * FROM SAMPLE_SALES WHERE SALES  IS NOT NULL;


SELECT * FROM SAMPLE_SALES WHERE (QUANTITY IS NULL)  AND (SALES  IS NULL);

SELECT * FROM SAMPLE_SALES WHERE (QUANTITY IS NULL)  OR (SALES  IS NULL);

SELECT * FROM SAMPLE_SALES WHERE (QUANTITY IS NOT NULL)  OR (SALES  IS NULL);


--- DELETE NULL RECORDS

DELETE FROM SAMPLE_SALES WHERE (QUANTITY IS NULL)  OR (SALES  IS NULL);

------------------- End -  Where Caluse -------------------


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


-------------------------- Start - SORT THE DATA USING 'ORDER BY CLAUSE' --------------------------


-- WE USE ORDER BY CLAUSE TO SORT THE DATA EITHER IN ASCENDING(ASC) ORDER IT MEANS LOW TO HIGH

-- OR SORT THE DATA IN DESCENDING(DESC) ORDER IT MEANS HIGH TO LOW

-- DEFAULT SORTINF ORDER IS ASCENDING(ASC)

-- NULL RECORDS WILL BE SHOWN AT LAST IN ASCENDING, ON TOP IN DESCENDING ORDER

-- NULL IS TRRATED AS GREATER THAN ALL VALUES

SELECT ROW_ID, SALES,QUANTITY  FROM SAMPLE_SALES ORDER BY QUANTITY ;


SELECT ROW_ID, SALES,QUANTITY  FROM SAMPLE_SALES ORDER BY QUANTITY DESC;


SELECT ROW_ID, SALES,QUANTITY  FROM SAMPLE_SALES ORDER BY QUANTITY DESC , SALES;


SELECT ROW_ID, SALES,QUANTITY  FROM SAMPLE_SALES ORDER BY QUANTITY DESC , SALES DESC;


SELECT ROW_ID, SALES,QUANTITY  FROM SAMPLE_SALES ORDER BY QUANTITY ASC , SALES DESC;


SELECT ROW_ID, SALES,QUANTITY , ROUND(SALES/QUANTITY) AS "JUST NUM"

FROM SAMPLE_SALES ORDER BY  "JUST NUM"  ASC;


SELECT ROW_ID, SALES,QUANTITY AS QTY, ROUND(SALES/QUANTITY) AS JUST_NUM 

FROM SAMPLE_SALES ORDER BY QTY,  ROUND(SALES/QUANTITY) DESC;


SELECT ROW_ID, SALES,QUANTITY AS QTY, ROUND(SALES/QUANTITY) AS JUST_NUM 

FROM SAMPLE_SALES ORDER BY 3 DESC; -- ORDER BY COLUMN POSITION, HERE 3RD COLUMN IS 'QUANTITY'



SELECT ROW_ID, SALES,QUANTITY AS QTY, ROUND(SALES/QUANTITY) AS JUST_NUM 

FROM SAMPLE_SALES ORDER BY 3 DESC, JUST_NUM  ASC; 



SELECT DISTINCT  CATEGORY,  SUB_CATEGORY FROM PRODUCT_TABLE_SAMPLE ORDER BY CATEGORY ;


SELECT DISTINCT  CATEGORY,  SUB_CATEGORY FROM PRODUCT_TABLE_SAMPLE ORDER BY SUB_CATEGORY DESC, CATEGORY ;



------------------- End -  SORT THE DATA USING 'ORDER BY CLAUSE -------------------


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


-- ************* FUNCTIONS **************


-------------------------- Start - STRING FUNCTIONS --------------------------

SELECT *  FROM PRODUCT_TABLE_SAMPLE;


Insert into PRODUCT_TABLE_SAMPLE values ('DUMMY_1','   DUMMY1   ','DUMMY@YAHOO.COM','DUMMY ASDF DUMMY','ASDF');

Insert into PRODUCT_TABLE_SAMPLE values ('DUMMY_2','DUMMY2','DUMMY2@GMAIL.COM','DUMMY 123 DUMMY','  ASDF  ');

Insert into PRODUCT_TABLE_SAMPLE values ('DUMMY_3','DUMMY3    ','DUMMY3@MAIL.COM','DUMMY_DUMMY','ASDF   ');

Insert into PRODUCT_TABLE_SAMPLE values ('DUMMY_4','duMMy4','DUMMY4@MSN.COM','DUMMY+DUMMY','asdf ');



SELECT

    PRODUCT_ID

, SEGMENT SEG

, UPPER(SEGMENT) UPPER_SEG

, LOWER(SEGMENT) LOWER_SEG

, INITCAP(SEGMENT) INITCAP_SEG

, LENGTH(SEGMENT) LENGTH_SEG

, LTRIM(SEGMENT) LTRIM_SEG

, RTRIM(SEGMENT) RTRIM_SEG

, TRIM(SEGMENT) TRIM_SEG

, LENGTH(TRIM(SEGMENT)) LEN_TRIM_SEG

, CONCAT(CONCAT(TRIM(SEGMENT) , ' ; '), PRODUCT_ID) CONCACT

FROM PRODUCT_TABLE_SAMPLE

WHERE Product_ID LIKE 'DUMM%';



SELECT

    PRODUCT_ID

,   CATEGORY

,  SUB_CATEGORY

, INSTR(SUB_CATEGORY, '@') POSITION

, SUBSTR(SUB_CATEGORY, 1,3) FIRST_3_CHARS

, SUBSTR(SUB_CATEGORY, -3) LAST_3_CHARS

, SUBSTR(SUB_CATEGORY, 3,5) BW_3_N_8

, INSTR(SUB_CATEGORY, '@')+1 POS1

, INSTR(SUB_CATEGORY, '.') POS2

, SUBSTR(SUB_CATEGORY, INSTR(SUB_CATEGORY, '@')+1, INSTR(SUB_CATEGORY, '.') - INSTR(SUB_CATEGORY, '@')-1) EML_SERV

, LPAD(SEGMENT,2, '~' ) LPAD

, RPAD(SEGMENT,3, '%%') RPAD

FROM PRODUCT_TABLE_SAMPLE

WHERE Product_ID LIKE 'DUMM%';



SELECT DISTINCT  CATEGORY,  SUB_CATEGORY FROM PRODUCT_TABLE_SAMPLE


delete FROM PRODUCT_TABLE_SAMPLE

WHERE Product_ID LIKE 'DUMM%'


------------------- End -  STRING FUNCTION -------------------


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


-------------------------- Start - NUMERICAL FUNCTIONS --------------------------

/*

ROUND(INPUT , NUM_OF_POSITIONS) : 

IF THE DECIAL VALUE IS LESS THAN .5 THEN IT GIVES NEAREST INTEGER LESS THAN GIVEN INPUT ---- FLOOR

IF THE DECIAL VALUE IS GREATER THAN .5 IT GIVES NEAREST INTEGER GREATER THAN GIVEN INPUT ---- CEIL


CEIL(INPUT_NUMBER): NEAREST INTEGER GREATER THAN GIVEN INPUT

CEIL(4.000001) = 5


FLOOR(INPUT_NUMBER) : NEAREST INTEGER LESS THAN GIVEN INPUT

FLOOR(4.9999) = 4


TRUNC(INPUT , NUM_OF_POSITIONS) : ROUND TOWARDS ZERO, IT TRUCATE THE NUMBER

TRUNC(2.45678, 2) = 2.45


*/


SELECT 

    2.7943 AS INPUT_1

,   ROUND(2.7943,2) ROUND_1

,   CEIL(2.7943) CEIL_1

,   FLOOR(2.7943) FLOOR_1

,   TRUNC(2.7943,2) TRUNC_1

,    2.4329 AS INPUT_2

,   ROUND(2.4329,2) ROUND_2

,   CEIL(2.4329) CEIL_2

,   FLOOR(2.4329) FLOOR_2

,   TRUNC(2.4329,2) TRUN_2

,   2.5 AS INPUT_3

,   ROUND(2.5,2) ROUND_3

,   CEIL(2.5) CEIL_3

,   FLOOR(2.5) FLOOR_3

,   TRUNC(2.5,2) TRUNC_3

,   TRUNC(2.5) TRUN_3_1

, REMAINDER(10,4) REM

, MOD(50,6) FACTOR

FROM DUAL;



SELECT

ROUND((10/4) ,3) DUM

, REMAINDER(45,4) REM

, MOD(50,9) FACTOR

FROM DUAL;


------------------- End -  NUMERICAL FUNCTIONS -------------------


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


-------------------------- Start - DATE FUNCTIONS --------------------------


/*DATE Functions in Oracle */

select ('HTTPS://SQL4DATAANALYSIS.BLOGSPOT.COM/') as ORACLE_SQL_Blog from dual;



-- 1)  Get current date & time

SELECT sysdate, current_date , CURRENT_TIMESTAMP , SYSTIMESTAMP from dual;


-- 2)  Get current date & Custom Format

SELECT sysdate, to_char( sysdate , 'YYYY-MM') as Year_MonthNum ,  to_char( sysdate , 'YYYY-MONTH') as Year_MonthFullName,

to_char( sysdate , 'YYYY-MON') as Year_MonthShortlName,   to_char( sysdate , 'YYYY-WW') as Year_WeekNuminYear,

to_char( sysdate , 'YYYY-W') as Year_WeekNuminMonth,

to_char( sysdate , 'MONTH-DAY') as Month_WeekDay, to_char( sysdate , 'd') as Day_of_Week

 , to_char( sysdate , 'ddd') as Day_of_Year,   to_char( sysdate , 'DY') as WeekDay

from dual;


-- 3)  Difference between 2 dates

SELECT sysdate, trunc(sysdate , 'MM') First_Day_of_Month,  trunc(sysdate , 'WW') First_Day_of_Week,

round( sysdate- (trunc(sysdate , 'MM')))  Days_Between_First_Day_of_Month_and_Today

from dual;


-- 4)  Difference between 2 dates in terms of months

SELECT sysdate, trunc(sysdate , 'MM') First_Day_of_Month, trunc(sysdate , 'MM') First_Day_of_Year, 

round(MONTHS_BETWEEN( sysdate ,  trunc(sysdate , 'YYYY'))) Months_Between_First_Day_of_Year_and_ThisMonth

from dual;


-- 5)  Getting parts of date i.e. Year, Month, Day......

SELECT sysdate, current_date , CURRENT_TIMESTAMP , SYSTIMESTAMP,

extract( Day from  sysdate) Day_of_Month, extract( Month from  sysdate) Month, extract( Year from  sysdate) Year,  

 extract( hour from  CURRENT_TIMESTAMP) Hour , extract( hour from  SYSTIMESTAMP) Hour2, 

 extract( minute from  SYSTIMESTAMP) minute,  extract( minute from  CURRENT_TIMESTAMP) minute2

from dual;


-- 6)  String to Date convertion

select to_date('2022-Jan-25', 'yyyy-mon-dd' ) string_to_Date1

from Dual;


SELECT TO_DATE('21-MAY-2017', 'DD-MM-YYYY') AS INPUT_DATE, 

TRUNC(TO_DATE('21-MAY-2017', 'DD-MM-YYYY'),'YYYY') AS FIRST_DAY_OF_YEAR, 

TRUNC(TO_DATE('21-MAY-2017', 'DD-MM-YYYY'),'MM') AS FIRST_DAY_OF_MONTH, 

TRUNC(TO_DATE('21-MAY-2017', 'DD-MM-YYYY'),'WW') AS FIRST_DAY_OF_WEEK, -- Sunday is first day of week

TRUNC(TO_DATE('21-MAY-2017', 'DD-MM-YYYY'),'W') AS FIRST_DAY_OF_WEEK2 , -- First WeekDay of month treats as first day of week then get nearest weekday in the past

TRUNC(TO_DATE('21-MAY-2017', 'DD-MM-YYYY'),'Q') AS FIRST_DAY_OF_QUARTER 

 FROM DUAL;

 

 

SELECT sysdate AS INPUT_DATE, 

 TRUNC(sysdate,'YYYY') AS FIRST_DAY_OF_YEAR, 

TRUNC(sysdate,'MM') AS FIRST_DAY_OF_MONTH, 

TRUNC(sysdate,'WW') AS FIRST_DAY_OF_WEEK,

TRUNC(sysdate,'W') AS FIRST_DAY_OF_WEEK2, -- First WeekDay of month treats as first day of week then get nearest weekday in the past

TRUNC(sysdate,'Q') AS FIRST_DAY_OF_QUARTER,

ADD_MONTHS( TRUNC(sysdate,'YYYY'), 12)-1 AS LAST_DAY_OF_YEAR,

ADD_MONTHS( TRUNC(sysdate,'Q'), 3)-1 AS LAST_DAY_OF_QUARTER,

ADD_MONTHS( TRUNC(sysdate,'MM'), 1)-1 AS LAST_DAY_OF_MONTH

 FROM DUAL;

 

 --SELECT DATEADD(MONTH, 5, '2023-01-01’) FROM DUAL;  (IT IS NOT WORKING IN MY CURRENT VERSION)

 -- SO I AM USING ADD_MONTHS INSTEAD OF DATEADD FUNCTION IN THE ABOVE QUERY

 

 

 SELECT TO_DATE('21-MAY-2017', 'DD-MM-YYYY') AS INPUT_DATE, 

ROUND(TO_DATE('21-MAY-2017', 'DD-MM-YYYY'),'YYYY') AS FIRST_DAY_OF_YEAR, 

ROUND(TO_DATE('21-MAY-2017', 'DD-MM-YYYY'),'MM') AS FIRST_DAY_OF_MONTH1,

-- DAY IS MORE THAN '15' SO WE GET NEXT MONTH 1ST DATE


ROUND(TO_DATE('11-MAY-2017', 'DD-MM-YYYY'),'MM') AS FIRST_DAY_OF_MONTH2,

-- DAY IS LESS THAN '15' SO WE GET CURRENT MONTH 1ST DATE


ROUND(TO_DATE('21-MAY-2017', 'DD-MM-YYYY'),'WW') AS FIRST_DAY_OF_WEEK, -- Sunday is first day of week

ROUND(TO_DATE('21-MAY-2017', 'DD-MM-YYYY'),'W') AS FIRST_DAY_OF_WEEK2 , -- First WeekDay of month treats as first day of

--week then get nearest weekday in the past


ROUND(TO_DATE('21-MAY-2017', 'DD-MM-YYYY'),'Q') AS FIRST_DAY_OF_QUARTER,

-- DAY IS MORE THAN '45' IN QUARTER SO WE GET NEXT QUARTER 1ST DATE


ROUND(TO_DATE('10-MAY-2017', 'DD-MM-YYYY'),'Q') AS FIRST_DAY_OF_QUARTER2 

-- DAY IS LESS THAN '45' IN QUARTER SO WE GET CURRENT QUARTER 1ST DATE

 FROM DUAL;

 

  SELECT

      TO_DATE('21-MAY-2017', 'DD-MM-YYYY') AS INPUT_DATE

,    NEXT_DAY(TO_DATE('21-MAY-2017', 'DD-MM-YYYY') , 'MONDAY') AS  NEXT_MONDAY

,    NEXT_DAY(TO_DATE('21-MAY-2017', 'DD-MM-YYYY') , 'SATDAY') AS  NEXT_SATDAY 

,    LAST_DAY(TO_DATE('21-MAY-2017', 'DD-MM-YYYY') ) AS  LAST_DAY_OF_MONTH  

   FROM DUAL;

   

   

   

SELECT SYSDATE

, to_char( SYSDATE , 'DY') DAY_OF_WEEK_STR

, to_char( SYSDATE , 'D') DAY_OF_WEEK_NUM

, to_char( SYSDATE , 'DDD') DAY_OF_YEAR

, to_char( SYSDATE , 'DD') DAY_OF_MONTH

, to_char( SYSDATE , 'DAY') DAY_OF_WEEK

, to_char( SYSDATE , 'IW') WEEKNUM_YEAR

, to_char( SYSDATE , 'WW') WEEKNUM_YEAR2

, to_char( SYSDATE , 'Q') QUART

, to_char( SYSDATE , 'MM') MONTHS

, to_char( SYSDATE , 'MON') MONTH_ABB

, to_char( SYSDATE , 'MONTH') MONTH_ABB2

, to_char( SYSDATE , 'YYYY') YEAR

from dual;


SELECT SYSDATE

, TO_DATE('2023-JAN-10', 'YYYY-MM-DD') SAMP_DT

, TO_DATE('2023-10', 'YYYY-DD') SAMP_DT2

, TO_DATE('2023-12', 'YYYY-MM') SAMP_DT3

, TO_DATE('2023-31', 'YYYY-DD') SAMP_DT4

from dual;



------------------- End -  DATE FUNCTIONS -------------------


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


-------------------------- Start - AGGREGATIONS --------------------------   

-- GROUP BY : WE USE GROUP BY CLAUSE TO AGGREGATE THE DATA

-- SPLIT THE DATA THEN APPLY AGGRGATE FUNCTION THEN COMBINE


--1) COUNT

SELECT *  FROM SAMPLE_SALES;


SELECT COUNT(*) AS NUM_RECS FROM SAMPLE_SALES;


SELECT COUNT(*) AS NUM_RECS FROM SAMPLE_SALES WHERE SALES>150;


SELECT COUNT( DISTINCT SHIP_MODE) AS NUM_SHIP_MODE FROM SAMPLE_SALES;


SELECT COUNT( DISTINCT SHIP_MODE) AS NUM_SHIP_MODE FROM SAMPLE_SALES;


SELECT COUNT(DISTINCT  CATEGORY) DIST_CNT_CATEGORY

, COUNT(ALL  CATEGORY) CNT_CATEGORY

,  COUNT(DISTINCT  SUB_CATEGORY) DIST_CNT_SUB_CAT

,  COUNT(  SUB_CATEGORY) CNT_SUB_CAT

FROM PRODUCT_TABLE_SAMPLE ;


SELECT DISTINCT  CATEGORY FROM PRODUCT_TABLE_SAMPLE ORDER BY 1 ;


SELECT DISTINCT  UPPER(SUB_CATEGORY) SUB_CAT FROM PRODUCT_TABLE_SAMPLE ORDER BY 1;


--2) SUM, MAX, MIN, AVG


SELECT SHIP_MODE

, SUM(SALES) TOT_SALES

, COUNT(ALL SHIP_MODE) NUM_REC

, COUNT(DISTINCT SHIP_MODE) NUM_REC

, MAX( SALES) MAX_SALES

, MIN( SALES) MIN_SALES

, AVG( SALES) AVG_SALES

, MEDIAN( SALES) MEDIAN_SALES

, STDDEV( SALES) STD_SALES  

FROM SAMPLE_SALES 

GROUP BY SHIP_MODE

ORDER BY SHIP_MODE;


---------- JOINS --------------

-- EQUI JOIN OR INNER JOIN - Getting All records Common Records from both tables;



---- ADDING DUMMY DATA

drop table Product_Table_Joins;

create table Product_Table_Joins (

Product_ID varchar2(500),

Product_Name varchar2(500) ,

Sub_Category varchar2(500), 

Category varchar2(500),

Segment varchar2(500)

);

Insert into Product_Table_Joins values ('DUMMY_5','P1','PSC_1','PC_1','Consumer');

Insert into Product_Table_Joins values ('DUMMY_6','P2','PSC_2','PC_2','Corporate');

Insert into Product_Table_Joins values ('DUMMY_7','P3','PSC_3','PC_3','Consumer');

Insert into Product_Table_Joins values ('DUMMY_8','P4','PSC_4','PC_4','Home Office');

Insert into Product_Table_Joins values ('DUMMY_9','P5','PSC_5','PC_5','Consumer');

Insert into Product_Table_Joins values ('DUMMY_10','P6','PSC_6','PC_6','Corporate');

Insert into Product_Table_Joins values ('DUMMY_11','P7','PSC_7','PC_7','Consumer');

Insert into Product_Table_Joins values ('DUMMY_12','P8','PSC_8','PC_8','Consumer');

Insert into Product_Table_Joins values ('DUMMY_13','P9','PSC_9','PC_9','Corporate');

Insert into Product_1 values ('DUMMY_5','P1','PSC_1','PC_1','Consumer');

Insert into Product_1 values ('DUMMY_6','P2','PSC_2','PC_2','Corporate');

Insert into Product_1 values ('DUMMY_7','P3','PSC_3','PC_3','Consumer');

Insert into Product_1 values ('DUMMY_8','P4','PSC_4','PC_4','Home Office');

Insert into Product_1 values ('DUMMY_4','P5','PSC_5','PC_5','Consumer');

Insert into Product_1 values ('DUMMY_5','P6','PSC_6','PC_6','Corporate');

Insert into Product_1 values ('DUMMY_1','P7','PSC_7','PC_7','Consumer');

Insert into Product_1 values ('DUMMY_2','P8','PSC_8','PC_8','Consumer');

Insert into Product_1 values ('DUMMY_3','P9','PSC_9','PC_9','Corporate');


Insert into Product_Table_Joins values ('DUMMY_5','P1','PSC_1','PC_1','Consumer');

Insert into Product_Table_Joins values ('DUMMY_6','P2','PSC_2','PC_2','Corporate');

Insert into Product_Table_Joins values ('DUMMY_7','P3','PSC_3','PC_3','Consumer');

Insert into Product_Table_Joins values ('DUMMY_8','P4','PSC_4','PC_4','Home Office');

Insert into Product_Table_Joins values ('DUMMY_4','P5','PSC_5','PC_5','Consumer');

Insert into Product_Table_Joins values ('DUMMY_5','P6','PSC_6','PC_6','Corporate');

Insert into Product_Table_Joins values ('DUMMY_1','P7','PSC_7','PC_7','Consumer');

Insert into Product_Table_Joins values ('DUMMY_2','P8','PSC_8','PC_8','Consumer');

Insert into Product_Table_Joins values ('DUMMY_3','P9','PSC_9','PC_9','Corporate');

Insert into Product_Table_Joins values ('P1','P10','PSC_10','PC_10','Consumer');

Insert into Product_Table_Joins values ('P2','P11','PSC_11','PC_11','Corporate');

Insert into Product_Table_Joins values ('P3','P12','PSC_12','PC_12','Consumer');

Insert into Product_Table_Joins values ('P4','P13','PSC_13','PC_13','Corporate');



DROP TABLE Sales_Table_Joins;

create table Sales_Table_Joins (

Row_ID varchar2(500) ,

Order_ID varchar2(500) ,

Order_Date Date,

Ship_Date Date,

Ship_Mode varchar2(500) ,

Product_ID varchar2(500) ,

Customer_ID varchar2(500),

Postal_Code varchar2(500),

Sales number(6,2),

Quantity number(6,2)

);



Insert into Sales_Table_Joins values ('DUMMY_1','DUMMY_ORDER_1',TO_DATE('01/01/1999', 'mm/dd/yyyy'),TO_DATE('01/02/1999', 'mm/dd/yyyy'),'NORMAL Class','P1','JG-15160','98026',68.46,2);

Insert into Sales_Table_Joins values ('DUMMY_2','DUMMY_ORDER_2',TO_DATE('01/02/1999', 'mm/dd/yyyy'),TO_DATE('01/03/1999', 'mm/dd/yyyy'),'Standard Class','P2','MC-17845','40214',1207.84,8);

Insert into Sales_Table_Joins values ('DUMMY_3','DUMMY_ORDER_3',TO_DATE('01/03/1999', 'mm/dd/yyyy'),TO_DATE('01/04/1999', 'mm/dd/yyyy'),'First Class','P1','KB-16600','47201',209.3,2);

Insert into Sales_Table_Joins values ('DUMMY_4','DUMMY_ORDER_4',TO_DATE('01/04/1999', 'mm/dd/yyyy'),TO_DATE('01/05/1999', 'mm/dd/yyyy'),'Standard Class','P1','BP-11185','10009',323.136,4);

Insert into Sales_Table_Joins values ('DUMMY_5','DUMMY_ORDER_5',TO_DATE('01/05/1999', 'mm/dd/yyyy'),TO_DATE('01/06/1999', 'mm/dd/yyyy'),'Same Day','P2','BS-11755','10009',90.93,7);

Insert into Sales_Table_Joins values ('DUMMY_6','DUMMY_ORDER_1',TO_DATE('01/01/1999', 'mm/dd/yyyy'),TO_DATE('01/02/1999', 'mm/dd/yyyy'),'NORMAL Class','P3','JG-15160','98026',68.46,2);

Insert into Sales_Table_Joins values ('DUMMY_7','DUMMY_ORDER_2',TO_DATE('01/02/1999', 'mm/dd/yyyy'),TO_DATE('01/03/1999', 'mm/dd/yyyy'),'Standard Class','DUMMY_4','MC-17845','40214',1207.84,8);

Insert into Sales_Table_Joins values ('DUMMY_8','DUMMY_ORDER_3',TO_DATE('01/03/1999', 'mm/dd/yyyy'),TO_DATE('01/04/1999', 'mm/dd/yyyy'),'First Class','DUMMY_5','KB-16600','47201',209.3,2);

Insert into Sales_Table_Joins values ('DUMMY_9','DUMMY_ORDER_4',TO_DATE('01/04/1999', 'mm/dd/yyyy'),TO_DATE('01/05/1999', 'mm/dd/yyyy'),'Standard Class','DUMMY_1','BP-11185','10009',323.136,4);

Insert into Sales_Table_Joins values ('DUMMY_10','DUMMY_ORDER_5',TO_DATE('01/05/1999', 'mm/dd/yyyy'),TO_DATE('01/06/1999', 'mm/dd/yyyy'),'Same Day','DUMMY_2','BS-11755','10009',258.75,3);

Insert into Sales_Table_Joins values ('DUMMY_1','DUMMY_ORDER_1',TO_DATE('01/01/1999', 'mm/dd/yyyy'),TO_DATE('01/02/1999', 'mm/dd/yyyy'),'NORMAL Class','DUMMY_3','JG-15160','98026',209.3,2);

Insert into Sales_Table_Joins values ('DUMMY_2','DUMMY_ORDER_1',TO_DATE('01/03/1999', 'mm/dd/yyyy'),TO_DATE('01/04/1999', 'mm/dd/yyyy'),'First Class','DUMMY_1','KB-16600','47201',323.136,4);

Insert into Sales_Table_Joins values ('DUMMY_3','DUMMY_ORDER_2',TO_DATE('01/04/1999', 'mm/dd/yyyy'),TO_DATE('01/05/1999', 'mm/dd/yyyy'),'Standard Class','DUMMY_2','BP-11185','10009',90.93,7);

Insert into Sales_Table_Joins values ('DUMMY_4','DUMMY_ORDER_3',TO_DATE('01/05/1999', 'mm/dd/yyyy'),TO_DATE('01/06/1999', 'mm/dd/yyyy'),'Same Day','DUMMY_3','BS-11755','10009',52.776,3);

Insert into Sales_Table_Joins values ('DUMMY_5','DUMMY_ORDER_5',TO_DATE('01/05/1999', 'mm/dd/yyyy'),TO_DATE('01/06/1999', 'mm/dd/yyyy'),'Same Day','DUMMY_4','BS-11755','10009',90.93,7);

Insert into Sales_Table_Joins values ('DUMMY_1','DUMMY_ORDER_1',TO_DATE('01/01/1999', 'mm/dd/yyyy'),TO_DATE('01/02/1999', 'mm/dd/yyyy'),'NORMAL Class','DUMMY_5','JG-15160','98026',209.3,2);

Insert into Sales_Table_Joins values ('DUMMY_2','DUMMY_ORDER_1',TO_DATE('01/03/1999', 'mm/dd/yyyy'),TO_DATE('01/04/1999', 'mm/dd/yyyy'),'First Class','DUMMY_1','KB-16600','47201',323.136,4);

Insert into Sales_Table_Joins values ('DUMMY_3','DUMMY_ORDER_2',TO_DATE('01/04/1999', 'mm/dd/yyyy'),TO_DATE('01/05/1999', 'mm/dd/yyyy'),'Standard Class','DUMMY_2','BP-11185','10009',90.93,7);

Insert into Sales_Table_Joins values ('DUMMY_4','DUMMY_ORDER_3',TO_DATE('01/05/1999', 'mm/dd/yyyy'),TO_DATE('01/06/1999', 'mm/dd/yyyy'),'Same Day','DUMMY_3','BS-11755','10009',52.776,3);

Insert into Sales_Table_Joins values ('DUMMY_5','DUMMY_ORDER_5',TO_DATE('01/05/1999', 'mm/dd/yyyy'),TO_DATE('01/06/1999', 'mm/dd/yyyy'),'Same Day','P29','BS-11755','10009',90.93,7);



select * from Sales_Table_Joins;


select * from Product_Table_Joins;



----- INNER JOIN FETCHES ONLY COMMON RECORDS BETWEEN TWO TABLES BASED ON THE CONDITION; 

SELECT  DISTINCT A.PRODUCT_ID ,B.PRODUCT_ID PID

FROM SALES_TABLE_JOINS A 

INNER JOIN 

PRODUCT_TABLE_JOINS B 

ON (A.PRODUCT_ID = B.PRODUCT_ID)




----- LEFT JOIN FETCHES ALL FROM LEFT SIDE TABLE ONLY COMMON RECORDS FROM RIGHT SIDE TABLE BASED ON THE CONDITION; 

--- IF ANY VALUE FROM LEFT TABLE THOSE DONT HAVE RELATED VALUES IN RIGHT SIDE TABLE THEN WE GET THE NULLS

SELECT  DISTINCT A.PRODUCT_ID ,B.PRODUCT_ID PID

FROM SALES_TABLE_JOINS A 

LEFT JOIN 

PRODUCT_TABLE_JOINS B 

ON (A.PRODUCT_ID = B.PRODUCT_ID)



----- RIGHT JOIN FETCHES ALL FROM RIGHT SIDE TABLE ONLY COMMON RECORDS FROM LEFT SIDE TABLE BASED ON THE CONDITION; 

--- IF ANY VALUE FROM RIGHT TABLE THOSE DONT HAVE RELATED VALUES IN LEFT SIDE TABLE THEN WE GET THE NULLS

SELECT  DISTINCT A.PRODUCT_ID ,B.PRODUCT_ID PID

FROM SALES_TABLE_JOINS A 

RIGHT JOIN 

PRODUCT_TABLE_JOINS B 

ON (A.PRODUCT_ID = B.PRODUCT_ID);





----- RIGHT JOIN FETCHES ALL FROM RIGHT SIDE TABLE ONLY COMMON RECORDS FROM LEFT SIDE TABLE BASED ON THE CONDITION; 

--- IF ANY VALUE FROM RIGHT TABLE THOSE DONT HAVE RELATED VALUES IN LEFT SIDE TABLE THEN WE GET THE NULLS

SELECT  DISTINCT A.PRODUCT_ID ,B.PRODUCT_ID PID

FROM SALES_TABLE_JOINS A 

FULL OUTER JOIN 

PRODUCT_TABLE_JOINS B 

ON (A.PRODUCT_ID = B.PRODUCT_ID);

SELECT DISTINCT PRODUCT_ID FROM SALES_TABLE_JOINS;


SELECT DISTINCT PRODUCT_ID FROM PRODUCT_TABLE_JOINS;






-----------------------------------Sample Tables for Analysis ----------------

----------------------------------- Creating Tables and inserting Data into Tables ----------------

----------------------------------- Adding constraints after create a Table ----------------


Saturday, 13 May 2023

SQL Short Notes

 


































































































/* 







*/
select * from table_1_sales_order;
select * from  table_6_salessummary;
select Tab_1.* from  table_6_salessummary Tab_1;
select Tab_1.* from  table_6_salessummary as Tab_1 ;

describe table_6_salessummary;
select CUSTOMER_NAME,POSTAL_CODE,CITY from  table_6_salessummary;

select CUSTOMER_NAME as CNAME,POSTAL_CODE ZIP,CITY  from  table_6_salessummary;

-- 1) Single line comments
-- Show the metadata of table 'table_1_sales_order'
-- we use symbol ';' to terminate the SQL query.
describe table_1_sales_order;


-- 2) Multi line comments ; we put our comments in between /* and */

/* 
Show the metadata of table 'table_1_sales_order'
we use symbol ';' to terminate the SQL query.
*/
describe table_1_sales_order;




--3) Create table

create table DEPT_CUSTOM_TABLE (
  deptno number(2,0) ,
  dname  varchar2(50 char) ,
  loc    varchar2(50 char) ,
  --
  primary key (deptno)
);


insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (10,'ACCOUNTING','NEW YORK');
insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (20,'RESEARCH','DALLAS');
insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (30,'SALES','CHICAGO');
insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (40,'OPERATIONS','BOSTON');
insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (50,'RandD','HYD');
insert into DEPT_CUSTOM_TABLE(DEPTNO,DNAME,LOC) values (60,'TRAINING','MUMBAI');


/*
drop the table 'EMP_CUSTOM_TABLE' if it exists,
then create a table 'EMP_CUSTOM_TABLE' ;
*/
DROP TABLE EMP_CUSTOM_TABLE;

CREATE TABLE EMP_CUSTOM_TABLE ( 

    EMPNO NUMBER NOT NULL CONSTRAINT EMP_CUSTOM_TABLE_PK PRIMARY KEY, 

    ENAME VARCHAR2(50), 

    JOB VARCHAR2(50), 

    MGR VARCHAR2(4000), 

    HIREDATE VARCHAR2(4000), 

    EXITDATE VARCHAR2(4000), 

    SAL NUMBER, 

    COMM NUMBER, 

    DEPTNO NUMBER, 

    LOCATION VARCHAR2(400) )
    ;


--3) insert data into table EMP_CUSTOM_TABLE;
-- entering data for all columns;

INSERT INTO EMP_CUSTOM_TABLE VALUES (7369,'SMITH','CLERK',7902,TO_DATE('17-12-1980','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'), 800,NULL,20, 'HYD');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7499,'ALLEN','SALESMAN',7698,TO_DATE('20-2-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1600,300,30,'MUMBAI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7521,'WARD','SALESMAN',7698,TO_DATE('22-2-1981','dd-mm-yyyy'),TO_DATE('19-6-1983','dd-mm-yyyy'),1250,500,30, 'CHENNAI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7566,'JONES','MANAGER',7839,TO_DATE('2-4-1981','dd-mm-yyyy'),TO_DATE('27-11-1987','dd-mm-yyyy'),2975,NULL,20, 'HYD');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7654,'MARTIN','SALESMAN',7698,TO_DATE('28-9-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1250,1400,30, 'BANGALORE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7698,'BLAKE','MANAGER',7839,TO_DATE('1-5-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),2850,NULL,30, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7782,'CLARK','MANAGER',7839,TO_DATE('9-6-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),2450,NULL,10, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7788,'SCOTT','ANALYST',7566,TO_DATE('13-JUL-87','dd-mm-rr')-85,TO_DATE('7-1-1990','dd-mm-yyyy'),3500,NULL,20, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7839,'KING','PRESIDENT',NULL,TO_DATE('17-11-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),5000,NULL,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7844,'TURNER','SALESMAN',7698,TO_DATE('8-9-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1500,0,30, 'BANGALORE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7876,'ADAMS','CLERK',7788,TO_DATE('13-JUL-87', 'dd-mm-rr')-51,TO_DATE('7-1-1989','dd-mm-yyyy'),1100,NULL,20, 'CHENNAI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7900,'JAMES','CLERK',7698,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),950,NULL,30, 'HYD');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7902,'FORD','ANALYST',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1983','dd-mm-yyyy'),3230,NULL,20, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7934,'MILLER','CLERK',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1400,NULL,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (7999,'FORD','ANALYST',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),3050,NULL,20, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8001 ,'KUMAR','SALES',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1600,NULL,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8002 ,'SACHIN','MARKETING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),3200,NULL,20, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8003,'RAHUL','CLERK',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1100,NULL,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8004,'GAMBHIR','TRAINING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),3000,NULL,20, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8005,'SEHWAG','TRAINING',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1700,NULL,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8006,'YURAJ','TRAINING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1985','dd-mm-yyyy'),3000,NULL,20, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8007,'DHONI','MARKETING',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1986','dd-mm-yyyy'),1300,800,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8008,'KOHLI','SALES',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1985','dd-mm-yyyy'),3050,658,20, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8009,'PANDHYA','SALES',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1988','dd-mm-yyyy'),1350,800,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8010,'DHAWAN','ADVRTISING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1989','dd-mm-yyyy'),3000,NULL,20, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8011,'BHUVANESH','SALES',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1990','dd-mm-yyyy'),1360,NULL,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8012,'KUMBLE','TRAINING',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1982','dd-mm-yyyy'),1300,NULL,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8013,'KAPIL','TRAINING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1985','dd-mm-yyyy'),3200,300,20, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8014,'ROBIN','MARKETING',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1986','dd-mm-yyyy'),1700,NULL,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8015,'JOSHI','SALES',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1985','dd-mm-yyyy'),3800,NULL,20, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8016,'SHASHTRI','SALES',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1988','dd-mm-yyyy'),1000,NULL,10, 'DELHI');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8017,'GANGULI','ADVRTISING',7566,TO_DATE('3-12-1981','dd-mm-yyyy'),TO_DATE('7-1-1989','dd-mm-yyyy'),3300,600,20, 'PUNE');

INSERT INTO EMP_CUSTOM_TABLE VALUES (8018,'SRINADH','SALES',7782,TO_DATE('23-1-1982','dd-mm-yyyy'),TO_DATE('7-1-1990','dd-mm-yyyy'),1800,500,10, 'DELHI') ;


-- entering data for a few columns only but not all
INSERT INTO EMP_CUSTOM_TABLE (EMPNO, ENAME , JOB, MGR) values (8080,'VVS Laxman','SALES',7782);
INSERT INTO EMP_CUSTOM_TABLE (EMPNO, ENAME , JOB, MGR,SAL, COMM , DEPTNO, LOCATION) values (8090,'Kapil Dev','SALES',7782, 1000,50, 20,'Kolkatta') ;

-- 4) Oracle Supports the following data types;
/*
1) char(n) - we use this data type to store the alphanumeric data & size is static.
EX: Name char(5)
create table names(Name char(5));
insert into names values('A') --- it shows 5 characters
insert into names values('AB') --- it shows 5 characters
insert into names values('ABC') --- it shows 5 characters
select Name, length(Name) from names;

2) varchar2(n) - we use this data type to store the alphanumeric data & size is dynamic.
drop table names2;
create table names2(Name varchar2(5));
insert into names2 values('A'); --- it shows 1 characters;
insert into names2 values('AB'); --- it shows 2 characters;
insert into names2 values('ABC'); --- it shows 3 characters;
insert into names2 values(''); --- it shows 0 characters since we enter empty
insert into names2 values('ASDF ASF'); --- it throws error since we are entering the data with more than 5 characters
select Name, length(Name) length from names2;

3) Number(n,m);
n: precision - it means total number of digits including decimal values
m: scale - it means total number of decimal

number(3,1) it means total 3 digits in that 1 for decimal remain two for integer;

xyz.abc - 'xyz' is integer part, 'abc' is decimal part

create table names3(Name varchar2(50) ,age number(2) ,  height number(3,1 ) );
-- age is allowed digits but not decimals, we have to enter age in terms of exact years;
insert into names3 values('ABC' , 3, 4);
insert into names3 values('ABC1' ,7,5);
insert into names3 values('A' , 10, 4.5);
insert into names3 values('A2' , 10.1, 4.5); it throws error since age is having decimal.
insert into names3 values('A21' , 10.1, 4.5333); it throws error since height is having two decimal points.
select * from names3;
describe names3;

4) Date
it stores the date kind of data , 'yyyy-mm-dd'
EX: '2010-Apr-20'

5) TimeStamp
it stores the date kind of data , 'yyyy-mm-dd HH:MM:SS:MS'
EX: '2010-Apr-20 11:12:05'
drop table names4;
create table names4(Name varchar2(50) ,age number(2) ,  height number(3,1 ) , DOB Date, timestamp_data_enter TIMESTAMP  NOT NULL);
-- age is allowed digits but not decimals, we have to enter age in terms of exact years;
insert into names4 values('ABC' , 3, 4, TO_DATE('2021-11-19','yyyy-mm-dd') ,  TO_TIMESTAMP('2021-11-21 11:10:10' , 'yyyy-mm-dd HH:MM:SS' ));
TO_DATE('2021-11-19','dd-mm-yyyy')
TO_TIMESTAMP('2021-11-21 11:10:10' , 'dd-mm-yyyy HH:MM:SS' )
('2021-11-19','dd-mm-yyyy')

*/


--5) Constraints
/*
inline constraints : define along with the column
outline constraints : define at the end of the table creation;

Unique: Does not allow duplicate;
Not Null : Does not allow null or empty values; we have to specify along with the column i.e. inline constraints DOES NOT outline constraints
Primary Key: Unique + Not Null;
check: allow the pre defined valiues only
Foreign Key: used to join with another table

*/


------------------------- Creating a table without Constraints ------------------------- 
drop table Product_0;
create table Product_0 (
Serial_Number  number  ,
Product_ID varchar2(500),
Product_Name varchar2(500) ,
Sub_Category varchar2(500), 
Category varchar2(500),
Segment varchar2(500)
);

Insert into Product_0 values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_0 values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');
Insert into Product_0 values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_0 values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');
Insert into Product_0 values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_0 values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');

select * from Product_0;


------------------------- Creating tables with Constraints ------------------------- 

-- Inline Constraints
drop table Product_1;
create table Product_1 (
Serial_Number  number  constraint PID Not Null , -- inline costraint
Product_ID varchar2(500),
Product_Name varchar2(500)  Not Null, -- inline costraint
Sub_Category varchar2(500), 
Category varchar2(500),
Segment varchar2(500)
);

Insert into Product_1 values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_1 values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');
Insert into Product_1 values (3,'OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
--Insert into Product_1 values (NULL,'ANCD','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
--Insert into Product_1 values (4,'ANCD',NULL,'Storage','Office Supplies','Home Office');

select * from Product_1;

------------------- Start - Unique_Key ------------------- 
drop table Product_Unique_Key;
create table Product_Unique_Key (
Serial_Number  number  Unique , -- inline costraint
Product_ID varchar2(500),
Product_Name varchar2(500) ,
Sub_Category varchar2(500), 
Category varchar2(500),
Segment varchar2(500)
);

Insert into Product_Unique_Key values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_Unique_Key values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');
Insert into Product_Unique_Key values (3,'OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
Insert into Product_Unique_Key values (NULL,'ANCD','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
--Insert into Product_Unique_Key values (3,'ANCD',NULL,'Storage','Office Supplies','Home Office');

select * from Product_Unique_Key;
------------------- End - Unique_Key ------------------- 

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

------------------- Start - Check Constraint -------------------
drop table Product_Check_Values;
create table Product_Check_Values (
Serial_Number  number  Unique , 
Product_ID varchar2(500),
Product_Name varchar2(500) ,
Sub_Category varchar2(500), 
Category varchar2(500),
Segment varchar2(500),
constraint CHECK_Segment_Values Check (Segment in ('Home Office' , 'Consumer','Corporate'))
);

Insert into Product_Check_Values values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_Check_Values values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');
Insert into Product_Check_Values values (3,'OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
Insert into Product_Check_Values values (NULL,'ANCD','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
--Insert into Product_Check_Values values (3,'ANCD',NULL,'Storage','Office Supplies','ABCD');

select * from Product_Check_Values;
------------------- End - Check Constraint ------------------- 

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

------------------- Start - Not_Null ------------------- 
drop table Product_Not_Null;
create table Product_Not_Null (
Serial_Number  number  not null , 
Product_ID varchar2(500),
Product_Name varchar2(500) ,
Sub_Category varchar2(500), 
Category varchar2(500),
Segment varchar2(500)
);

Insert into Product_Not_Null values (1,'OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_Not_Null values (2,'OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');
Insert into Product_Not_Null values (3,'OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
--Insert into Product_Not_Null values (NULL,'ANCD','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');

select * from Product_Not_Null;
------------------- End - Not_Null ------------------- 

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

------------------- Start - Primary_Key_Outline ------------------- 
drop table Product_Primary_Key_Outline;
create table Product_Primary_Key_Outline (
Product_ID varchar2(500) ,
Product_Name varchar2(500) ,
Sub_Category varchar2(500), 
Category varchar2(500),
Segment varchar2(500) not null,
constraint PID_PKEY_Outline primary key (Product_ID) --- outline constraint
);

Insert into Product_Primary_Key_Outline values ('OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_Primary_Key_Outline values ('OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');
Insert into Product_Primary_Key_Outline values ('OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
Insert into Product_Primary_Key_Outline values ('OFF-PA-10002005','Xerox 225','Paper','Office Supplies','Consumer');
Insert into Product_Primary_Key_Outline values ('OFF-AR-10002399','Dixon Prang Watercolor Pencils, 10-Color Set with Brush','Art','Office Supplies','Corporate');


select * from Product_Primary_Key_Outline;

--Insert into Product_Primary_Key_Outline values ('OFF-LA-10003223','zzzz','Labels','Office Supplies','Home Office'); --- error.; since trying to enter the duplicte value
--Insert into Product_Primary_Key_Outline values ('OFF-ST-10002743','xxxx','Storage','Office Supplies','Home Office');--- error ; since trying to enter the duplicte value
------------------- End - Primary_Key_Outline ------------------- 

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

------------------- Start - Multiple_Constraints_at_a_Time ------------------- 

drop table Product_Multiple_Constraints_at_a_Time;
create table Product_Multiple_Constraints_at_a_Time (
Product_ID varchar2(500) ,
Product_Name varchar2(500) ,
Sub_Category varchar2(500), 
Category varchar2(500),
Segment varchar2(500) not null,

constraint CHECK_Segment_All Check (Segment in ('Home Office' , 'Consumer','Corporate')),--- outline constraint
constraint PK_PID_PNAME_All primary key(Product_ID,Product_Name), --- outline constraint - Composite Primary Key
constraint UNIQUE_All UNIQUE  (Product_ID,Product_Name,Sub_Category,Category,Segment) --- outline constraint - Composite Unique Key

);

Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');
Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-BI-10004094','GBC Standard Plastic Binding Systems Combs','Binders','Office Supplies','Home Office');
Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-AR-10003478','Avery Hi-Liter EverBold Pen Style Fluorescent Highlighters, 4/Pack','Art','Office Supplies','Consumer');
Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-PA-10002005','Xerox 225','Paper','Office Supplies','Consumer');
Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-AR-10002399','Dixon Prang Watercolor Pencils, 10-Color Set with Brush','Art','Office Supplies','Corporate');
Insert into Product_Multiple_Constraints_at_a_Time values ('FUR-CH-10004063','Global Deluxe High-Back Managers Chair','Chairs','Furniture','Home Office');
Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-BI-10004632','Ibico Hi-Tech Manual Binding System','Binders','Office Supplies','Home Office');
Insert into Product_Multiple_Constraints_at_a_Time values ('OFF-AR-10001662','Rogers Handheld Barrel Pencil Sharpener','Art','Office Supplies','Home Office');

------------------- End - Multiple_Constraints_at_a_Time ------------------- 

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

------------------- End - Multiple_Constraints_at_a_Time ------------------- 


-------------------------------------
Insert into Product_1 values ('OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_1 values ('OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');
Insert into Product_1 values ('OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
Insert into Product_1 values ('OFF-BI-10004094','GBC Standard Plastic Binding Systems Combs','Binders','Office Supplies','Home Office');
Insert into Product_1 values ('OFF-AR-10003478','Avery Hi-Liter EverBold Pen Style Fluorescent Highlighters, 4/Pack','Art','Office Supplies','Consumer');
Insert into Product_1 values ('OFF-PA-10002005','Xerox 225','Paper','Office Supplies','Consumer');
Insert into Product_1 values ('OFF-AR-10002399','Dixon Prang Watercolor Pencils, 10-Color Set with Brush','Art','Office Supplies','Corporate');
Insert into Product_1 values ('FUR-CH-10004063','Global Deluxe High-Back Managers Chair','Chairs','Furniture','Home Office');
Insert into Product_1 values ('OFF-BI-10004632','Ibico Hi-Tech Manual Binding System','Binders','Office Supplies','Home Office');

select * from EMP_CUSTOM_TABLE;

describe EMP_CUSTOM_TABLE;


----------------------------------- Sample Tables for Analysis ----------------
----------------------------------- Creating Tables and inserting Data into Tables ----------------
----------------------------------- Adding constraints after create a Table ----------------

drop table Product_Sample;
create table Product_Sample (
Product_ID varchar2(500),
Product_Name varchar2(500) ,
Sub_Category varchar2(500), 
Category varchar2(500),
Segment varchar2(500)
);





Insert into Product_Sample values ('OFF-PA-10000174','Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book','Paper','Office Supplies','Consumer');
Insert into Product_Sample values ('OFF-LA-10003223','Avery 508','Labels','Office Supplies','Home Office');
Insert into Product_Sample values ('OFF-ST-10002743','SAFCO Boltless Steel Shelving','Storage','Office Supplies','Home Office');
Insert into Product_Sample values ('OFF-BI-10004094','GBC Standard Plastic Binding Systems Combs','Binders','Office Supplies','Home Office');
Insert into Product_Sample values ('OFF-AR-10003478','Avery Hi-Liter EverBold Pen Style Fluorescent Highlighters, 4/Pack','Art','Office Supplies','Consumer');
Insert into Product_Sample values ('OFF-PA-10002005','Xerox 225','Paper','Office Supplies','Consumer');
Insert into Product_Sample values ('OFF-AR-10002399','Dixon Prang Watercolor Pencils, 10-Color Set with Brush','Art','Office Supplies','Corporate');
Insert into Product_Sample values ('FUR-CH-10004063','Global Deluxe High-Back Managers Chair','Chairs','Furniture','Home Office');
Insert into Product_Sample values ('OFF-BI-10004632','Ibico Hi-Tech Manual Binding System','Binders','Office Supplies','Home Office');
Insert into Product_Sample values ('OFF-AR-10001662','Rogers Handheld Barrel Pencil Sharpener','Art','Office Supplies','Home Office');
Insert into Product_Sample values ('TEC-PH-10004977','GE 30524EE4','Phones','Technology','Home Office');
Insert into Product_Sample values ('TEC-PH-10004539','Wireless Extenders zBoost YX545 SOHO Signal Booster','Phones','Technology','Home Office');
Insert into Product_Sample values ('OFF-FA-10001883','Alliance Super-Size Bands, Assorted Sizes','Fasteners','Office Supplies','Home Office');
Insert into Product_Sample values ('OFF-PA-10000955','Southworth 25% Cotton Granite Paper & Envelopes','Paper','Office Supplies','Home Office');




describe Product_Sample;




ALTER TABLE Product_Sample MODIFY Product_ID NOT NULL;

ALTER TABLE Product_Sample MODIFY Product_ID UNIQUE;

ALTER TABLE Product_Sample MODIFY Product_Name PRIMARY KEY;

ALTER TABLE Product_Sample ADD CONSTRAINT CHECK_VALUES_SEGMENT_2  
Check (Segment in ('Home Office' , 'Consumer','Corporate')) ;

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

Looking at the structure of the table by using the following query;
describe Product_Sample;



Looking at the records of the table by using the following query;

select * from Product_Sample;


Looking at the records of the table by using the following query;

select * from Product_Sample;




--------------------
drop table Sample_Sales;
create table Sample_Sales (
Row_ID varchar2(500) ,
Order_ID varchar2(500) ,
Order_Date Date,
Ship_Date Date,
Ship_Mode varchar2(500) ,
Product_ID varchar2(500) ,
Customer_ID varchar2(500),
Postal_Code varchar2(500),
Sales number(6,2),
Quantity number(6,2)
);



------------------------
Insert into Sample_Sales values ('7981','CA-2011-103800',TO_DATE('01/02/2020', 'mm/dd/yyyy'),TO_DATE('01/06/2020', 'mm/dd/yyyy'),'Standard Class','OFF-PA-10000174','DP-13000','77095',16.448,2);
Insert into Sample_Sales values ('740','CA-2011-112326',TO_DATE('01/03/2020', 'mm/dd/yyyy'),TO_DATE('01/07/2020', 'mm/dd/yyyy'),'Standard Class','OFF-LA-10003223','PO-19195','60540',11.784,3);
Insert into Sample_Sales values ('741','CA-2011-112326',TO_DATE('01/03/2020', 'mm/dd/yyyy'),TO_DATE('01/07/2020', 'mm/dd/yyyy'),'Standard Class','OFF-ST-10002743','PO-19195','60540',272.736,3);
Insert into Sample_Sales values ('742','CA-2011-112326',TO_DATE('01/03/2020', 'mm/dd/yyyy'),TO_DATE('01/07/2020', 'mm/dd/yyyy'),'Standard Class','OFF-BI-10004094','PO-19195','60540',3.54,2);
Insert into Sample_Sales values ('1760','CA-2011-141817',TO_DATE('01/04/2020', 'mm/dd/yyyy'),TO_DATE('01/11/2020', 'mm/dd/yyyy'),'Standard Class','OFF-AR-10003478','MB-18085','19143',19.536,3);
Insert into Sample_Sales values ('5328','CA-2011-130813',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/07/2020', 'mm/dd/yyyy'),'Second Class','OFF-PA-10002005','LS-17230','90049',19.44,3);
Insert into Sample_Sales values ('7181','CA-2011-106054',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/06/2020', 'mm/dd/yyyy'),'First Class','OFF-AR-10002399','JO-15145','30605',12.78,3);
Insert into Sample_Sales values ('7475','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','FUR-CH-10004063','ME-17320','42420',2573.82,9);
Insert into Sample_Sales values ('7476','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','OFF-BI-10004632','ME-17320','42420',609.98,2);
Insert into Sample_Sales values ('7477','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','OFF-AR-10001662','ME-17320','42420',5.48,2);
Insert into Sample_Sales values ('7478','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','TEC-PH-10004977','ME-17320','42420',391.98,2);
Insert into Sample_Sales values ('7479','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','TEC-PH-10004539','ME-17320','42420',755.96,4);
Insert into Sample_Sales values ('7480','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','OFF-FA-10001883','ME-17320','42420',31.12,4);
Insert into Sample_Sales values ('7481','CA-2011-167199',TO_DATE('01/05/2020', 'mm/dd/yyyy'),TO_DATE('01/09/2020', 'mm/dd/yyyy'),'Standard Class','OFF-PA-10000955','ME-17320','42420',6.54,1);
Insert into Sample_Sales values ('7661','CA-2011-105417',TO_DATE('01/06/2020', 'mm/dd/yyyy'),TO_DATE('01/11/2020', 'mm/dd/yyyy'),'Standard Class','FUR-FU-10004864','VS-21820','77340',76.728,3);
Insert into Sample_Sales values ('7662','CA-2011-105417',TO_DATE('01/06/2020', 'mm/dd/yyyy'),TO_DATE('01/11/2020', 'mm/dd/yyyy'),'Standard Class','OFF-BI-10003708','VS-21820','77340',10.43,7);
Insert into Sample_Sales values ('593','CA-2011-135405',TO_DATE('01/08/2020', 'mm/dd/yyyy'),TO_DATE('01/12/2020', 'mm/dd/yyyy'),'Standard Class','OFF-AR-10004078','MS-17830','78041',9.344,2);
Insert into Sample_Sales values ('594','CA-2011-135405',TO_DATE('01/08/2020', 'mm/dd/yyyy'),TO_DATE('01/12/2020', 'mm/dd/yyyy'),'Standard Class','TEC-AC-10001266','MS-17830','78041',31.2,3);
Insert into Sample_Sales values ('866','CA-2011-149020',TO_DATE('01/09/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Standard Class','OFF-LA-10004272','AJ-10780','22153',2.89,1);
Insert into Sample_Sales values ('867','CA-2011-149020',TO_DATE('01/09/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Standard Class','FUR-FU-10000965','AJ-10780','22153',51.94,1);
Insert into Sample_Sales values ('717','CA-2011-130092',TO_DATE('01/10/2020', 'mm/dd/yyyy'),TO_DATE('01/13/2020', 'mm/dd/yyyy'),'First Class','FUR-FU-10000010','SV-20365','19901',9.94,2);
Insert into Sample_Sales values ('764','CA-2011-162775',TO_DATE('01/12/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Second Class','OFF-EN-10001990','CS-12250','71111',11.36,2);
Insert into Sample_Sales values ('765','CA-2011-162775',TO_DATE('01/12/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Second Class','OFF-EN-10001532','CS-12250','71111',50.94,3);
Insert into Sample_Sales values ('766','CA-2011-162775',TO_DATE('01/12/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Second Class','TEC-AC-10003174','CS-12250','71111',646.74,6);
Insert into Sample_Sales values ('767','CA-2011-162775',TO_DATE('01/12/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Second Class','OFF-BI-10004187','CS-12250','71111',5.64,3);
Insert into Sample_Sales values ('768','CA-2011-162775',TO_DATE('01/12/2020', 'mm/dd/yyyy'),TO_DATE('01/14/2020', 'mm/dd/yyyy'),'Second Class','OFF-ST-10000025','CS-12250','71111',572.58,6);










----------------------- FILTERS --------------------------

-------------------------- Start - Where Caluse --------------------------
-- we use where caluse to restrict the data by applying some conditions - Filtering - getting required data
-- 'where' caluse apply the condtion on individual records; (***** we apply 'Having Clause" on aggregated records *****)
-- we EQUAL symbol to get only
-- = for single value
-- in for multiple values


------------ Single Condition ------------
select * from Product_Table_Sample where Sub_Category = 'Paper';

select * from Product_Table_Sample where Category <> 'Office Supplies';

select * from Product_Table_Sample where Sub_Category in( 'Paper' , 'Binders');
--- ABOVE AND BELOW QUERIES ARE SAME
select * from Product_Table_Sample where Sub_Category =  'Paper'  OR   Sub_Category = 'Binders' ;

select * from Product_Table_Sample where Sub_Category NOT in( 'Chairs' , 'Phones' , 'Art');

select * from Sample_Sales where   Quantity =4;

select * from Sample_Sales where   Quantity <4;

select * from Sample_Sales where   Quantity <=4;

select * from Sample_Sales where   Quantity >4;

select * from Sample_Sales where   Quantity >=4;

select * from Sample_Sales where   Quantity !=4;

select * from Sample_Sales where sales >100;

--- Multiple Conditions

select * from Sample_Sales where sales >100 and Quantity >=4;

select * from Sample_Sales where sales >50 or  Quantity >=4;

select * from Sample_Sales where sales  BETWEEN 10 AND 20;
--BETWEEN INCLUDES BORDER VALUES IT MEANS IT FETCHES RECORDS WITH 10 & 20 AS WELL IN THE ABOVE QUERY

select * from Sample_Sales where sales  NOT BETWEEN 10 AND 20;

select * from Sample_Sales where Quantity  NOT BETWEEN 3 AND 8;
select * from Sample_Sales where Quantity BETWEEN 3 AND 8;

select * from Sample_Sales ORDER BY Quantity DESC

-- IS NULL, NOT IS NULL, (***** = NULL WILL NOT WORK, i.e. COUNTRY = NULL WILL NOT WORK)
-- ADDING DUMMY NULL DATA INTO TABLE
INSERT INTO Sample_Sales(ROW_ID, sales,Quantity) VALUES( 'R_NULL_1', NULL,1);
INSERT INTO Sample_Sales(ROW_ID, sales,Quantity) VALUES( 'R_NULL_2', 2,NULL);
INSERT INTO Sample_Sales(ROW_ID, sales,Quantity) VALUES( 'R_NULL_3', NULL,NULL);

SELECT * FROM SAMPLE_SALES WHERE QUANTITY IS NULL;
SELECT * FROM SAMPLE_SALES WHERE QUANTITY  IS NOT NULL;

SELECT * FROM SAMPLE_SALES WHERE SALES  IS NULL;
SELECT * FROM SAMPLE_SALES WHERE SALES  IS NOT NULL;

SELECT * FROM SAMPLE_SALES WHERE (QUANTITY IS NULL)  AND (SALES  IS NULL);
SELECT * FROM SAMPLE_SALES WHERE (QUANTITY IS NULL)  OR (SALES  IS NULL);
SELECT * FROM SAMPLE_SALES WHERE (QUANTITY IS NOT NULL)  OR (SALES  IS NULL);

--- DELETE NULL RECORDS
DELETE FROM SAMPLE_SALES WHERE (QUANTITY IS NULL)  OR (SALES  IS NULL);
------------------- End -  Where Caluse -------------------




https://docs.google.com/spreadsheets/d/1udEnl37KoNk0KywqSypAEKMz-os4QwZ9/edit?usp=sharing&ouid=105431072864618711328&rtpof=true&sd=true

EXCEL FILE
----------------------- FILTERS --------------------------






----------------------- Joins ----------------------

We are going to use the following tables to see how joins work.





















LEFT JOIN FETCHES ALL FROM LEFT SIDE TABLE AND ONLY COMMON RECORDS FROM RIGHT SIDE TABLE BASED ON THE CONDITION; 

IF ANY VALUE FROM LEFT TABLE THOSE DONT HAVE RELATED VALUES IN RIGHT SIDE TABLE THEN WE GET THE NULLS.

IN THE FOLLOWING EXAMPLE, P29 EXIST IN LEFT SIDE TABLE BUT DOES NOT EXIST IN RIGHT SIDE TABLE, SO WE ARE GETTING NULL;








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


Right join fetches all records from right side table AND only common records from left side table based on the condition.

If any value from right table those don't' have related values in left side table then we get the nulls.


















--------------SET FUNCTIONS ----------------