Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
21 views

SQL Queries

This document provides information on SQL commands used to create, manipulate, and query data in database tables. It describes the syntax for commands like CREATE TABLE, INSERT, SELECT, UPDATE, DELETE, ALTER TABLE, and more. It also covers data types, constraints, wildcards, aggregate functions, and formatting dates. Examples are provided throughout to illustrate the syntax and usage of each command.

Uploaded by

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

SQL Queries

This document provides information on SQL commands used to create, manipulate, and query data in database tables. It describes the syntax for commands like CREATE TABLE, INSERT, SELECT, UPDATE, DELETE, ALTER TABLE, and more. It also covers data types, constraints, wildcards, aggregate functions, and formatting dates. Examples are provided throughout to illustrate the syntax and usage of each command.

Uploaded by

Kanishka Yadav
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 12

CREATE TABLE <table-name>

( <attr-name1> <datatype>[(<size>],
<attr-name2> <datatype>[(<size>],
-- ---,
<attr-nameN> <datatype>[(<size>]
);

eg.
CREATE TABLE employee
( empID CHAR,
empName VARCHAR2(50),
empAge INTEGER,
empSalary DECIMAL(10,2)
);

DESCRIBE <table-name>;
eg. DESCRIBE employee;

INSERT COMMAND:

Syntax:
INSERT INTO <table-name>
VALUES ( <val1>, <val2>, --- <valN>);

INSERT INTO <table-name> (<attribute-list>)


VALUES ( <val1>, <val2>, --- <valN>);

eg.
INSERT INTO employee
VALUES ( 'E1', 'Ram', 21, 10000);

INSERT INTO employee (empName, empID, empSalary, empAge)


VALUES ( 'ajay', 'E5', 8000, 23);

INSERT INTO employee (empID, empAge)


VALUES ( 'E6', 25)

INSERT INTO EMPLOYEE11 (empname, empid)


VALUES('Vikas', 'E11')

SELECT COMMAND:
Syntax:
SELECT <attr-name1>, <attr-name2>, --- <attr-nameN> FROM <table-name>
[WHERE <condition>]
[ORDER BY <attr-name1>];

SELECT * FROM <table-name>;


eg.
SELECT * FROM employee;

SELECT empName, empID, empSalary FROM employee;

SELECT * FROM employee


WHERE empAge > 20;
SELECT * FROM employee
WHERE empAge > 20
ORDER BY empName ASC, empID DESC;

SELECT * FROM employee


WHERE (NOT ((empAge > 21) AND (empSalary > 8000)));

BETWEEN---AND OPERATOR
For range of values
lower and upper values are inclusive

SELECT * FROM employee


WHERE empSalary NOT BETWEEN 9000 AND 12000;

IN OPERATOR
For list of values

SELECT * FROM employee


WHERE empID NOT IN ('E1', 'E3', E5');

DISTINCT Keyword:
SELECT DISTINCT firstName FROM employee1;
ALL Keyword:
SELECT ALL firstName FROM employee1;
IS NULL operator
SELECT * FROM employee
WHERE empName IS NULL;
IS NOT NULL operator
SELECT * FROM employee
WHERE empName IS NOT NULL;

CREATING A TABLE FROM ANOTHER TABLE:

CREATE TABLE <target-table>


AS SELECT <col-list> FROM <source-table>
[WHERE <condition>];

eg.

CREATE TABLE newEmployee1


AS SELECT * FROM employee;

CREATE TABLE newEmployee2


AS SELECT * FROM employee WHERE empSalary > 10000;

DELETE COMMAND:

Syntax:

DELETE FROM <table-name>


[ WHERE <cond> ];

eg1.
DELETE FROM employee;

DELETE FROM employee


WHERE empSalary > 15000;
UPDATE COMMAND:

UPDATE <table-name>
SET <attr-name1> = <val-1>,
<attr-name2> = <val-2>
... ...
<attr-nameN> = <val-N>
[WHERE <condition>];

EG.

UPDATE employee
SET empSalary = empSalary+1000;

UPDATE employee
SET empSalary = empSalary+1000
WHERE empID IN ('E1', 'E5', 'E7');

UPDATE employee
SET empSalary = empSalary+1000,
empAge = 15
WHERE empID IN ('E1', 'E5', 'E7');

COLUMN LEVEL
SYNTAX:
CREATE TABLE <table-name>
(
<attr-name1> <datatype> <col-constraint>,
<attr-name2> <datatype> <col-constraint>,
-- --- ---,
<attr-nameN> <datatype> <col-constraint>
);

1. NOT NULL
2. PRIMARY KEY
3. UNIQUE

CREATE TABLE employee


(
empID VARCHAR(10) PRIMARY KEY,
empName VARCHAR2(50) NOT NULL UNIQUE,
empAge INTEGER ,
empSalary DECIMAL(10,2)
);

4. CHECK
CREATE TABLE employee1
(
empID VARCHAR(10) PRIMARY KEY,
empName VARCHAR2(50) NOT NULL UNIQUE,
empAge INTEGER CHECK (empAge <=60),
empSalary DECIMAL(10,2)
);
5. DEFAULT

CREATE TABLE employee2


(
empID VARCHAR(10) PRIMARY KEY,
empName VARCHAR2(50) DEFAULT 'RAM',
empAge INTEGER CHECK (empAge <=60),
empSalary DECIMAL(10,2)
);

CREATE TABLE <table-name>


(
<attr-name1> <datatype> CONSTRAINT <constraint-name1> <constraint-type>,
<attr-name2> <datatype> CONSTRAINT <constraint-name2> <constraint-type>,
-- --- -- -- ---,
<attr-nameN> <datatype> CONSTRAINT <constraint-nameN> <constraint-type>
);

CREATE TABLE employee


(
empID VARCHAR(10) CONSTRAINT pk_empID_employee PRIMARY KEY,
empName VARCHAR2(50) CONSTRAINT nn_empName_employee NOT NULL,
empCity varchar(20) CONSTRAINT un_empCity_employee UNIQUE,
empAge INTEGER CHECK (empAge <=60),
empSalary DECIMAL(10,2)
);

TO see the listing of all constraints:


SELECT * FROM USER_CONSTRAINTS;

SELECT TABLE_NAME, CONSTRAINT_NAME FROM USER_CONSTRAINTS;

SELECT TABLE_NAME, CONSTRAINT_NAME FROM USER_CONSTRAINTS


WHERE TABLE_NAME = 'EMPLOYEE';

CREATE TABLE employee1


(
empID VARCHAR(10) PRIMARY KEY,
empName VARCHAR2(50) ,
empAge INTEGER ,
empSalary DECIMAL(10,2),
empDept VARCHAR2(10) CONSTRAINT fk_empDept_employee1 REFERENCES
department1(deptID)
);
CREATE TABLE department1
(
deptID VARCHAR(10) CONSTRAINT pk_deptID_department1 PRIMARY KEY,
deptName VARCHAR2(50),
deptBudget DECIMAL(10,2)
);

ALTER TABLE <table-name>


ADD (<column-definiton1>, <column-definiton2>,
----
<column-definitonN>
);

ALTER TABLE employee2


ADD empSalary DECIMAL(10,2);

ALTER TABLE employee2


ADD (empSample3 VARCHAR2(10));

ALTER TABLE <table-name>


DROP COLUMN (<col1>, <col2>, ...);

ALTER TABLE employee2


DROP COLUMN empSample3;

ALTER TABLE <table-name>


MODIFY (<modification>); #TO DO MODIFICATION

ALTER TABLE employee2


MODIFY (empName VARCHAR(100)); #TO MODIFY COLUMN SIZE

ALTER TABLE <table-name>


RENAME COLUMN <oldname> TO <newname>; #TO RENAME A COLUMN

ALTER TABLE employee2


RENAME COLUMN empName TO empName1;

ALTER TABLE <table-name>


ADD <constraint-definition>; # TO ADD CONSTRAINT TO COLUMN

ALTER TABLE employee2


ADD UNIQUE (empName1);

ALTER TABLE employee2


ADD CONSTRAINT ch_empAge_employee2 CHECK (empAge <= 60);

AGGREGATE FUNCTIONS:
* USED FOR SUMMRIZATION

SUM(); AVG(); MIN();


MAX() ; COUNT(); COUNT(*)

SELECT COUNT(*) FROM EMPLOYEE11;

SELECT SUM(empSalary), AVG(empSalary),


MAX(empAge), MIN(empAge) FROM employee12; #aggregate functions(attribute name)

WILD CARD CHARACTERS:

_ 1 CHARACTER

% 0 OR MORE CHARACTERS

SELECT * FROM EMPLOYEE12


WHERE EMPNAME LIKE '_A%';

TABLE LEVEL CONSTRAINTS:


CREATE TABLE <table-name>
(
<attr-name1> <datatype>,
<attr-name2> <datatype>,
-- --- ,
<attr-nameN> <datatype>,
<constraint-type1>,
<constraint-type2>,
-- --,
<constraint-typeN>,
);

CREATE TABLE employee31


(
empFirstName VARCHAR2(50),
empLastNameAge VARCHAR2(50),
empSalary DECIMAL(10,2),
empAge INTEGER,
empDept VARCHAR2(10),
PRIMARY KEY (empFirstName, empLastNameAge),
CHECK (empSalary > 5000)
);

CREATE TABLE employee32


(
empFirstName VARCHAR2(50),
empLastNameAge VARCHAR2(50),
empSalary DECIMAL(10,2),
empAge INTEGER,
empDept VARCHAR2(10),
CONSTRAINT pk_fsName_employee32 PRIMARY KEY (empFirstName, empLastNameAge),
CONSTRAINT ch_empSalary_employee32 CHECK (empSalary > 5000)
);
# Not necessary to give CONSTRAINT <CONTRAINT NAME> <CONSTAINT TYPE> (CONTRAINT
NAME can b e any) you can simply type CONSTRAINT ie PRIMARY KEY(Attribute names>)

FOR EXAMPLE
CREATE TABLE employee33
(
empID VARCHAR2(5),
empFirstName1 VARCHAR2(50),
empLastNameAge1 VARCHAR2(50),
empSalary DECIMAL(10,2),
empAge INTEGER,
empDept VARCHAR2(10),
PRIMARY KEY (empID),
CONSTRAINT fk_fsName_employee33 FOREIGN KEY (empFirstName1, empLastNameAge1)
REFERENCES employee32(empFirstName,empLastNameAge)
);

GROUP BY CLAUSE

* TO MAKE GROUPING WITHIN A TABLE.

SELECT <column-list> FROM TABLE


GROUP BY <col1>, <col2>,......
HAVING <condition>
CREATE TABLE employee35
(
empID VARCHAR(10) ,
empName VARCHAR2(50) ,
empAge INTEGER,
empSalary DECIMAL(12,2),
empDesignation VARCHAR(20),
empDept VARCHAR(10)
);

SELECT empDesignation, SUM(empSalary), COUNT(*)


FROM employee35
GROUP BY empDesignation
HAVING COUNT(*) > 1;
#extracting sum of salaries according to designation(if the designation occurs more
than once then it should be sumed up) and displayed as in front of each designation
one by one

SELECT empDesignation, empDept, SUM(empSalary), COUNT(*)


FROM employee35
GROUP BY empDesignation, empDept;
#showing sum of salaries according to the designations mentioning their departments
as well and also their count

DATE DATA TYPE

* Stores date as well as time;


SELECT SYSDATE FROM DUAL;

CREATE TABLE employee38


(
empName VARCHAR2(50),
empDOB DATE
);

INSERT INTO employee38


VALUES('RAM', SYSDATE);

* TO_CHAR()
* TO_DATE()

TO_CHAR(<date>, <format>); # We define the format of date as our choice(used


with SELECT statement to extract the already existing date in the system acc to
format wanted)

SELECT empName, TO_CHAR(empDOB, 'yyyy-mm-dd')


FROM employee38;

MM Numeric Month (e.g. 08)


MON Abbreviated month name (e.g. AUG)
MONTH Full month name (e.g. AUGUST)
DD Day of month (e.g. 15)
DY Abbreviated name of day (e.g. FRI)
YYYY 4-DIGIT YEAR (e.g. 2023)
YY 2-DIGIT YEAR (e.g. 23)
AM(or PM) Meridian Indicator
HH HOUR OF DAY (1-12)
HH24 HOUR OF DAY (0-23)
MI MINUTE (0-59)
SS SECOND (0-59)

SELECT empName, TO_CHAR(empDOB, 'yy/month/dy -- HH24:MI:SSAM')


FROM employee38;

TO_DATE(<string>, <format>) #Insert karte time hi date ka format bata dena

INSERT INTO employee38


VALUES('RAMA', TO_DATE('2023-07-10', 'YYYY-MM-DD'));

SELECT empName, TO_CHAR(empDOB, 'DD-MM-YY -- HH24:MI:SSAM')


FROM employee38;

INSERT INTO employee38


VALUES('SHYAM', TO_DATE('2023-JUL-10 10:15:20', 'YYYY-MON-DD HH:MI:SSAM'));

SET OPERATIONS

CREATE TABLE emp35


(
empID VARCHAR(10) ,
empName VARCHAR2(50) ,
empAge INTEGER
);

CREATE TABLE emp36


(
empID1 VARCHAR(10) ,
empName1 VARCHAR2(50) ,
empAge1 INTEGER
);

UNION:

SELECT * FROM emp35


UNION
SELECT * FROM emp36;

SELECT empID FROM emp35


UNION
SELECT empName1 FROM emp36;

INTERSECT:

SELECT * FROM emp35


INTERSECT
SELECT * FROM emp36;

SELECT empName FROM emp35


INTERSECT
SELECT empName1 FROM emp36;

MINUS OPERATION

SELECT empName FROM emp35


MINUS
SELECT empName1 FROM emp36;

NESTING OF QUERIES (CONCEPT OF SUBQUEREIES)

* A query can contain another query.


* Nesting can go up to n-levels.
* The result of the inner query work as an
input to the outer query.

CREATE TABLE department1


(
deptID VARCHAR(10) CONSTRAINT pk_deptID_department1 PRIMARY KEY,
deptName VARCHAR2(50),
deptBudget DECIMAL(10,2)
);

CREATE TABLE employee1


(
empID VARCHAR(10) PRIMARY KEY,
empName VARCHAR2(50) ,
empAge INTEGER ,
empSalary DECIMAL(10,2),
empDept VARCHAR2(10) CONSTRAINT fk_empDept_employee1 REFERENCES
department1(deptID)
);

select * from employee1


where empDept =
(select deptID from department1
where deptname = 'hr');

I EXISTS operator

select * from department1


where exists (select empdept from employee1);

select * from department1


where not exists (select empdept from employee1);

select * from department1


where exists
(select empdept from employee1
where empDept = 'd2' );

select * from department1


where not exists
(select empdept from employee1
where empDept = 'd2' );

II ANY OR SOME

select * from employee1


where empSalary > ANY
(select deptBudget from department1 );

III ALL
Select * from employee1
where empSalary > ALL
(select deptBudget from department1 );

IV IN OPERATOR

SELECT * FROM department1


WHERE deptID IN
( SELECT empDept FROM employee1);

SELECT * FROM employee1


WHERE empSalary >
(SELECT AVG(deptBudget) FROM department1 );

Select empDept, SUM(empSalary) from employee1


GROUP BY empDept
HAVING empDept IN
(select deptID from department1 );

JOINS
* JOINS ARE USED TO JOIN TWO OR MORE TABLES.
* BY USING JOINS WE CAN RETRIEVE THE DATA FROM MULTIPLE TABLES.

CROSS JOIN
* EVERY TUPLE OF THE FIRST RELATION IS COMBINED WITH EVERY TUPLE OF THE
SECOND RELATION.
* NO NEED TO BE HAVING COMMON ATTRIBUTE(S)
* RESULT WILL CONTAIN THE TOTAL NO. OF ATTRIBUTES = ATTR(R1) + ATTR(R2)
TOTAL NO. OF TUPLES = TUPLES(R1) * TUPLES(R2)
* COMMON ATTRIBUTES WILL BE DUPLICATED IN THE RESULT.

SELECT * FROM
suppliers CROSS JOIN items;
OR
SELECT * FROM
suppliers, items;

SELECT itemID, itemName, suppID, suppCity FROM


suppliers CROSS JOIN items;
OR
SELECT itemID, itemName, suppID, suppCity FROM
suppliers, items;

SELECT i.itemID, i.itemName, s.suppID, s.suppCity FROM


suppliers s, items i;

II NATURAL JOIN
* IT IS A REFINEMENT OF CROSS JOIN.
* FOR NATURAL JOIN THERE MUST BE COMMON ATTRIBUTE(S) IN THE TABLES TO BE
JOINED.
* ONLY THOSE ROWS HAVING THE SAME VALUES FOR THE COMMON ATTRIBUTE(S)
WILL BE DISPLAYED.
* COMMON ATTRIBUTE(S) WILL NOT BE DISPLAYED IN A DUPLICATED MANNER.
SELECT itemID, suppID FROM
items NATURAL JOIN suppliers;

OR

SELECT itemID, suppID FROM


items, shipments
WHERE items.itemID = shipments.itemID;

III INNER JOIN


* ONLY THOSE RECORDS WILL BE DISPLAYED FROM BOTH THE TABLES;
SATISFYING THE SPECIFIED CONDITION.

SELECT * FROM items INNER JOIN shipments


ON items.itemID = shipments.itemID

SELECT i.itemID, s.suppID, s.quantity FROM items i INNER JOIN shipments s


ON items.itemID = shipments.itemID;
or
SELECT itemID, suppID FROM
items, shipments
WHERE items.itemID = shipments.itemID;

IV OUTER JOIN

* ONLY THOSE RECORDS WILL BE DISPLAYED FROM BOTH THE TABLES;


SATISFYING THE SPECIFIED CONDITION.
(a) LEFT OUTER JOIN:
* RECORDS SATISFYING THE CONDITION + RECORDS FROM THE LEFT TABLE WHICH
ARE NOT SATISFYING THE CONDITION

SELECT i.itemID, s.suppID, s.quantity FROM items i LEFT OUTER JOIN shipments
s
ON i.itemID = s.itemID;

(b) RIGHT OUTER JOIN:


* RECORDS SATISFYING THE CONDITION + RECORDS FROM THE RIGHT TABLE WHICH
ARE NOT SATISFYING THE CONDITION

SELECT i.itemID, s.suppID, s.quantity FROM shipments s RIGHT OUTER JOIN items
i
ON i.itemID = s.itemID;

(c) FULL OUTER JOIN:


* RECORDS SATISFYING THE CONDITION + RECORDS FROM THE LEFT TABLE WHICH
ARE NOT SATISFYING THE CONDITION + + RECORDS FROM THE RIGHT TABLE WHICH
ARE NOT SATISFYING THE CONDITION

SELECT i.itemID, s.suppID, s.quantity FROM shipments s FULL OUTER JOIN items
i
ON i.itemID = s.itemID;

V SELF JOIN
* A TABLE IS JOINED WITH ITSELF.
SELECT i1.itemID, i1.itemName, i2.itemID
FROM items i1, items i2
WHERE i1.itemID <> i2.itemID;

CREATE TABLE employee21


(
empID VARCHAR(10) PRIMARY KEY,
empName VARCHAR2(50) ,
deptID INTEGER REFERENCES department21(deptID) ON DELETE CASCADE
); #ON DELETE CASCADE is used to specify that when a row is deleted from the
parent table, all rows in the child table that reference the deleted row should
also be deleted

VIEWS
* IT IS A VIRTUAL TABLE.
* IT IS DERIVED FROM OTHER TABLES (I.E. BASE TABLES) OR OTHER VIEWS.
* DYNAMIC
* UPDATION IS POSSIBLE THROUGH VIEWS.
* NO JOIN
* NO AGGREGATE FUNCTION

SYNTAX

CREATE VIEW <view-name> [(<column-list>)]


AS SELECT <column-list> FROM <base-table-name>
[ WHERE <condition>];

CREATE VIEW employee21View


AS SELECT * FROM employee21;

CREATE VIEW employee21View1 (vempID, vempName)


AS SELECT empID, empName FROM employee21
WHERE deptID=101;

INSERT INTO employee21View


VALUES('E5', 'HARI', 102);

DELETE FROM employee21View


WHERE EMPNAME = 'HARI';

EXTRACT:

EXTRACT(part FROM date);

SELECT EXTRACT(DAY FROM SYSDATE) FROM DUAL;

You might also like