Chapter - 5

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 71

Chapter - 5

Structured Query Language


SQL
Overview of SQL
It is a 4 GL
Oracle9i in specific
DML
DDL
Triggers and integrity constraints
Embedded and Dynamic SQL
Client-Server Execution and remote database access
Transaction management
Security
OODBMS features, Data mining, spatial data, and XML
data management

BN Shankar Gowda, BIT 2


Basic SQL Commands
Statement Description
SELECT Data retrieval statement.
INSERT Data Manipulation Language
UPDATE (DML).
DELETE Add rows, change data, and delete
few rows.
CREATE Create new tables/ views, remove
ALTER tables/ views, and change the
DROP schema.
RENAME
COMMIT Modified values of database are
ROLLBACK permanently written into disk,
SAVEPOINT rollback the changes made.
GRANT Access control can be assigned or
REVOKE changed.

BN Shankar Gowda, BIT 3


Basic data types in Oracle
Data type Description
CHAR (size) Fixed length character. Max = 2000.
VARCHAR2(size Variable length character string. Max =
4000.
DATE Date. Vaild range is from Jan 1, 4712 B.C.
to Dec 31, 4712 A.D.
BLOB Binary large object. Max = 4GB.
CLOB Character large object. Max = 4GB.
BFILE Pointer to binary OS file.
LONG Character data of variable size. Max = 2GB.
LONG RAW Raw binary data. Rest is same as LONG.
NUMBER(size) Numbers. Max. size = 40 digits.
NUMBER(size,d) Numbers. Range = 1.0E-130 to 9.9E125.
DECIMAL Same as NUMBER. size/ d can't be specified.
FLOAT Same as NUMBER.
INTEGER Same as NUMBER. size/ d can't be specified.
SMALLINT Same as NUMBER.
BN Shankar Gowda, BIT 4
Example tables
Employee
SSN Name BDate Salary MgrSSN DNo
1111 Deepak 5-Jan-62 22000 4444 1
2222 Nandagopal 10-Dec-60 30000 4444 3
3333 Pooja 22-Jan-65 18000 2222 2
4444 Prasad 11-Jan-57 32000 Null 3
5555 Reena 15-Jan-85 8000 4444 3

Department
DNo DName Loc
1 Admin Chennai
2 Research Bangalore
3 Accounts Bangalore

BN Shankar Gowda, BIT 5


DDL
CREATE TABLE Department(
DNo number(3) not null,
DName varchar2(10) not null,
Loc varchar2(15),
primary key (DNo));
CREATE TABLE Employee(
SSN number(4) not null,
Name varchar2(20) not null,
BDate date,
Salary number(10,2),
MgrSSN number(4),
DNo number(2) not null,
primary key (SSN),
foreign key (MgrSSN) references Employee(SSN),
foreign key (DNo) references Department(DNo));

BN Shankar Gowda, BIT 6


Data Retrieval Statement
(SELECT)
Syntax
SELECT *|{[DISTINCT] column | expression}
FROM table(s);

The basic SELECT statement must include


the following:
- A SELECT clause.
- A FROM clause.

BN Shankar Gowda, BIT 7


Example-1

SELECT * FROM Employee;


The * indicates that it should retrieve all the
columns from Employee table. The output of this
query is shown below:

Output-1
SSN NAME BDATE SALARY MGRSSN DNO
---- -------------------- --------- --------- --------- ---------
4444 Prasad 11-JAN-57 32000 3
5555 Reena 15-JAN-85 8000 4444 3
1111 Deepak 05-JAN-62 22000 4444 1
2222 Nandagopal 10-DEC-60 30000 4444 3
3333 Pooja 22-JAN-65 18000 2222 2

BN Shankar Gowda, BIT 8


Example-2
SELECT * FROM Employee
ORDER BY SSN;
Output-2
SSN NAME BDATE SALARY MGRSSN DNO
----- -------------------- --------- --------- --------- ---------------------------------
1111 Deepak 05-JAN-62 22000 4444 1
2222 Nandagopal 10-DEC-60 30000 4444 3
3333 Pooja 22-JAN-65 18000 2222 2
4444 Prasad 11-JAN-57 32000 3
5555 Reena 15-JAN-85 8000 4444 3

BN Shankar Gowda, BIT 9


Using arithmetic operators
SELECT Name, Salary, Salary * 12
FROM Employee;
Using aliases
An alias when used for a column:
Renames a column heading
It is useful in arithmetic calculations.
AS keyword can optionally be used between column
name and alias name.
Example-3
SELECT Name, Salary, Salary * 12 AS YRLY_SALARY
FROM Employee;
OR
SELECT Name, Salary, Salary * 12 "YRLY_SALARY"
FROM Employee;

BN Shankar Gowda, BIT 10


 Example-4

DESCRIBE Employee;
OR
DESC Employee;

 Output-4
Name Null? Type
------------------------------- -------- ----
SSN NOT NULL NUMBER(4)
NAME NOT NULL VARCHAR2(20)
BDATE DATE
SALARY NUMBER(10,2)
MGRSSN NUMBER(4)
DNO NOT NULL NUMBER(2)

BN Shankar Gowda, BIT 11


Select Statement with Where
Example-5
SELECT Name, Salary
FROM Employee
WHERE Salary > 25000;
Example-6
SELECT DName, Loc
FROM Department
WHERE Loc = 'Bangalore';
Example-7
SELECT Name, BDate
FROM Employee
WHERE BDate = '11-Jan-57';
BN Shankar Gowda, BIT 12
Example-8
SELECT Name, BDate
FROM Employee
WHERE Salary BETWEEN 25000 AND 30000;
Example-9
SELECT SSN, Name
FROM Employee
WHERE DNo IN (1, 2);
Example-10
SELECT Name
FROM Employee
WHERE Name LIKE 'P%';
Example-11
SELECT Name, DNo
FROM Employee
WHERE BDate LIKE '__-JAN-__';
BN Shankar Gowda, BIT 13
Example-12
SELECT Name
FROM Employee
WHERE MgrSSN IS NULL;
Example-13
SELECT Name, Salary, DNo
FROM Employee
WHERE Salary > 30000 AND DNo = 3;
Example-14
SELECT Name, Salary
FROM Employee
WHERE Name LIKE 'P%' OR Salary <= 20000;
Example-15
SELECT Name, Salary, DNo
FROM Employee
ORDER BY DNo DESC, Name;
BN Shankar Gowda, BIT 14
SQL Functions
ROUND(column | expr, n) Rounds to n decimal places. If n is negative,
numbers to the left are rounded.
TRUNC(column | expr, n) Truncates to n decimal places.
MOD(m, n) Returns the remainder of m/n.
ABS(n) Absolute value of n.
CEIL(n) Smallest integer larger than n.
FLOOR(n) Largest integer smaller than n.
EXP(n) en
POWER(n, m) nm
SQRT(n) Square root of n.
SIGN(n) 1 if n is positive, -1 if negative, 0 if zero.
LN(n) Natural log of n (lg n)
LOG(n) log10 n
SIN(n) Sine of n.
COS(n) Cosine of n.
TAN(n) Tangent of n.
ASIN(n) Arc sine of n (in radians).
ACOS(n) Arc cosine of n (in radians).
ATAN(n) Arc tangent of n (in radians).
SINH(n) Hyperbolic sine value of n.
COSH(n) Hyperbolic cosine value of n.
TANH(n) Hyperbolic tan value of n.
NVL(n, m) Null Value – Substitute m for n if n = null.
VSIZE(n) Storage size of n.

BN Shankar Gowda, BIT 15


Working with Dates
Century 19
Year 99
Month 07
SELECT SYSDATE
Day 23
Hour 4 FROM DUAL;
Minute 10
Second 53

BN Shankar Gowda, BIT 16


Example-16 (MONTHS_BETWEEN)
SELECT MONTHS_BETWEEN(SYSDATE, '09-JAN-1983')
"Experience"
FROM DUAL;
Output-16
Experience
---------------
247.73471

Example-17 (GREATEST & LEAST)


The function GREATEST finds the earliest date and LEAST finds
the oldest date in the list.
SELECT GREATEST('10-JAN-93', '10-JAN-98'),
LEAST('10-JAN-93', '10-JAN-98')
FROM DUAL;
Output-17
GREATEST( LEAST('10
--------- ---------
10-JAN-98 10-JAN-93

BN Shankar Gowda, BIT 17


Conversion Functions
VARCHAR2 or CHAR is converted to NUMBER

VARCHAR2 or CHAR is converted to DATE

NUMBER is converted to VARCHAR2

DATE is converted to VARCHAR2

BN Shankar Gowda, BIT 18


Use of TO_CHAR
TO_CHAR function converts a date format to a character
string
Example-18
SELECT Name, Bdate, TO_CHAR(BDate,
'DD/MM/YY') AS "Formatted"
FROM Employee
WHERE SSN = 2222;
Example-19
SELECT Name, Bdate, TO_CHAR(BDate, 'Month, ddth, YYYY')
AS "Formatted"
FROM Employee
WHERE Name = 'Pooja';
Output-19
NAME BDATE Formatted
-------------------- --------- ---------------------
Pooja 22-JAN-65 January , 22nd, 1965
BN Shankar Gowda, BIT 19
Example-20
SELECT Name, Bdate, TO_CHAR(BDate, 'fmMonth, fmddth, YYYY') AS
"Formatted"
FROM Employee;
Output
Prasad 11-JAN-57 January, 11th, 1957
Example-21
SELECT Name, Bdate, TO_CHAR(BDate, 'fmMonth, fmddth, YYYY
"at" HH:MI P.M.')AS "Formatted"
FROM Employee
WHERE SSN = 2222;
Output
Nandagopal 10-DEC-60 December, 10th, 1960 at 12:00 A.M.

Note: “fm” suppresses unnecessary blanks


Use HH12 for 12 hrs clock and HH24 for 24 hrs clock
BN Shankar Gowda, BIT 20
Use of TO_DATE
TO_DATE function is to convert any character literal string into a
valid date format.
Example-22
SELECT TO_DATE('1-Sep-2003', 'DD/MM/YYYY')
FROM DUAL;
Output-22
TO_DATE('
---------
01-SEP-03

Example-23
SELECT TO_DATE('08/30/2003', 'DD/MM/YYYY')
FROM DUAL;
Output-23
ERROR at line 1:
ORA-01843: not a valid month

BN Shankar Gowda, BIT 21


Character Functions
Program Output
SELECT LOWER('Bangalore') bangalore
FROM DUAL;

SELECT UPPER('Bangalore') BANGALORE


FROM DUAL;

SELECT INITCAP('bangalore Bangalore Institute Of


institute of technology') Technology
FROM DUAL;

SELECT CONCAT('Database ', Database Management


'Management')
FROM DUAL;
SELECT SUBSTR('Database', 5, 4) base
FROM DUAL;
SELECT LENGTH('Database') 8
FROM DUAL;

SELECT INSTR('Database', 'b') 5


FROM DUAL;
SELECT INSTR('Database', 'x') 0
FROM DUAL;

SELECT LPAD(Salary, 8, '*') ***22000


FROM Employee
WHERE SSN = 1111;

SELECT RPAD(Salary, 8, '*') 22000***


FROM Employee
WHERE SSN = 1111;
SELECT LTRIM(' Database', ' ') Database

BN Shankar Gowda, BIT 22


Aggregate Functions
COUNT
AVG
MAX
MIN
STDDEV
SUM
VARIANCE

BN Shankar Gowda, BIT 23


Example-24
SELECT COUNT(*) AS "No. of Employees"
FROM Employee;
Example-25
SELECT SUM(Salary) AS Total
FROM Employee;
Example-26
SELECT Name, MAX(Salary), MIN(Salary)
FROM Employee;

BN Shankar Gowda, BIT 24


GROUP BY Clause
The rules to be followed while using GROUP BY
clause are given below:
You can't have non-group function or column in
SELECT clause.
Group functions ignore nulls.
By default the result of GROUP BY clause sort the
data in ascending order.
Example:
SELECT DNo, SUM(Salary), COUNT(*), AVG(Salary)
FROM Employee
GROUP BY DNo;

BN Shankar Gowda, BIT 25


Example-27
SELECT DNo, SUM(Salary), COUNT(*),
AVG(Salary)
FROM Employee
GROUP BY DNo, MgrSSN;
HAVING clause
SELECT DNo, AVG(Salary)
FROM Employee
GROUP BY DNo
HAVING DNo = 3;

BN Shankar Gowda, BIT 26


The order of evaluation when all the clauses are
specified is given below:
1. First all rows matching the WHERE conditions
are retrieved.
2. These rows are grouped using the column(s) in
GROUP BY clause.
3. Finally, groups matching the HAVING clause
condition are retained.
SELECT DNo, AVG(Salary)
FROM Employee
WHERE BDate LIKE '__-JAN-__'
GROUP BY DNo
HAVING MAX(Salary) > 10000;
BN Shankar Gowda, BIT 27
MULTITABLE QUERIES
Simple Equi-Joins : guidelines
– Table names in the FROM clause is separated with
commas.
– Use appropriate joining condition. This means that the
foreign key of table1 will be made equal to the primary
key of table2.
– When the attributes or columns have the same
names, tag them with table names using dot notation.
– Without proper joining condition or attributes the SQL
will display the Cartesian product of the tables in the
FROM clause.

BN Shankar Gowda, BIT 28


Example-28: Display the employee names and
the department names for which they work .
SELECT Name, DName
FROM Employee, Department
WHERE Employee.DNo = Department.DNo;

Example-29 : Display only employees working


for Accounts department.
SELECT Name, Salary, DName
FROM Employee, Department
WHERE (Employee.DNo = Department.DNo)
AND (DName = 'Accounts');

BN Shankar Gowda, BIT 29


Self-Join and Table Aliases
Example-30 : Find the employee who earns
more than ‘Nandagopal’.
SELECT e1.Name, e1.Salary
FROM Employee e1, Employee e2
WHERE (e1.Salary > e2.Salary) AND
(e2.Name = 'Nandagopal');

BN Shankar Gowda, BIT 30


Right-Outer Join
Example-31 :
SELECT Name, DName
FROM Employee E, Department D
WHERE E.Name = D.DName(+);
Output-31
NAME DNAME
-------------------- ----------
Deepak
Nandagopal
Pooja
Prasad
Reena

BN Shankar Gowda, BIT 31


Left-Outer Join
Example-32
SELECT Name, DName
FROM Employee E, Department D
WHERE E.Name(+) = D.DName;
Output-32
NAME DNAME
-------------------- ----------
Accounts
Admin
Research

BN Shankar Gowda, BIT 32


NESTED QUERIES or SUB QUERIES
SELECT <column(s)>
FROM table
WHERE <condn operator>
(SELECT <column>
FROM table);

Outer query uses the result of the inner query.


If the inner query returns only one row it is called as
single row sub queries.
Alternatively if the inner query returns a set of rows (more
than one row) it is classified as multiple-row sub queries.
The comparison condition may be a single row operator
like >, =, >=, <, <=, <>) or multiple row operators like IN,
ANY, ALL.

BN Shankar Gowda, BIT 33


Single-Row Nested Queries
Display the names of the employees working for Accounts
department.
SELECT Name
FROM Employee
WHERE DNo =
(SELECT DNO
FROM Department
WHERE DName = 'Accounts');

Display names of employees whose salary is greater than the


employee SSN=1111.
SELECT Name
FROM Employee
WHERE Salary >
(SELECT Salary
FROM Employee
WHERE Name = 1111);
BN Shankar Gowda, BIT 34
Example-33
Display all the employees drawing more
than or equal to the average salary of
department number 3.
SELECT Name, Salary
FROM Employee
WHERE Salary >=
(SELECT AVG(Salary)
FROM Employee
GROUP BY DNO
HAVING DNo = 3);
BN Shankar Gowda, BIT 35
Multiple-Row Nested Queries

IN: Equal to any member in the list.


ANY: Compare value to each value
returned by the subquery.
ALL: Compare value to all the values
returned by the subquery.

BN Shankar Gowda, BIT 36


Display the name of the highest paid
employee.
SELECT Name, Salary
FROM Employee
WHERE Salary =
(SELECT MAX(Salary)
FROM Employee);

SELECT Name, Salary


FROM Employee
WHERE Salary IN
(SELECT MAX(Salary)
FROM Employee);

Both '=' and 'IN' works, because the inner query produces a single
tuple.

BN Shankar Gowda, BIT 37


Find the Name and Salary of people who draw in
the range Rs. 20,000 to Rs. 40,000.
Select Name, Salary from Employee
where Salary =
(Select Salary from Employee
where Salary between 20000 and 40000);
Error: ORA-01427: single-row subquery returns more than one row
Correct Query:
Select Name, Salary from Employee
where Salary IN
(Select Salary from Employee
where Salary between 20000 and 40000);
BN Shankar Gowda, BIT 38
ANY and ALL
Operator Meaning Example
<ANY Less than the e < ANY (5,3,8): e is less than any
maximum. single item in the list (5,3,8). Even
7 qualifies, because 7 < 8.
>ANY More than e > ANY (5,3,8): e is less than any
the minimum. single item in the list (5,3,8). Even
4 qualifies, because 4 > 3.
=ANY Same as IN. e = ANY(5,3,8). All values in the
list qualify.
<ALL Less than the e < ALL (5,3,8): Anything below 3
maximum. qualifies.
>ALL More than e > ALL (5,3,8): Anything greater
the minimum. than 8 qualifies.
!=ALL Not equal to e != (5,3,8): Anything other than
anything. 5,3, and 8 qualifies.
BN Shankar Gowda, BIT 39
Example-34:
SELECT Name, Salary
FROM Employee
WHERE Salary < ANY
(SELECT Salary
FROM Employee
WHERE DNo = 3);
Example-35:
SELECT Name, Salary
FROM Employee
WHERE Salary > ANY
(SELECT Salary
FROM Employee
WHERE DNo = 3);

BN Shankar Gowda, BIT 40


Example-35:
SELECT Name, Salary
FROM Employee
WHERE Salary < ALL
(SELECT Salary
FROM Employee
WHERE DNo = 3);
Example-36:
SELECT Name, Salary
FROM Employee
WHERE Salary > ALL
(SELECT Salary
FROM Employee
WHERE DNo = 3);
>ALL means greater than the greatest and <ALL means
less than the lowest value.
BN Shankar Gowda, BIT 41
CREATING and ALTERING
DATABASE OBJECTS
Table: A tabular structure that stores data.
View: A tabular structure similar to a table
but it is a collection of one or more tables.
Sequence: Automatically generates a
sequence of numbers.
Index: Provides an efficient access
structure.

BN Shankar Gowda, BIT 42


CREATE TABLE Employee(
SSN Number(4) not null,
Name Varchar2(20) not null,
BDate Date,
Salary Number(10,2),
MgrSSN Number(4),
DNo Number(2) not null, Primary Key (SSN),
Foreign Key (MgrSSN) references Employee(SSN),
Foreign Key (DNo) references Department(DNo));

BN Shankar Gowda, BIT 43


Names of the tables/views
SELECT *
FROM TAB;
Schema details of a table
DESC Employee;

Name Null? Type


------------------------------- -------- ----
SSN NOT NULL NUMBER(4)
NAME NOT NULL VARCHAR2(20)
BDATE DATE
SALARY NUMBER(10,2)
MGRSSN NUMBER(4)
DNO NOT NULL NUMBER(2)

BN Shankar Gowda, BIT 44


ON DELETE constraint
CREATE TABLE Department(
DNo Number(3) not null,
DName Varchar2(10) not null,
Loc Varchar2(15),
Primary Key (DNo),
Manager Number(4) references
Employee(SSN) ON DELETE CASCADE);
Creating tables with a Subquery
CREATE TABLE Emp AS
SELECT SSN, Name, Salary
FROM Employee;

BN Shankar Gowda, BIT 45


ALTER TABLE Statement
ALTER TABLE Employee
ADD Phone Number(7) not null;
(Note: to add not null constraint, the column must be empty)

ALTER TABLE Employee


MODIFY Phone Varchar2(10);
(Note: to modify data type, the column must be empty)

ALTER TABLE Employee


DROP COLUMN Phone;

BN Shankar Gowda, BIT 46


Disabling and Enabling Constraints
CREATE TABLE Employee(
………………………
………………………
Salary Number(10,2) CONSTRAINT Ch_Sal
CHECK (Salary > 0));

ALTER TABLE Employee


DISABLE CONSTRAINT Ch_Sal;

ALTER TABLE Employee


ENABLE CONSTRAINT Ch_Sal;

BN Shankar Gowda, BIT 47


CREATE VIEW Statement
The advantages of using views are:
It restricts data access.
Reduces joining of more tables often.
Many users can access a particular view with
proper privileges.
Example
CREATE VIEW Emp_Dept
AS SELECT SSN, Name, DName, Salary
FROM Employee E, Department D
WHERE E.DNo = D.DNo;

View created.

BN Shankar Gowda, BIT 48


Restrictions on Views
There are few restrictions on views:
You can not insert new rows nor update the view
table.
(Error Message: ORA-01776: cannot modify more than one base
table through a join view)
You can not alter the constraints or data types of
the columns.
If any changes are made to the base table(s),
view table will get updated automatically.

BN Shankar Gowda, BIT 49


CREATE SEQUENCE Statement
How to use a Sequence?
– Step-1:
CREATE SEQUENCE Dept_Seq START WITH 10;
– Step-2:
INSERT INTO Department
values(Dept_Seq.NEXTVAL, 'Sales', 'Belgaum');

Dropping a sequence
DROP SEQUENCE Dept_Seq;
Creating an index for Employee table on Name
CREATE INDEX IDXSSN ON Employee (Name);
Dropping an index
DROP INDEX IDXSSN;

BN Shankar Gowda, BIT 50


Rights
SQL Server 2000

GRANT { ALL | statement [ ,...n ] }


TO security_account [ ,...n ]

Object permissions:

GRANT
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
TO security_account [ ,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]

BN Shankar Gowda, BIT 51


Rights (Contd…)
Oracle 9i:

GRANT {objectprivileges | ALL}


[(columnname), {objectprivileges(columnname)]
ON objectname
TO {username | rolename | PUBLIC}
[WITH GRANT OPTION]

where, objectprivileges: INSERT or UPDATE


objectname : table/view/sequence

Example: GRANT UPDATE (ssn) ON employee TO bit;

BN Shankar Gowda, BIT 52


Creating Users
1) CONNECT SYSTEM/MANAGER;

2) CREATE USER Guest IDENTIFIED BY bit;

3) GRANT CONNECT, RESOURCE TO Guest;

4) REVOKE Select ON Employee FROM Guest;

Commit, Rollback, etc.

BN Shankar Gowda, BIT 53


Examples
Objective – 1
Create a user account called sng with password apple.
create user sng identified by apple;
Format for Grant command
grant {system privilege} to user [with admin options]
system privilege: select/delete/insert/update and instead of
user you can specify public as well.

Format for Revoke command:


revoke {system privilege} from user [with admin options]
Revoking does not delete a user from Oracle or remove
any tables created by him. It simply prohibits him from
accessing the database.
BN Shankar Gowda, BIT 54
Examples (contd…)
Objective – 2
Create another user deepak identified by rock.
create user deepak identified by rock;
At this point of time you must provide grant
permission for connect and resource. Therefore
execute the following commands:
grant connect, resource to sng;
grant connect, resource to deepak;
connect sng/apple;

BN Shankar Gowda, BIT 55


Examples (contd…)
Objective – 3
This objective shows how to grant permission to
all. This can be done by using the keyword public. For
example,
grant select on EMPLOYEE to public;
This statement grants access to Employee table to
all and the following command removes this
privilege from all.
revoke select on EMPLOYEE from public;
Provide select permission to deepak for the table
EMPLOYEE,assuming that this table is owned by sng.
grant select on EMPLOYEE to deepak;
BN Shankar Gowda, BIT 56
Objective – 5
Display the contents of EMPLOYEE table.
connect deepak/rock; // deepak gets connected
select * from sng.EMPLOYEE;
Unless a synonym is used, the table name must be preceded by the
username of the owner of the table. Otherwise you will get an error.
The user deepak can create a view to access the EMPLOYEE table.
create view EMPLOYEE as
select * from sng.EMPLOYEE;
Creating a synonym.
create synonym EMPLOYEE for sng.EMPLOYEE;
If the table/view is not owned by a particular user, then he can not pass
the granting of that table/view to other users.
ERROR: grant select on sng.EMPLOYEE to reena;

Here, reena is some other user.

BN Shankar Gowda, BIT 57


DML Statements
INSERT Statement
INSERT INTO Employee
VALUES (1111, 'Deeapk', '5-Jan-62', 22000, 4444, 1);

Inserting through Keyboard


INSERT INTO Employee
VALUES (&SSN, &Name, &BDate, &Salary, &MgrSSN, &DNo);

Inserting dates
INSERT INTO Employee
VALUES (6666, 'John', TO_DATE('5-Jan-2003 3:40',
'DD-MM-YYYY HH24:SS'), 22000, 4444, 1);

BN Shankar Gowda, BIT 58


Inserting rows from an existing table
INSERT INTO EMP2
SELECT *
FROM Employee;
DELETE Statement
DELETE Employee
WHERE SSN = 1111;
UPDATE Statement
UPDATE Employee
SET DNo = 1
WHERE Name = 'Nandagopal';
To hike the salary of all employees by 10%.
UPDATE Employee
SET Salary = Salary * 1.05;

BN Shankar Gowda, BIT 59


ADDITIONAL EXAMPLES
Company Database Example
Employee(SSN Char(9), Name Varchar2(20), Bdate Date, Address
Varchar2(30), Sex Char(1),Salary Number(10,2),
SuperSSN Char(9), DNo Number(2));

Department(Dnumber Number(2), DName Varchar2(10),


MgrSSN Char(9), MgrStartDate Date);

Project(PNumber Number(2), PName Varchar(10), Plocation


Varchar2(15), Dnum Number(2));

Dependent(ESSN Char(9), Dependent_Name Varchar2(15),


Sex Char, Bdate Date, Relationship Varchar2(10));

Dept_Locations(DNumber Number(2), Dlocation Varchar2(15));

Works_On(ESSN Char(9), PNo Number(2), Hours Number(3,1));

BN Shankar Gowda, BIT 60


Example-1: Find all employees who were born during 1980.
SELECT Name
FROM EMPLOYEE
WHERE BDate LIKE '__-___-80';

Example-2: Calculate the wages earned by each employee,


assuming the remuneration for each hour is Rs. 250.00.
SELECT Essn, Sum(Hours),Sum(Hours) * 250
FROM Works_On
GROUP BY Essn;

Example-3: Retrieve the department number, number of employees


in each department and their average salary.
SELECT DNo, Count(*), Avg(Salary)
FROM Employee, Department
WHERE DNo = DNumber
GROUP BY DNo;
BN Shankar Gowda, BIT 61
Example-4: For each project, retrieve the project number, the project
name, and the number of employees who work on that project.
SELECT PNumber, PName, Count(*)
FROM Project, Works_On
WHERE PNumber = PNo
GROUP BY PNumber, PName;

Example-5: For each project on which more than 3 employees work,


retrieve the project number, the project name, and the number of employees
who work on that project.
SELECT PNumber, PName, Count(*)
FROM Project, Works_On
WHERE PNumber = PNo
GROUP BY PNumber, PName
HAVING Count(*) > 3;

Example-6: Print the number of employees whose salaries exceed more


than Rs. 25,000/- in each department. Display the department name also.
SELECT DName, Count(*)
FROM Department, Employee
WHERE DNumber = DNo AND Salary > 25000
GROUP BY DName;

BN Shankar Gowda, BIT 62


STUDENT Database Example
Student(Student_id char(10), SName
varchar2(10), Major varchar2(5), GPA
number(3,1))
Faculty(Faculty_id char(4), FName char(4), Dept
varchar2(5), Desig varchar2(5), Salary
number(10,2))
Course(Course_id char(5), CName varchar2(10),
Faculty_id char(4))
Enrol(Course_id char(5), Student_id char(10),
Grade char(1))

BN Shankar Gowda, BIT 63


Example-1: List the names of all students enrolled for the course 'IS6T1'.
SELECT SName
FROM Student
WHERE Student_id In(
SELECT Student_id
FROM Enrol
WHERE Course_id = 'IS6T1');
Example-2: List the names of students enrolled for the course 'IS6T1'
and have received 'A' grade.
SELECT SName
FROM Student
WHERE Student_id In(
SELECT Student_id
FROM Enrol
WHERE Course_id = 'IS6T1' AND Grade = 'A');
Example-3: List all the departments having an average salary of above
Rs. 10000.
SELECT Dept
FROM Faculty
GROUP BY Dept
HAVING AVG(Salary) > 10000;
BN Shankar Gowda, BIT 64
Example-5: List the names of all faculty
members beginning with 'P' and ending
with letter 'A'.

SELECT FName
FROM Faculty
WHERE SUBSTR(FName,1,1) LIKE 'P'
AND SUBSTR(FName,-2,1) LIKE 'A';

BN Shankar Gowda, BIT 65


More Examples
Book Dealer Database
AUTHOR (Authorid : Int, Name : String, City : String,
Country : String)
PUBLISHER (Publisherid : Int, Name : String, City : String,
Country : String)
CATALOG (Bookid : Int, Title : String, Authorid : Int,
Publisherid : Int, Categoryid : Int, ear : Int, Price : Int)
CATEGORY (Categorid : Int, Description : String)
ORDER_DETAILS (OrderNo : Int, Bookid : Int, Quantity : Int)

BN Shankar Gowda, BIT 66


Queries
Give the details of the authors who have 2 or more
books in the catalog and the price of the books is
greater than the average price of the books in the
catalog and the year of publication is after 2000.
Query
select C.Authorid, A.AName
from Catalog C, Author A
where A.Authorid = C.Authorid and C.Year > 2000 and C.Price >
(Select Avg(Price) from Catalog)
group by C.Authorid, A.AName
having count(C.Authorid) >= 2;

BN Shankar Gowda, BIT 67


Find the number of the book which has
maximum sales.

Create View SalesDetails as (


Select OD.Bookid as Book#, C.Price as Cost,
Sum(OD.Quantity) as Qty, Sum(OD.Quantity *
C.Price) as Sales
from Order_Details OD, Catalog C, Author A
where OD.Bookid = C.Bookid and C.Authorid =
A.Authorid
group by OD.Bookid, C.Price);
select A.Authorid, A.AName,S.book#, S.Sales
from Author A, catalog C, Salesdetails S
where A.Authorid = C.Authorid and S.Book# = C.Bookid
and sales =
(select Max(Sales) from salesdetails);
BN Shankar Gowda, BIT 68
Student Enrollment Database
STUDENT (RegNo : String, Name : String,
Major : String, BDate : date)
COURSE (Course# : Int, CName : String, Dept :
String)
ENROLL (RegNo : String, Course# : Int, Sem :
Int, Marks : Int)
BOOK_ADOPTION (Course# : Int, Sem : Int,
ISBN : Int)
TEXT (ISBN : Int, BookTitle : String, Publisher :
String, Author : String)

BN Shankar Gowda, BIT 69


Produce a list of text books (include Course#,
ISBN, BookTitle) in the alphabetical order for
courses offered by the 'CS' department that
use more than two books
Select C.Course#, T.ISBN, T.BookTitle
from Course C,Book_Adoption BA, Text T
where C.Course# = BA.Course# and BA.ISBN =
T.ISBN and C.Dept = 'CSE'
group by C.Course#, T.ISBN, T.BookTitle;

BN Shankar Gowda, BIT 70


End of Chapter 5


BN Shankar Gowda, BIT 71

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy