+ All Categories
Home > Documents > Structured Query Language (SQL)

Structured Query Language (SQL)

Date post: 18-Jan-2016
Category:
Upload: ralph
View: 99 times
Download: 1 times
Share this document with a friend
Description:
Structured Query Language (SQL). SQL. Non-Procedural Structured Query Language.(4GL) Data Sub language. Developed by IBM in the late 1970’s. In 1986, the ANSI made SQL as standard for all RDBMS. SQL does not support any programming language constructs like if…else OR do…while. - PowerPoint PPT Presentation
92
Structured Query Language (SQL)
Transcript
Page 1: Structured Query Language (SQL)

Structured Query Language(SQL)

Page 2: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

2

SQL

• Non-Procedural Structured Query Language.(4GL)• Data Sub language.• Developed by IBM in the late 1970’s.

• In 1986, the ANSI made SQL as standard for all RDBMS.

• SQL does not support any programming language constructs like if…else OR do…while.

• SQL can be embedded in other programming languages like C, COBOL.

Page 3: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

3

Features of SQL

• SQL is a non-procedural language.

• SQL is used for all types of Database activities by all ranges of users including,

– System administrators.– Database administrators.– Application Programmers– End users.

Page 4: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

4

DBMS LANGUAGES

• Data Definition Language (DDL)– Creating & Altering the structure of the database.

• Data Manipulation Language (DML)– Insert, Update & Delete.

• Data Control Language (DCL)– Controlling access to the database(Grant,Revoke)

Page 5: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

5

•Transaction Control… COMMIT, ROLLBACK •Data Retrieval… SELECT

Page 6: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

6

DATA TYPES SUPPORTED IN SQL

Datatype Description

CHAR(n) To store fixed length string.Maximum length = 255 bytes.

VARCHAR2(n) To store variable length string.Maximum length = 2000 bytes.

LONG(n) To store variable length string.Maximum length = 2 Gigabytes.

NUMBER(p,s) To store numeric dataMax number of significant digits = 38

DATE To store date. (Both date & time are stored)Requires 8 bytes.

RAW(n) To store data in binary format such asSignature, photograpg.Maximum size = 255 bytes.

LONG RAW(n) Same as RAW.Maximum size = 2 Gigabytes.

Page 7: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

7

Tables used :

Emp Dept Salary Desig HistoryEmpcode Deptcode Empcode Desigcode EmpcodeEmpname Deptname Salmonth Designame ChangedateDeptcode Deptmanager Basic DesigcodeBirthdate Deptbudget Allow BasicpayJoindate Deduct GradelvlSexDesigcodeSupcodeGradecodeGradelvlBasicpay

Page 8: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

8

Data Retrieval Using SQL*PLUS

• SQL*PLUS provides a query capability in the form of SELECT statement.

• One can view the current information in the tables by using this statement.

Page 9: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

9

5 parts of basic SQL query•SELECT – list the columns you want

•… (more than one table, use table.field)

•FROM – list of tables used

•WHERE – selection/join criteria (opt)

•GROUP BY – how to summarize (opt)

•ORDER BY – sorting order (opt)

Page 10: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

10

SELECT Command

• Displaying some OR all the columns from a table.

SELECT <col1, col2, … .> OR <*>

FROM <table_name> ;

Page 11: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

11

SELECT * FROM Dept ;

List the Department table.

DEPTCODE DEPTNAME DEPTMANAGER DEPTBUDGETACCT Accounts 7839 19PRCH Purchase 7902 25SALE Sales 7698 39STOR Stores 7521 33FACL Facilities 7233 42PERS Personnel 7233 12

6 rows selected

1.

Page 12: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

12

A Better Way!

2. List the Department table.List the Department table

SELECT Deptcode, Deptname, Deptmanager, Deptbudget FROM Dept ;

DEPTCODE DEPTNAME DEPTMANAGER DEPTBUDGETACCT Accounts 7839 19PRCH Purchase 7902 25SALE Sales 7698 39STOR Stores 7521 33FACL Facilities 7233 42PERS Personnel 7233 12

6 rows selected

Page 13: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

13

Only Some Columns

SELECT Deptmanager, Deptname FROM Dept ;

3. List all department managers with the names of their department

DEPTMANAGER DEPTNAME7839 Accounts7902 Purchase7698 Sales7521 Stores7233 Facilities7233 Personnel

6 rows selected

Page 14: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

14

WHERE Predicate ( = )

SELECT Empname, Deptcode

FROM Emp

WHERE Deptcode = ‘Acct’ ;

4. List all employees of the Accounts department.

EMPNAME DEPTCODE

Reddy ACCT

Menon ACCT

Kaul ACCT

Page 15: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

15

WHERE Predicate ( < )

SELECT Empname, Gradecode

FROM Emp

WHERE Gradecode < 10 ;

5. List all officers.

EMPNAME GRADECODE

Naik 4Reddy 1

Murthy 4Wilson 4Jain 4Menon 4Khan 6Kumaran 4Kamal 4

9 rows selected

Page 16: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

16

Date Comparison

SELECT Empname, Birthdate

FROM Emp

WHERE Birthdate > ‘01-Jan-70’ ;

6. List all young employees.

EMPNAME BIRTHDATE

Shah 12-Aug-76Roy 01-Jul-72

Gupta 26-Jul-73Singh 20-Jan-74Patil 30-Apr-75Shroff 14-Nov-77Kaul 26-May-75Uma 14-Jan-75

8 rows selected

Page 17: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

17

e.g.

SELECT DISTINCT deptcode FROM emp ;

DISTINCT is an argument that provides a way for you to eliminate duplicate values.

Eliminating Redundant Data

Page 18: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

18

Use of Boolean operators

1. SELECT * FROM emp

WHERE Basicpay >= 2500 AND Basicpay <= 4500 ;

2. SELECT * FROM emp

WHERE Desigcode = ‘Engg’ OR Basicpay > 3000 ;

3. SELECT empname FROM emp

WHERE NOT deptcode = ‘Acct’ ;

Page 19: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

19

In Operator

1. SELECT empname FROM emp

WHERE deptcode IN(‘Acct’, ‘Pers’) ;

2. SELECT empname FROM emp

WHERE deptcode NOT IN(‘Acct’, ‘Pers’) ;

IN operator can be used to select rows that match one of the values included in the list.

Page 20: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

20

Between construct

Defines a range that values must fall into make the predicate true.

List all middle level staffList all middle level staff

SELECT Empname, GradecodeFROM EmpWHERE Gradecode BETWEEN 10 AND 15;

EMPNAME GRADECODE

Roy 12Gupta 12

Singh 12Uma 15

Page 21: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

21

Like construct

Used for pattern searching. Pattern consists of characters to be matched & the wildcard’ characters.

WildCard chars. Matches_ (under score) Any single character.% Any sequence of zero or

more characters.

Page 22: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

22

Like construct

List all employees with UMA in their names

SELECT EmpnameFROM EmpWHERE Upper(Empname) LIKE ‘%UMA%’ ;

EMPNAMEKumaranUma

Page 23: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

23

Null values

List the employees who have not been assigned to any supervisor

SELECT Empname, SupcodeFROM EmpWHERE Supcode IS NULL ;

EMPNAME SUPCODE

Reddy

Page 24: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

24

Compound Predicate - Interval

SELECT Empname, Sex, Joindate

FROM Emp

WHERE Sex = “F”

AND Joindate BETWEEN(sysdate - 5*365)

AND (sysdate - 6*365) ;

List the female employees who have just completed 5 years

EMPNAME SEX JOINDATE

Uma F 22-Oct-91

Page 25: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

25

Predicate using OR

SELECT EmpName

FROM Emp

WHERE BirthDate < (sysdate - 50*365)

OR JoinDate < (sysdate - 20*365) ;

List employees who are either 50 years or more or have morethan 20 years experience.

EMPNAME

ReddyKumaranKamal

Page 26: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

26

Parentheses in Predicate

SELECT EmpName

FROM Emp

WHERE DesigCode = ‘FRMN’

AND ((BirthDate < (sysdate - 50*365)

OR JoinDate < (sysdate - 20*365));

List foremen who are either 50 years or more or have more than20 years experience.

EMPNAME

KumaranKamal

Page 27: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

27

Expressions in SELECT List

SELECT Empcode, (Basic + Allow -Deduct ) * 0.01

FROM Salary

WHERE SalMonth = ‘1-Mar-97’;

List 1% of take-home pay of all employees.

Page 28: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

28

EMPCODE (BASIC+ALLOW-DEDUCT) * 0.01

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

7129 440

7233 440

7345 143

7369 66

7844 198

7876 44

7900 55

7902 330

7934 77

17 rows selected.

Page 29: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

29

Aliasing

SELECT EmpName,

TRUNC(SYSDATE - BirthDate) / 365) AGE

FROM Emp ;

List the present age of all the employees.

Page 30: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

30

EMPNAME AGE

Shah 20Naik 36Reddy 54Murthy 34Roy 24Shroff 19Kaul 21Kumaran 57Kamal 46Uma 22

17 rows selected.

Page 31: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

31

Order By

• For getting the resultant rows in a specified order.

• Ascending order is default.

List all employees ordered by age

SELECT EmpName, TRUNC(SYSDATE - BirthDate)/365 AGEFROM EmpORDER BY BirthDate ;

Page 32: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

32

EMPNAME AGE

Kumaran 57Reddy 54Kamal 46Menon 38Uma 22Patil 21Kaul 21Shah 20Shroff 19

9 rows selected

Page 33: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

33

Sorting Ascending / Descending

SELECT EmpName, GradeCode, GradeLevelFROM EmpWHERE GradeCode BETWEEN 10 AND 25ORDER BY GradeCode, GradeLevel DESC ;

List middle level staff according to seniorityList middle level staff according to seniority

Page 34: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

34

EMPNAME GRADECODE GRADELEVEL

Gupta 12 3Roy 12 2Singh 12 1Uma 15 3Patil 20 4Shroff 20 3Shah 20 2Kaul 20 1

8 rows selected

Page 35: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

35

Sorting by Result of Expression

SELECT EmpName, TRUNC(SYSDATE - BirthDate/365) AGE, GradeCode, GradeLevel

FROM EmpORDER BY 2 DESC, GradeCode, GradeLevel DESC ;

List middle level staff according to seniorityList all according to age and seniority

Page 36: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

36

EMPNAME AGE GRADECODE GRADELEVEL

Kumaran 57 4 1reddy 54 1 1Kamal 46 4 1Menon 38 4 1Wilson 37 4 4Patil 21 20 4Kaul 21 20 1Shah 20 20 2Shroff 19 20 3

9 rows selected.

Page 37: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

37

• Act on a group or set of rows and return one row of summary information per set.

SUM Computes the total value of the group. AVG Computes the average value of the group. MIN Computes the minimum value of the group. MAX Computes the maximum value of the group COUNT Counts the no. of NON-NULL values for

the specified group. COUNT(*) Counts the no. of rows including those

having NULLvalues for the given condition.

AGGREGATE Functions

Page 38: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

38

AGGREGATE Functions

SELECT COUNT(*)

FROM Emp

WHERE Supcode = ‘7844’ ;

Count employees reporting to Singh.

Count(*)

1

Page 39: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

39

• The grouping of rows is achieved by using the GROUP BY clause.

• Allows you to define a subset of the values in a particular field in terms of another field, and apply an aggregate functions to the subset.

• Enables you to combine fields and aggregate functions in a single SELECT statement

GROUP BY - Aggregate Functions

Page 40: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

40

SELECT Supcode, COUNT(*)

FROM Emp

GROUP BY Supcode

ORDER BY Supcode ;

GROUP BY - Aggregate Functions

List the number of staff reporting to each supervisor.

SUPCODE COUNT(*)

7566 17698 57782 17788 17839 67844 17902 1

1

8 rows selected.

Page 41: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

41

SELECT EmpCode,

SUM(Basic + Allow - Deduct) PAY

FROM Salary

WHERE SalMonth BETWEEN ‘1-Apr-96’

AND ‘31-Mar-97’

GROUP BY EmpCode

ORDER BY EmpCode ;

GROUP BY - Sum

List the total take-home pay during 96-97 for all employees.

Page 42: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

42

EMPCODE PAY

7129 1320007233 1320007345 429007369 198007499 561007876 132007900 165007902 990007934 15400

17 rows selected.

Page 43: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

43

SELECT GradeCode, MAX(Basic), MIN(Basic)

FROM Grade

GROUP BY GradeCode

ORDER BY GradeCode ;

GROUP BY - Max & Min

List the maximum & minimum salaries in grades.

Page 44: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

44

GRADECODE MAX(BASIC) MIN(BASIC)

1 25000 250004 21000 150006 13000 1100012 9000 800015 7000 600020 3500 2000

6 rows selected.

Page 45: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

45

• Defines criteria used to eliminate certain groups from the output, just as the WHERE clause does for individual rows.

• HAVING can take only arguments that have a single value

per output group.

HAVING

Page 46: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

46

SELECT SupCode, COUNT(*)

FROM Emp

GROUP BY SupCode

HAVING COUNT(*) > 3

ORDER BY SupCode ;

HAVING

List the number of staff reporting to each supervisorhaving more than 3 people working under them.

SUPCODE COUNT(*)7698 57839 6

Page 47: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

47

SELECT EmpCode, SUM(Basic + Allow - Deduct) PAY

FROM Salary

WHERE SalMonth BETWEEN ‘1-Apr-96’ AND ‘31-Mar-97’

GROUP BY EmpCode

HAVING SUM(Basic + Allow - Deduct)

ORDER BY EmpCode ;

Where - Group By - Having

List the total take-home pay during 96-97 for allemployees getting a total take-home-pay < Rs. 20000

EMPCODE PAY

7369 198007876 132007900 165007934 15400

Page 48: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

48

SELECT GradeCode, MAX(Basic), MIN(Basic)

FROM Grade

GROUP BY GradeCode

HAVING MIN(Basic) < 4000

ORDER BY GradeCode ;

Where - Group By - Having

List the maximum and minimum basic salary in each grade for grades with start < Rs. 4000

GRADECODE MAX(BASIC) MIN(BASIC)

20 3500 2000

Page 49: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

49

• The process of forming rows from two or more tables by comparing the contents of related cloumns is called ‘Joining Tables’.

• Joins are the foundation of multi-table query processing in SQL.

Syntax :

SELECT <col1,col2,...>

FROM <table_name>

WHERE <logical expr.> ;

Joining Table

Page 50: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

50

• Equi-Join

• Cartesian Join

• Self Join

• Outer Join

Joining Table - Types of Joins

Page 51: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

51

SELECT EmpCode, EmpName, Grade.Basic,Emp.Basic

FROM EMP, GRADE

WHERE Emp.GradeCode = Grade.GradeCode

AND Emp.GradeLevel = Grade.GradeLevel ;

Natural Join - Equi-Join

Check the basic salary of all employees.

Page 52: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

52

SELECT E.Empname, S.EmpName Supervisor,

FROM EMP E, EMP S

WHERE E.SupCode = S.EmpCode ;

Self Join

• Match and retrieve rows that have a matching value in different cloumns of the same table.

List employees along with the names of their supervisors

Page 53: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

53

• A cartesian product matches every row of one table to every row of the other table.

e.g.

SELECT EmpName, DeptName

FROM EMP, DEPT

WHERE DesigCode = ‘clerk’ ;

Cartesian Join

Page 54: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

54

• Retrieving selected rows from one table that don’t match rows in the other table.

Outer Join

To find department names & the employees in them, as well as those departments which do not have employees in them

SELECT DeptName, EmpName FROM EMP, DEPT WHERE EMP.DeptCode(+) = DEPT.DeptCode ;

Page 55: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

55

SELECT SupCode, COUNT(*)

FROM EMP

WHERE GradeCode < 10

GROUP BY SupCode

HAVING COUNT(*) > 3 ;

List the number of officers reporting to each supervisorshaving more than 3 people working under them.

Page 56: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

56

Nested Queries ( Subquery )

• Placing a query inside the predicate of another query, and using the inner query’s output in the predicate’s true or false

condition.

Subqueries divided into two groups.1. Single-Row Subquery

– Returns only one value to the outer query.

2. Multi-Row Subquery– Returns multiple values to the outer query

Page 57: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

57

Single-Row Subquery

SELECT EmpName FROM EMP

WHERE DesigCode = (SELECT DesigCode FROM EMP

WHERE EmpName = ‘scott’) ;

To find out all the employees who have the same job as ‘scott’.

Page 58: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

58

Single-Row Subquery

SELECT EmpName

FROM EMP

WHERE DeptCode = (SELECT DeptCode

FROM DEPT

WHERE DeptName = ‘sales’);

To list the names of all employees working in sales dept; assuming that dept no. of sales dept is not known.

Page 59: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

59

Multi-Row Subquery

SELECT EmpName, DesigCode, Salary

FROM EMP

WHERE DeptCode = 20 AND

DesigCode IN (SELECT DesigCode FROM EMP

WHERE DeptCode = 30) ;

List the name, job and salary of people in dept 20 who have the same job as people in dept. 30.

Page 60: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

60

Multiple levels of Nesting

SELECT EmpName, DesigCode, Salary

FROM EMP WHERE DeptCode = 20

AND DesigCode IN (SELECT DesigCode FROM EMP

WHERE DeptCode = (SELECT DeptCode

FROM DEPT WHERE DeptName = ‘sales’) ;

Find name, job and salary of people in dept 20 who have the same job as people in the sales dept.

Page 61: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

61

Subqueries returning Multiple values

SELECT DeptCode, EmpName, Salary

FROM EMP

WHERE (DeptCode, Salary)

IN (SELECT DeptCode, MAX(Salary)

FROM EMP

GROUP BY DeptCode) ;

Find out who are the highest paid employees in each dept.

Page 62: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

62

EXISTS Operator

Used to base a predicate on whether a subquery produces output or not.

EXISTS is an operator that produces a True or False value.

It takes a subquery as an argument and evaluates to True if

it produces any output or false if it does not.

Page 63: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

63

e.g. To list data from customer table if and only if

one or more of the customers in the customers

table are located in ‘San Jose’.

Select cnum, cname, city From customer

Where Exists

(Select * From customer

Where city = ‘San Jose’) ;

Page 64: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

64

EXISTS Operator

To list all department details from Dept. table which has atleast one employee.

SELECT * FROM DEPT AWHERE EXISTS (SELECT * FROM EMP B

WHERE B.DeptCode = A.DeptCode) ;

Page 65: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

65

•insert into tablename [(col1, col2, …)]

values (exp1, exp2, …);

•If the col names are not listed, the data is assigned to all cols in order

•To insert only into certain cols, name them

… cols not named are given null values

Inserting rows of data

Page 66: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

66

INSERT one complete row

INSERT INTO HISTORY

VALUES

(‘7369’, ‘01-Aug-96’, ‘SLMN’, ‘12’, 5000) ;

Page 67: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

67

INSERT one partial row

INSERT INTO EMP

(EmpCode, EmpName, Basic)

VALUES

(‘9123’, ‘Hussein’, 250) ;

Employ Hussein as a temporary employee.

Page 68: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

68

INSERT thru Subquery

INSERT INTO SALARY

SELECT EmpCode, trunc(Sysdate, mon), Basic,

Basic*1.5, Basic*0.3

FROM EMP ;

Update the SALARY table for the month.

Page 69: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

69

Delete one row

DELETE FROM EMP

WHERE EmpCode = ‘7934’ ;

Delete employee record of Kaul.

Page 70: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

70

Bulk Delete

DELETE FROM EMP

WHERE DeptCode = ‘FLNG’ ;

Delete all employee records of Filing Department.

Page 71: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

71

Delete entire Table

DELETE FROM SALARY ;

Delete the entire SALARY Table.

Page 72: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

72

Update one Row

UPDTAE EMP

SET GradeCode = ‘4’,

DesigCode = ‘MNGR’,

Basic = 15000

WHERE EmpCode = ‘7654’ ;

Promote Gupta as Manager (Exports)

Page 73: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

73

Bulk Update

UPDTAE DEPT

SET DeptBudget = DeptBudget * 1.25

WHERE DeptCode != ‘FACL’ ;

Raise the budget by 25% for all the departments except Facilities department.

Page 74: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

74

Creating a table with SQL

• CREATE TABLE tablename

(colname datatype [default value] [colconstrt]

… tblconstraint, …, tblconstraint)

[TABLESPACE tablespacename];

• Only one primary key per table (mult cols OK)

Page 75: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

75

• default 50 – use 50 if no value is given

• Column constraints:

•…not null (default is to allow nulls)

•…check condition

•…unique

•…primary key

•…references tblname [colname]

Constraint examples

Page 76: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

76

•(p is precision, s is scale)

•VARCHAR2(p) – variable length string

…… p can be 1 to 4000

•NUMBER(p,s) - p is # of digits

…… s is # of decimal digits (like Fortran)

•DATE - + time, many possible formats

… from 1/1/4712 BC to 12/31/4712 AD

Common datatypes

Page 77: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

77

•CHAR(p) – older fixed length format

… p from 1 to 255, pads with blanks

•LONG – variable length text string to 2G

… use is limited in queries

• LOB – replacing LONG, up to 4G (video)

•…”Large Object Block”

Page 78: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

78

DDL for Table Dept

Create table dept

( Deptcode char(4) constraint dept_pk primary key,

Deptname char(25) not null,

Deptmanager char(6),

Deptbudget number not null );

Page 79: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

79

DDL for Table Emp

Create table emp

( Empcode char(6) constraint emp_pk primary key,

Empname char(20) not null,

Deptcode char(4) constraint emp_dept_rc references

dept(deptcode) ,

Birthdate date not null,

Joindate date not null,

Sex char(1) not null

check(sex in(‘M’, ‘F’)),

Desigcode char(4) not null

constraint emp_desig_rc references desig(desigcode)

Page 80: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

80

Supcode char(6)constraint emp_sup_rc references emp(empcode),

Gradecode number(2),

Basic number(5)) ;

Contd...

Page 81: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

81

DDL for Table Grade

Create table grade

( Gradecode number(2) not null,

Gradelevel number not null,

Basic number(5) not null,

constraint grade_pk primary key(Gradecode, Gradelevel) ;

Page 82: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

82

•DROP TABLE tablename

… (ROLLBACK cannot restore this)

•DROP removes the table definition

•DELETE just removes the rows

it leaves the table

To remove a table

Page 83: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

83

Alter table

• Best to get your tables correct the first time

• But if alteration is needed, you can:

•… add a new column

•… change a column’s definition

Page 84: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

84

Example adding new columns

• alter table customers add (fax char(12),

ctype char(1) check(ctype in (‘I’,’B’)));

• Cannot add a new column as not null

… it starts out all null (empty)!

Page 85: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

85

Example modifying a column

• Alter table customers modify ( street varchar2(50));

• Can increase (not decrease) width

• Restrictions also exist on changes to:

•… datatypes and constraints (cur violated)

Page 86: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

86

Views - Creation

View is a logical table based on one or more tables.

View can be used as if it is a table.

View does not contain data of their own.

Whenever a view is accessed, the query is evaluated. Thus view is dynamic.

Any changes made in the view affect the tables on which the view is based.

View helps to hide the ownership details of a table and complexity of query used to retrieve data, from the user.

Page 87: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

87

Views - Creation

Create a view for Employee-Age.

CREATE VIEW EMPAGE (EmpCode, Age) AS(SELECT EmpCode, TRUNC((SYSDATE - BirthDate)/365)FROM EMP) ;

Page 88: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

88

Views - Creation

Create a view for Employee-Pay.

CREATE VIEW EMPPAY (EmpCode, NetPay, SalMonth) AS(SELECT EmpCode, (Basic + Allow - Deduct), SalMonthFROM SALARY) ;

Page 89: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

89

Use of Views

List employees who are older than their supervisors.

SELECT E.EmpCode, EmpName

FROM EMP E, EMPAGE A

WHERE E.EmpCode = A.EmpCode

AND age > (SELECT Age FROM EMPAGE

WHERE E.SupCode = EmpCode ) ;

Page 90: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

90

Commit

• Makes permanent all changes made since last Commit or since the beginning of the user’s session.

Syntax :

COMMIT [work] ;

work - is optional & only provided for readability.

Page 91: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

91

RollBack

• RollBack undoes all the changes that has been done since the last commit or last Rollback or the named savepoint.

Syntax :

ROLLBACK [work] ;

ROLLBACK TO Savepoint <savepoint_name> ;

Page 92: Structured Query Language (SQL)

Ltitl/Trng/Sql/V1.0

92

Savepoint

Savepoint <savepoint_name> ;

Savepoint helps in breaking a transaction into parts.

Useful if only a part of changes made are to be discarded.

If the name of an existing savepoint is reused, the old savepoint is erased.

Commit or Rollback without any parameters will erase all savepoints.

Rollback To Savepoint will undo all changes made after the Savepoint.


Recommended