0% found this document useful (0 votes)
21 views

Chapter 5

chapter 5

Uploaded by

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

Chapter 5

chapter 5

Uploaded by

yohanamd14
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 129

CHAPTER 5

SQL: Data Manipulation


Transparencies

Pearson Education Limited 1995, 2005

CHAPTER 5 - OBJECTIVES
Purpose and importance of SQL.
How to retrieve data from database using
SELECT and:

Use

compound WHERE conditions.


Sort query results using ORDER BY.
Use aggregate functions.
Group data using GROUP BY and HAVING.
Use subqueries.

2
Pearson Education Limited 1995, 2005

CHAPTER 5 - OBJECTIVES
Join

tables together.
Perform
set operations
EXCEPT).

(UNION,

How to update database


UPDATE, and DELETE.

INTERSECT,

using

INSERT,

3
Pearson Education Limited 1995, 2005

OBJECTIVES OF SQL

Ideally, database language should allow user to:


create

the database and relation structures;


perform insertion, modification, deletion of data
from relations;
perform simple and complex queries.

Must perform these tasks with minimal user


effort and command structure/syntax must be
easy to learn.
It must be portable.

4
Pearson Education Limited 1995, 2005

OBJECTIVES OF SQL

SQL is a transform-oriented language with 2


major components:
A

DDL for defining database structure.


A DML for retrieving and updating data.

Until SQL:1999, SQL did not contain flow of


control commands. These had to be implemented
using a programming or job-control language, or
interactively by the decisions of user.
5
Pearson Education Limited 1995, 2005

OBJECTIVES OF SQL

SQL is relatively easy to learn:


it

is non-procedural - you specify what information


you require, rather than how to get it;
it is essentially free-format.

6
Pearson Education Limited 1995, 2005

OBJECTIVES OF SQL

Consists of standard English words:

1) CREATE TABLE Staff(staffNo VARCHAR(5),


lName VARCHAR(15),
salary DECIMAL(7,2));
2) INSERT INTO Staff VALUES (SG16,
Brown, 8300);
3) SELECT staffNo, lName, salary
FROM Staff
WHERE salary > 10000;
7
Pearson Education Limited 1995, 2005

OBJECTIVES OF SQL

Can be used by range of users including DBAs,


management, application developers, and other
types of end users.
An ISO standard now exists for SQL, making it
both the formal and de facto standard language
for relational databases.

8
Pearson Education Limited 1995, 2005

HISTORY OF SQL
In 1974, D. Chamberlin (IBM San Jose
Laboratory) defined language called Structured
English Query Language (SEQUEL).
A revised version, SEQUEL/2, was defined in
1976 but name was subsequently changed to
SQL for legal reasons.

9
Pearson Education Limited 1995, 2005

HISTORY OF SQL
Still pronounced see-quel, though official
pronunciation is S-Q-L.
IBM subsequently produced a prototype DBMS
called System R, based on SEQUEL/2.
Roots
of SQL, however, are in SQUARE
(Specifying Queries as Relational Expressions),
which predates System R project.

10
Pearson Education Limited 1995, 2005

HISTORY OF SQL
In late 70s, ORACLE appeared and was probably
first commercial RDBMS based on SQL.
In 1987, ANSI and ISO published an initial
standard for SQL.
In 1989, ISO published an addendum that defined
an Integrity Enhancement Feature.
In 1992, first major revision to ISO standard
occurred, referred to as SQL2 or SQL/92.
In 1999, SQL:1999 was released with support for
object-oriented data management.
In late 2003, SQL:2003 was released.

11
Pearson Education Limited 1995, 2005

IMPORTANCE OF SQL
SQL
has
become
part
of
application
architectures such as IBMs Systems Application
Architecture.
It
is strategic choice of many large and
influential organizations (e.g. X/OPEN).
SQL is Federal Information Processing Standard
(FIPS) to which conformance is required for all
sales of databases to American Government.

12
Pearson Education Limited 1995, 2005

IMPORTANCE OF SQL

SQL is used in other standards and even


influences development of other standards as a
definitional tool. Examples include:
ISOs

Information Resource Directory System (IRDS)


Standard
Remote Data Access (RDA) Standard.

13
Pearson Education Limited 1995, 2005

WRITING SQL COMMANDS

SQL statement consists of reserved words and


user-defined words.
Reserved words are a fixed part of SQL and must
be spelt exactly as required and cannot be split
across lines.
User-defined words are made up by user and
represent names of various database objects
such as relations, columns, views.

14
Pearson Education Limited 1995, 2005

WRITING SQL COMMANDS


Most components of an SQL statement are case
insensitive, except for literal character data.
More readable with indentation and lineation:

Each

clause should begin on a new line.


Start of a clause should line up with start of other
clauses.
If clause has several parts, should each appear on a
separate line and be indented under start of clause.

15
Pearson Education Limited 1995, 2005

WRITING SQL COMMANDS

Use extended form of BNF notation:


- Upper-case letters represent reserved words.

- Lower-case letters represent user-defined


words.
- | indicates a choice among alternatives.
- Curly braces indicate a required element.
- Square brackets indicate an optional element.
- indicates optional repetition (0 or more).
16
Pearson Education Limited 1995, 2005

LITERALS

Literals are constants used in SQL statements.


All non-numeric literals must be enclosed in
single quotes (e.g. London).
All numeric literals must not be enclosed in
quotes (e.g. 650.00).

17
Pearson Education Limited 1995, 2005

SELECT STATEMENT
SELECT [DISTINCT | ALL]
{* | [columnExpression [AS newName]] [,...] }
FROM
TableName [alias] [, ...]
[WHERE condition]
[GROUP BY
columnList] [HAVING
condition]
[ORDER BY
columnList]

18
Pearson Education Limited 1995, 2005

SELECT STATEMENT
FROM
Specifies table(s) to be used.
WHERE
Filters rows.
GROUP BY Forms groups of rows with same
HAVING
SELECT
ORDER BY

column value.

Filters groups subject to some


condition.

Specifies which columns are to


appear in output.

Specifies the order of the output.

19
Pearson Education Limited 1995, 2005

SELECT STATEMENT

Order of the clauses cannot be changed.

Only SELECT and FROM are mandatory.

20
Pearson Education Limited 1995, 2005

EXAMPLE 5.1
ROWS

ALL COLUMNS, ALL

List full details of all staff.


SELECT staffNo, fName, lName, address,
position, sex, DOB, salary, branchNo
FROM Staff;

Can use * as an abbreviation for all columns:


SELECT *
FROM Staff;

21
Pearson Education Limited 1995, 2005

EXAMPLE 5.1
ROWS

ALL COLUMNS, ALL

22
Pearson Education Limited 1995, 2005

EXAMPLE 5.2 SPECIFIC COLUMNS,


ALL ROWS
Produce a list of salaries for all staff, showing
only staff number, first and last names, and
salary.
SELECT staffNo, fName, lName, salary
FROM Staff;

23
Pearson Education Limited 1995, 2005

EXAMPLE 5.2 SPECIFIC COLUMNS,


ALL ROWS

24
Pearson Education Limited 1995, 2005

EXAMPLE 5.3 USE OF DISTINCT


List the property numbers of all properties that
have been viewed.
SELECT propertyNo
FROM Viewing;

25
Pearson Education Limited 1995, 2005

EXAMPLE 5.3 USE OF DISTINCT

Use DISTINCT to eliminate duplicates:


SELECT DISTINCT propertyNo
FROM Viewing;

26
Pearson Education Limited 1995, 2005

EXAMPLE
FIELDS

5.4

CALCULATED

Produce list of monthly salaries for all staff,


showing staff number, first/last name, and
salary.
SELECT staffNo, fName, lName, salary/12
FROM Staff;

27

Pearson Education Limited 1995, 2005

EXAMPLE
FIELDS

5.4

CALCULATED

To name column, use AS clause:


SELECT staffNo, fName, lName, salary/12
FROM Staff;

AS monthlySalary

28
Pearson Education Limited 1995, 2005

EXAMPLE
5.5
COMPARISON
SEARCH CONDITION
List all staff with a salary greater than 10,000.
SELECT staffNo, fName, lName, position, salary
FROM Staff
WHERE salary > 10000;

29
Pearson Education Limited 1995, 2005

EXAMPLE
5.6
COMPOUND
COMPARISON SEARCH CONDITION
List addresses of all branch offices in London or
Glasgow.
SELECT *

FROM Branch
WHERE city = London OR city = Glasgow;

30
Pearson Education Limited 1995, 2005

EXAMPLE 5.7
CONDITION

RANGE

SEARCH

Daftar semua staf dengan gaji antara 20.000 dan


30.000.
SELECT staffNo, Fname, lname, posisi, gaji
DARI Staf
MANA gaji ANTARA 20000 DAN 30000;
ANTARA tes meliputi titik akhir dari jangkauan.

31
Pearson Education Limited 1995, 2005

EXAMPLE 5.7
CONDITION

RANGE

SEARCH

32
Pearson Education Limited 1995, 2005

EXAMPLE 5.7
CONDITION

RANGE

SEARCH

Juga versi menegasikan TIDAK ANTARA.


ANTARA tidak menambah banyak kekuatan
ekspresif SQL. Bisa juga menulis:

SELECT staffNo, Fname, lname, posisi, gaji


DARI Staf
MANA gaji> = 20000 AND gaji <= 30000;

Berguna, meskipun, untuk rentang nilai.


33
Pearson Education Limited 1995, 2005

EXAMPLE 5.8 SET MEMBERSHIP


Daftar semua manajer dan supervisor.

SELECT staffNo, fName, lName, position


FROM Staff
WHERE position IN (Manager, Supervisor);

34
Pearson Education Limited 1995, 2005

EXAMPLE 5.8 SET MEMBERSHIP


Ada

versi menegasikan (TIDAK DI).


DI tidak menambah banyak kekuatan ekspresif
SQL. Bisa menyatakan ini sebagai:
SELECT staffNo, fName, lName, position
FROM Staff
WHERE position=Manager OR
position=Supervisor;

IN lebih efisien ketika set berisi banyak nilai.

35
Pearson Education Limited 1995, 2005

EXAMPLE 5.9 PATTERN MATCHING


Cari semua pemilik dengan string 'Glasgow' di
alamat mereka.
SELECT ownerNo, fName, lName, address, telNo
FROM PrivateOwner
WHERE address LIKE %Glasgow%;

36
Pearson Education Limited 1995, 2005

EXAMPLE 5.9 PATTERN MATCHING

SQL has two special pattern matching symbols:


%:

sequence of zero or more characters;


_ (underscore): any single character.

LIKE '% Glasgow%' berarti urutan karakter dari


setiap panjang yang berisi 'Glasgow'.

37
Pearson Education Limited 1995, 2005

EXAMPLE 5.10
CONDITION

NULL

SEARCH

Rincian daftar semua tampilan dengan di PG4 properti di


mana komentar belum diberikan.
Ada 2 tampilan dengan untuk PG4 properti, satu dengan
dan satu tanpa komentar.
Harus menguji nol eksplisit menggunakan kata kunci
khusus
IS
NULL:
SELECT
clientNo,

viewDate

FROM Viewing
WHERE propertyNo = PG4 AND
comment IS NULL;

38
Pearson Education Limited 1995, 2005

EXAMPLE 5.10
CONDITION

NULL

SEARCH

Versi menegasikan (IS NOT NULL)


dapat menguji nilai-nilai non-nol.

Pearson Education Limited 1995, 2005

39

EXAMPLE 5.11
ORDERING

SINGLE COLUMN

Daftar gaji untuk semua staf, diatur dalam


urutan gaji.
SELECT staffNo, fName, lName, salary
FROM Staff
ORDER BY salary DESC;

40
Pearson Education Limited 1995, 2005

EXAMPLE 5.11
ORDERING

SINGLE COLUMN

41
Pearson Education Limited 1995, 2005

EXAMPLE 5.12 MULTIPLE COLUMN


ORDERING
Menghasilkan daftar singkat dari properti di
urutan jenis properti.
SELECT propertyNo, type, rooms, rent
FROM PropertyForRent
ORDER BY type;

42
Pearson Education Limited 1995, 2005

EXAMPLE 5.12 MULTIPLE COLUMN


ORDERING

43
Pearson Education Limited 1995, 2005

EXAMPLE 5.12 MULTIPLE COLUMN


ORDERING
Empat flat dalam daftar ini - karena tidak ada
semacam
kunci
minor
tertentu,
sistem
mengatur baris ini dalam urutan yang
dipilihnya.
Untuk mengatur agar sewa, menentukan urutan
kecil:
SELECT propertyNo, type, rooms, rent

FROM PropertyForRent
ORDER BY type, rent DESC;

44
Pearson Education Limited 1995, 2005

EXAMPLE 5.12 MULTIPLE COLUMN


ORDERING

45
Pearson Education Limited 1995, 2005

SELECT
STATEMENT
AGGREGATES

Standar ISO mendefinisikan lima fungsi agregat:

COUNT mengembalikan jumlah nilai


kolom tertentu.
SUM mengembalikan jumlah nilai dalam
tertentu.
AVG
kembali rata-rata nilai dalam
tertentu.
MIN mengembalikan nilai terkecil dalam
tertentu.
MAX mengembalikan nilai terbesar dalam
tertentu.

dalam
kolom
kolom
kolom
kolom
46

Pearson Education Limited 1995, 2005

SELECT
STATEMENT
AGGREGATES

Masing-masing beroperasi pada satu kolom


tabel dan mengembalikan nilai tunggal.
COUNT, MIN, dan MAX berlaku untuk bidang
numerik dan non-numerik, tetapi SUM dan AVG
dapat digunakan hanya pada bidang numerik.
Terlepas dari COUNT (*), masing-masing fungsi
menghilangkan nulls pertama dan beroperasi
hanya pada nilai-nilai yang tersisa non-nol.

47
Pearson Education Limited 1995, 2005

SELECT
STATEMENT
AGGREGATES

COUNT (*) menghitung semua baris dari tabel,


terlepas dari apakah nulls atau nilai ganda
terjadi.
Dapat menggunakan DISTINCT sebelum nama
kolom untuk menghilangkan duplikasi.
DISTINCT tidak berpengaruh dengan MIN /
MAX, tetapi mungkin memiliki dengan SUM /
AVG.

48
Pearson Education Limited 1995, 2005

SELECT
STATEMENT
AGGREGATES

Fungsi agregat hanya dapat digunakan dalam


daftar SELECT dan klausa HAVING.
Jika daftar SELECT termasuk fungsi agregat
dan tidak ada klausa GROUP BY, daftar
SELECT tidak dapat referensi kolom dengan
fungsi agregat. Sebagai contoh, berikut adalah
ilegal:
SELECT staffNo, COUNT(salary)
FROM Staff;

49
Pearson Education Limited 1995, 2005

EXAMPLE 5.13 USE OF COUNT(*)


Berapa banyak properti biaya lebih dari 350
per bulan untuk menyewa?
SELECT COUNT(*) AS myCount
FROM PropertyForRent
WHERE rent > 350;

Pearson Education Limited 1995, 2005

50

EXAMPLE
5.14
COUNT(DISTINCT)

USE

OF

Berapa banyak sifat yang berbeda dilihat dalam


'04 Mei?
SELECT COUNT(DISTINCT propertyNo) AS
myCount
FROM Viewing
WHERE viewDate BETWEEN 1-May-04
AND 31-May-04;

Pearson Education Limited 1995, 2005

51

EXAMPLE 5.15 USE OF COUNT AND


SUM
Cari jumlah Manajer dan jumlah gaji mereka.
SELECT COUNT(staffNo) AS myCount,
SUM(salary) AS mySum
FROM Staff
WHERE position = Manager;

52
Pearson Education Limited 1995, 2005

EXAMPLE 5.16
AVG

USE OF MIN, MAX,

Cari minimum, maksimum, dan rata-rata


gaji staf.
SELECT MIN(salary) AS myMin,
MAX(salary) AS myMax,
AVG(salary) AS myAvg
FROM Staff;

Pearson Education Limited 1995, 2005

53

SELECT STATEMENT - GROUPING


Menggunakan klausa GROUP BY untuk
mendapatkan sub-total.
SELECT dan GROUP BY terintegrasi: setiap
item dalam daftar SELECT harus bernilai
tunggal per kelompok, dan SELECT klausa
hanya dapat berisi:
nama kolom
fungsi agregat
konstanta
ekspresi yang melibatkan kombinasi di atas.

54
Pearson Education Limited 1995, 2005

SELECT STATEMENT - GROUPING

Semua nama kolom dalam daftar SELECT harus


muncul dalam klausa GROUP BY kecuali nama
hanya digunakan dalam fungsi agregat.
Jika MANA digunakan dengan GROUP BY,
MANA diterapkan terlebih dahulu, kemudian
kelompok yang terbentuk dari sisa baris yang
sesuai predikat.
ISO menganggap dua nulls harus sama untuk
tujuan GROUP BY.
55
Pearson Education Limited 1995, 2005

EXAMPLE 5.17 USE OF GROUP BY


Cari jumlah staf di masing-masing cabang dan
jumlah gaji mereka.
SELECT

branchNo,
COUNT(staffNo) AS myCount,

SUM(salary) AS mySum
FROM Staff
GROUP BY branchNo
ORDER BY branchNo;
56
Pearson Education Limited 1995, 2005

EXAMPLE 5.17 USE OF GROUP BY

57
Pearson Education Limited 1995, 2005

RESTRICTED GROUPINGS
HAVING CLAUSE

Klausa HAVING dirancang untuk digunakan


dengan GROUP BY untuk membatasi kelompok
yang muncul dalam tabel hasil akhir.
Mirip dengan MANA, tapi MANA menyaring
baris individu sedangkan MEMILIKI kelompok
filter.
Nama kolom dalam klausa HAVING juga harus
muncul dalam GROUP BY daftar atau
terkandung dalam fungsi agregat.
58
Pearson Education Limited 1995, 2005

EXAMPLE 5.18 USE OF HAVING


Untuk setiap cabang dengan lebih dari 1
anggota staf, menemukan jumlah staf di
masing-masing cabang dan jumlah gaji
mereka.
SELECT branchNo,
COUNT(staffNo) AS myCount,
SUM(salary) AS mySum
FROM Staff
GROUP BY branchNo
HAVING COUNT(staffNo) > 1
ORDER BY branchNo;
59
Pearson Education Limited 1995, 2005

EXAMPLE 5.18 USE OF HAVING

60
Pearson Education Limited 1995, 2005

SUBQUERIES

Beberapa pernyataan SQL dapat memiliki


SELECT tertanam dalam diri mereka.
Sebuah subselect dapat digunakan dalam
MANA dan HAVING klausa dari SELECT luar,
di mana ia disebut subquery atau nested query.
Subselects juga dapat muncul di INSERT,
UPDATE, dan DELETE.

61
Pearson Education Limited 1995, 2005

EXAMPLE 5.19 SUBQUERY WITH


EQUALITY
Staf Daftar yang bekerja di cabang di '163 Main
St'.
SELECT staffNo, fName, lName, position
FROM Staff
WHERE branchNo =
(SELECT branchNo
FROM Branch
WHERE street = 163 Main St);

62
Pearson Education Limited 1995, 2005

EXAMPLE 5.19 SUBQUERY WITH


EQUALITY
Inner SELECT menemukan nomor cabang
untuk cabang di '163 Main St' ('B003').
Outer SELECT kemudian mengambil rincian
semua staf yang bekerja di cabang ini.
Outer SELECT kemudian menjadi:

SELECT staffNo, fName, lName, position

FROM Staff
WHERE branchNo = B003;

63
Pearson Education Limited 1995, 2005

EXAMPLE 5.19 SUBQUERY WITH


EQUALITY

64
Pearson Education Limited 1995, 2005

EXAMPLE 5.20 SUBQUERY WITH


AGGREGATE
Daftar semua staf yang gajinya lebih besar dari
rata-rata gaji, dan menunjukkan seberapa
banyak.
SELECT staffNo, fName, lName, position,
salary (SELECT AVG(salary) FROM Staff) As
SalDiff
FROM Staff
WHERE salary >
(SELECT AVG(salary)
FROM Staff);
65
Pearson Education Limited 1995, 2005

EXAMPLE 5.20 SUBQUERY WITH


AGGREGATE
Tidak dapat menulis 'WHERE gaji> AVG (gaji)'
Sebaliknya,
gunakan
subquery
untuk
menemukan
rata-rata
gaji
(17000),
dan
kemudian menggunakan luar SELECT untuk
menemukan staf mereka dengan gaji yang lebih
besar dari ini:

SELECT staffNo, fName, lName, position,


salary 17000 As salDiff
FROM Staff
WHERE salary > 17000;

66
Pearson Education Limited 1995, 2005

EXAMPLE 5.20 SUBQUERY WITH


AGGREGATE

67
Pearson Education Limited 1995, 2005

SUBQUERY RULES

ORDER BY klausa tidak dapat digunakan dalam


subquery (meskipun dapat digunakan dalam
terluar SELECT).
Daftar Subquery SELECT harus terdiri dari nama
kolom atau ekspresi, kecuali untuk subqueries
yang menggunakan EXISTS.
Secara default, nama kolom mengacu pada nama
tabel di klausa FROM dari subquery. Dapat
merujuk pada tabel di FROM menggunakan alias.
68
Pearson Education Limited 1995, 2005

SUBQUERY RULES

Ketika
subquery
adalah
operan
dalam
perbandingan, subquery harus muncul di sisi
kanan.
Sebuah subquery tidak boleh
sebagai operan dalam ekspresi.

digunakan

69
Pearson Education Limited 1995, 2005

EXAMPLE 5.21 NESTED SUBQUERY:


USE OF IN
Sifat Daftar ditangani oleh staf di '163 Main St'.
SELECT propertyNo, street, city, postcode, type,
rooms, rent
FROM PropertyForRent
WHERE staffNo IN
(SELECT staffNo
FROM Staff
WHERE branchNo =
(SELECT branchNo
FROM Branch
WHERE street = 163 Main St));
70

Pearson Education Limited 1995, 2005

EXAMPLE 5.21 NESTED SUBQUERY:


USE OF IN

71
Pearson Education Limited 1995, 2005

ANY AND ALL


ANY and ALL may be used with subqueries
that produce a single column of numbers.
With ALL, condition will only be true if it is
satisfied by all values produced by subquery.
With ANY, condition will be true if it is satisfied
by any values produced by subquery.
If subquery is empty, ALL returns true, ANY
returns false.
SOME may be used in place of ANY.

72
Pearson Education Limited 1995, 2005

EXAMPLE 5.22 USE OF ANY/SOME


Cari staf yang gajinya lebih besar dari gaji
setidaknya satu anggota staf di cabang B003.
SELECT staffNo, fName, lName, position,
salary
FROM Staff
WHERE salary > SOME
(SELECT salary
FROM Staff
WHERE branchNo = B003);
73
Pearson Education Limited 1995, 2005

EXAMPLE 5.22 USE OF ANY/SOME

Inner query menghasilkan set {12000, 18000,


24000} dan permintaan luar memilih staf mereka
yang gaji lebih besar daripada nilai-nilai di set
ini.

74
Pearson Education Limited 1995, 2005

EXAMPLE 5.23 USE OF ALL


Cari staf yang gajinya lebih besar dari gaji
setiap anggota staf di cabang B003.
SELECT staffNo, fName, lName, position,
salary
FROM Staff
WHERE salary > ALL
(SELECT salary
FROM Staff
WHERE branchNo = B003);
75
Pearson Education Limited 1995, 2005

EXAMPLE 5.23 USE OF ALL

76
Pearson Education Limited 1995, 2005

MULTI-TABLE QUERIES

Dapat menggunakan subqueries disediakan kolom


hasil berasal dari tabel yang sama.
Jika kolom hasil berasal dari lebih dari satu tabel
harus menggunakan bergabung.
Untuk melakukan bergabung, termasuk lebih dari
satu meja di klausa FROM.
Gunakan koma sebagai pemisah dan biasanya
mencakup klausa WHERE untuk menentukan
bergabung kolom (s).
77
Pearson Education Limited 1995, 2005

MULTI-TABLE QUERIES

Juga memungkinkan untuk menggunakan alias


untuk tabel disebutkan dalam klausa FROM.
Alias dipisahkan dari nama tabel dengan spasi.
Alias dapat digunakan untuk memenuhi syarat
nama kolom ketika ada ambiguitas.

78
Pearson Education Limited 1995, 2005

EXAMPLE 5.24 SIMPLE JOIN


Nama Daftar semua klien yang telah melihat
properti bersama dengan komentar yang
disediakan.
SELECT c.clientNo, fName, lName,
propertyNo, comment
FROM Client c, Viewing v
WHERE c.clientNo = v.clientNo;

79
Pearson Education Limited 1995, 2005

EXAMPLE 5.24 SIMPLE JOIN

Hanya mereka baris dari kedua tabel yang


memiliki nilai yang identik di kolom clientNo
(c.clientNo = v.clientNo) termasuk dalam hasil.
Setara dengan equi-bergabung dalam aljabar
relasional.

80
Pearson Education Limited 1995, 2005

ALTERNATIVE JOIN CONSTRUCTS

SQL provides alternative ways to specify joins:


FROM Client c JOIN Viewing v ON c.clientNo =
v.clientNo
FROM Client JOIN Viewing USING clientNo
FROM Client NATURAL JOIN Viewing

In each case, FROM replaces original FROM and


WHERE. However, first produces table with two
identical clientNo columns.
81
Pearson Education Limited 1995, 2005

EXAMPLE 5.25 SORTING A JOIN


Untuk masing-masing cabang, daftar nomor
dan nama staf yang mengelola properti, dan
properti yang mereka kelola.

SELECT s.branchNo, s.staffNo, fName,


lName,
propertyNo
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
ORDER
BY
s.branchNo,
s.staffNo,
propertyNo;
82
Pearson Education Limited 1995, 2005

EXAMPLE 5.25 SORTING A JOIN

83
Pearson Education Limited 1995, 2005

EXAMPLE 5.26 THREE TABLE JOIN


Untuk masing-masing cabang, daftar staf yang
mengelola properti, termasuk kota di mana
cabang terletak dan properti mereka kelola.
SELECT b.branchNo, b.city, s.staffNo, fName,
lName,
propertyNo
FROM Branch b, Staff s, PropertyForRent p
WHERE b.branchNo = s.branchNo AND
s.staffNo = p.staffNo
ORDER BY b.branchNo, s.staffNo,
propertyNo;
84
Pearson Education Limited 1995, 2005

EXAMPLE 5.26 THREE TABLE JOIN

Formulasi alternatif untuk FROM dan WHERE:


FROM (Branch b JOIN Staff s USING
branchNo) AS
bs JOIN PropertyForRent p USING
staffNo
85
Pearson Education Limited 1995, 2005

EXAMPLE 5.27 MULTIPLE


GROUPING COLUMNS
Cari sejumlah properti yang ditangani oleh
masing-masing anggota staf.

SELECT s.branchNo, s.staffNo, COUNT(*) AS


myCount
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.branchNo, s.staffNo
ORDER BY s.branchNo, s.staffNo;
86
Pearson Education Limited 1995, 2005

EXAMPLE 5.27 MULTIPLE


GROUPING COLUMNS

87
Pearson Education Limited 1995, 2005

COMPUTING A JOIN
Prosedur untuk menghasilkan hasil join adalah:
1. Bentuk produk Cartesian tabel disebutkan
dalam klausa FROM.
2. Jika ada klausul WHERE, menerapkan kondisi
pencarian untuk setiap baris dari tabel produk,
mempertahankan baris yang memenuhi kondisi.
3. Untuk setiap baris yang tersisa, menentukan
nilai setiap item dalam daftar SELECT untuk
menghasilkan satu baris dalam tabel hasil.
88
Pearson Education Limited 1995, 2005

COMPUTING A JOIN
4.

Jika
DISTINCT
telah
ditetapkan,
menghilangkan duplikasi baris dari tabel hasil.

5. Jika ada klausa ORDER BY, semacam hasil


tabel yang diperlukan.
SQL menyediakan format khusus dari SELECT
untuk produk Cartesian:
SELECT [DISTINCT
|
ALL]
{*
|
columnList}
FROM Table1 CROSS JOIN Table2
89
Pearson Education Limited 1995, 2005

OUTER JOINS
Jika salah satu baris dari sebuah tabel
bergabung tak tertandingi, baris dihilangkan
dari hasil tabel.
Outer join operasi mempertahankan baris yang
tidak memenuhi kondisi join.
Pertimbangkan tabel berikut:

90
Pearson Education Limited 1995, 2005

OUTER JOINS

The (INNER) tergabung Dari 2 tabel berikut:


SELECT b.*, p.*

FROM Branch1 b, PropertyForRent1 p


WHERE b.bCity = p.pCity;

91
Pearson Education Limited 1995, 2005

OUTER JOINS
Tabel hasil memiliki dua baris di mana kota
yang sama.
Tidak ada baris yang sesuai dengan cabang di
Bristol dan Aberdeen.
Untuk menyertakan baris yang tak tertandingi
dalam hasil tabel, menggunakan Outer
bergabung.

92
Pearson Education Limited 1995, 2005

EXAMPLE 5.28 LEFT OUTER JOIN


Daftar cabang dan properti yang berada di
kota yang sama bersama dengan cabangcabang yang tak tertandingi.
SELECT b.*, p.*

FROM Branch1 b LEFT JOIN


PropertyForRent1 p ON b.bCity = p.pCity;

93
Pearson Education Limited 1995, 2005

EXAMPLE 5.28 LEFT OUTER JOIN


Termasuk orang-orang baris pertama table
(kiri) tak tertandingi dengan baris dari kedua
tabel (kanan).
Kolom dari tabel kedua diisi dengan NULLs.

94
Pearson Education Limited 1995, 2005

EXAMPLE 5.29 RIGHT OUTER JOIN


Daftar cabang dan properti di kota yang sama
dan setiap sifat yang tak tertandingi.
SELECT b.*, p.*

FROM Branch1 b RIGHT JOIN


PropertyForRent1 p ON b.bCity = p.pCity;

95
Pearson Education Limited 1995, 2005

EXAMPLE 5.29 RIGHT OUTER JOIN


Tepat Outer bergabung termasuk orang baris
kedua tabel (kanan) yang tak tertandingi
dengan baris dari tabel pertama (kiri).
Kolom dari tabel pertama diisi dengan NULLs.

96
Pearson Education Limited 1995, 2005

EXAMPLE 5.30 FULL OUTER JOIN


Daftar cabang dan properti di kota yang sama
dan setiap cabang yang tak tertandingi atau
properti.
SELECT b.*, p.*

FROM Branch1 b FULL JOIN


PropertyForRent1 p ON b.bCity = p.pCity;

97
Pearson Education Limited 1995, 2005

EXAMPLE 5.30 FULL OUTER JOIN


Termasuk baris yang tak tertandingi di kedua
tabel.
Kolom yang tak tertandingi dipenuhi dengan
NULLs.

98
Pearson Education Limited 1995, 2005

EXISTS AND NOT EXISTS

ADA dan TIDAK ada yang untuk digunakan hanya


dengan subqueries.
Menghasilkan true / hasil palsu sederhana.
Benar jika dan hanya jika ada setidaknya satu baris
dalam tabel hasil dikembalikan oleh subquery.
False jika subquery mengembalikan sebuah tabel
hasil kosong.
TIDAK ada adalah kebalikan dari ADA.
99
Pearson Education Limited 1995, 2005

EXISTS AND NOT EXISTS

Seperti (NOT) ADA cek hanya untuk keberadaan


atau non-keberadaan baris dalam tabel hasil
subquery, subquery dapat berisi sejumlah kolom.
Umum untuk subqueries berikut (NOT) ADA
menjadi bentuk:
(SELECT * ...)

100
Pearson Education Limited 1995, 2005

EXAMPLE
EXISTS

5.31

QUERY

USING

Cari semua staf yang bekerja di cabang London.

SELECT staffNo, fName, lName, position


FROM Staff s
WHERE EXISTS
(SELECT *
FROM Branch b
WHERE s.branchNo = b.branchNo AND
city = London);
101
Pearson Education Limited 1995, 2005

EXAMPLE
EXISTS

5.31

QUERY

USING

102
Pearson Education Limited 1995, 2005

EXAMPLE
EXISTS

5.31

QUERY

USING

Catatan, kondisi pencarian s.branchNo = b.branchNo


perlu mempertimbangkan catatan cabang yang
benar untuk setiap anggota staf.
Jika diabaikan, akan mendapatkan semua catatan
staf terdaftar karena subquery:

SELECT * FROM Branch WHERE city=London

would always be true and query would be:


SELECT staffNo, fName, lName, position FROM
Staff
WHERE true;
103
Pearson Education Limited 1995, 2005

EXAMPLE
EXISTS

5.31

QUERY

USING

Juga dapat menulis query ini menggunakan


bergabung membangun:
SELECT staffNo, fName, lName, position
FROM Staff s, Branch b
WHERE s.branchNo = b.branchNo AND
city = London;

104
Pearson Education Limited 1995, 2005

UNION,
INTERSECT,
DIFFERENCE (EXCEPT)

AND

Dapat menggunakan operasi set normal Union,


Intersection,
dan
perbedaan
untuk
menggabungkan hasil dari dua atau lebih query
ke dalam tabel hasil tunggal.
Uni dua tabel, A dan B, adalah tabel yang berisi
semua baris dalam A atau B atau keduanya.
Persimpangan adalah tabel yang berisi semua
baris sama untuk kedua A dan B.
Perbedaan adalah tabel yang berisi semua baris
di A tetapi tidak di B.
Dua meja harus serikat kompatibel.

105
Pearson Education Limited 1995, 2005

UNION,
INTERSECT,
DIFFERENCE (EXCEPT)

AND

Format of set operator clause in each case is:

op [ALL] [CORRESPONDING [BY {column1 [, ...]}]]

If CORRESPONDING BY specified, set operation performed on the


named column(s).
If CORRESPONDING specified but not BY clause, operation performed
on common columns.
If ALL specified, result can include duplicate rows.
Jika sesuai melalui ditentukan, mengatur operasi dilakukan pada kolom
nama (s).
Jika Sesuai ditentukan tetapi tidak BY klausa, operasi dilakukan pada
kolom yang sama.
Jika semua ditentukan, hasilnya dapat mencakup duplikasi baris.
106
Pearson Education Limited 1995, 2005

UNION,
INTERSECT,
DIFFERENCE (EXCEPT)

AND

107
Pearson Education Limited 1995, 2005

EXAMPLE 5.32 USE OF UNION


Daftar semua kota di mana ada salah satu kantor
cabang atau properti.
(SELECT city

FROM Branch
WHERE city IS NOT NULL) UNION
(SELECT city
FROM PropertyForRent
WHERE city IS NOT NULL);

108
Pearson Education Limited 1995, 2005

EXAMPLE 5.32 USE OF UNION

Or
(SELECT *
FROM Branch
WHERE city IS NOT NULL)
UNION CORRESPONDING BY city
(SELECT *
FROM PropertyForRent
WHERE city IS NOT NULL);

109
Pearson Education Limited 1995, 2005

EXAMPLE 5.32 USE OF UNION

Menghasilkan tabel hasil dari kedua pertanyaan


dan menggabungkan kedua tabel bersama-sama

110
Pearson Education Limited 1995, 2005

EXAMPLE 5.33 USE OF INTERSECT


Menghasilkan tabel hasil dari kedua pertanyaan
dan menggabungkan kedua tabel bersama-sama
(SELECT city FROM Branch)

INTERSECT
(SELECT city FROM PropertyForRent);

111
Pearson Education Limited 1995, 2005

EXAMPLE 5.33 USE OF INTERSECT

Or
(SELECT * FROM Branch)
INTERSECT CORRESPONDING BY city
(SELECT * FROM PropertyForRent);

112

Pearson Education Limited 1995, 2005

EXAMPLE 5.33 USE OF INTERSECT

Bisa menulis
INTERSECT:

ulang

query

ini

tanpa

operator

SELECT b.city
FROM Branch b PropertyForRent p
WHERE b.city = p.city;

Or:

SELECT DISTINCT city FROM Branch b


WHERE EXISTS
(SELECT * FROM PropertyForRent p
WHERE p.city = b.city);
113
Pearson Education Limited 1995, 2005

EXAMPLE 5.34 USE OF EXCEPT


Daftar seluruh kota di mana ada kantor cabang tapi
tidak ada sifat.

(SELECT city FROM Branch)


EXCEPT
(SELECT city FROM PropertyForRent);

Or

(SELECT * FROM Branch)


EXCEPT CORRESPONDING BY city
(SELECT * FROM PropertyForRent);
114
Pearson Education Limited 1995, 2005

EXAMPLE 5.34 USE OF EXCEPT

Bisa menulis ulang query ini tanpa KECUALI

SELECT DISTINCT city FROM Branch


WHERE city NOT IN
(SELECT city FROM PropertyForRent);

Or

SELECT DISTINCT city FROM Branch b


WHERE NOT EXISTS
(SELECT * FROM PropertyForRent p
WHERE p.city = b.city);
115
Pearson Education Limited 1995, 2005

INSERT
INSERT INTO TableName [ (columnList) ]
VALUES (dataValueList)

columnList adalah opsional; jika dihilangkan,


SQL mengasumsikan daftar semua kolom di asli
CREATE TABLE pesanan mereka.
Setiap
kolom
dihilangkan
harus
telah
dinyatakan sebagai NULL ketika tabel dibuat,
kecuali DEFAULT ditentukan saat membuat
kolom.

116
Pearson Education Limited 1995, 2005

INSERT
dataValueList harus sesuai columnList sebagai
berikut:
jumlah item dalam setiap daftar harus sama;
harus korespondensi langsung dalam posisi
item dalam dua daftar;
tipe data dari setiap item dalam dataValueList
harus sesuai dengan jenis data kolom yang
sesuai.

117
Pearson Education Limited 1995, 2005

EXAMPLE 5.35 INSERT VALUES


Menyisipkan baris baru ke dalam tabel Staf
memasok data untuk semua kolom.
INSERT INTO Staff

VALUES (SG16, Alan, Brown,


Date1957-05-25, 8300, B003);

Assistant,

M,

118
Pearson Education Limited 1995, 2005

EXAMPLE 5.36
DEFAULTS

INSERT

USING

Menyisipkan baris baru ke dalam tabel memasok


Staf data untuk semua kolom wajib

INSERT INTO Staff (staffNo, fName, lName,


position, salary, branchNo)
VALUES (SG44, Anne, Jones,
Assistant, 8100, B003);
Or
INSERT INTO Staff
VALUES (SG44, Anne, Jones, Assistant, NULL,
NULL, 8100, B003);
119
Pearson Education Limited 1995, 2005

INSERT SELECT

Bentuk kedua dari INSERT memungkinkan


beberapa baris yang akan disalin dari satu
atau lebih tabel yang lain:
INSERT INTO TableName [ (columnList) ]
SELECT ...

120
Pearson Education Limited 1995, 2005

EXAMPLE 5.37 INSERT SELECT


Asumsikan ada StaffPropCount tabel yang
berisi nama-nama staf dan sejumlah properti
mereka mengelola:

StaffPropCount(staffNo,
propCnt)
Populate StaffPropCount
PropertyForRent tables.

fName,

using

lName,

Staff

and

121
Pearson Education Limited 1995, 2005

EXAMPLE 5.37 INSERT SELECT


INSERT INTO StaffPropCount
(SELECT s.staffNo, fName, lName, COUNT(*)
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.staffNo, fName, lName)
UNION
(SELECT staffNo, fName, lName, 0
FROM Staff
WHERE staffNo NOT IN
(SELECT DISTINCT staffNo
FROM PropertyForRent));
Pearson Education Limited 1995, 2005

122

EXAMPLE 5.37 INSERT SELECT

Jika bagian kedua dari UNION dihilangkan, tidak


termasuk orang-orang staf yang saat ini tidak
mengelola setiap properti.
123
Pearson Education Limited 1995, 2005

UPDATE
UPDATE TableName
SET columnName1 = dataValue1
[, columnName2 = dataValue2...]
[WHERE searchCondition]

TableName dapat nama tabel dasar atau pandangan


diupdate.
Klausa SET menentukan nama dari satu atau lebih
kolom yang akan diperbarui.

124
Pearson Education Limited 1995, 2005

UPDATE
Klausa WHERE adalah opsional:
jika dihilangkan, bernama kolom diperbarui
untuk semua baris dalam tabel;
jika ditentukan, hanya baris yang memenuhi
SearchCondition diperbarui.
New dataValue (s) harus sesuai dengan tipe
data untuk kolom yang sesuai.

125
Pearson Education Limited 1995, 2005

EXAMPLE
ROWS

5.38/39

UPDATE

ALL

Give all staff a 3% pay increase.


UPDATE Staff

SET salary = salary*1.03;

Give all Managers a 5% pay increase.


UPDATE Staff

SET salary = salary*1.05


WHERE position = Manager;

126
Pearson Education Limited 1995, 2005

EXAMPLE 5.40 UPDATE MULTIPLE


COLUMNS
Promosikan David Ford (staffNo = 'SG14')
kepada Manajer dan mengubah gajinya untuk
18.000
UPDATE Staff

SET position = Manager, salary = 18000


WHERE staffNo = SG14;

127
Pearson Education Limited 1995, 2005

DELETE
DELETE FROM TableName
[WHERE searchCondition]

TableName dapat nama tabel dasar


pandangan diupdate.
SearchCondition
adalah
opsional;
dihilangkan, semua baris akan dihapus
tabel. Ini tidak menghapus tabel.
search_condition ditentukan, hanya baris
memenuhi kondisi akan dihapus.

atau
jika
dari
Jika
yang

128
Pearson Education Limited 1995, 2005

EXAMPLE
5.41/42
SPECIFIC ROWS

DELETE

Hapus
semua
tampilan
dengan
berhubungan dengan PG4 properti.

yang

DELETE FROM Viewing

WHERE propertyNo = PG4;

Hapus semua catatan dari meja Melihat.


DELETE FROM Viewing;

129
Pearson Education Limited 1995, 2005

You might also like