teknik informatika universitas trunojoyo madura …dikenal sebagai tabel dasar, dan tabel turunan,...

25
1 TUGAS I VIEWS BASIS DATA II Disusun Oleh : Kelompok BD2-B5 Bisma alfian imanata 100411100014 Fitria Dwindah mukhtalifah 100411100081 Nur chandra sundara 100411100089 Shohib 100411100101 Dosen Pengampu : Noor Ifada TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA MARET 2012

Upload: others

Post on 27-Nov-2020

136 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

1

TUGAS I

VIEWS

BASIS DATA II

Disusun Oleh :

Kelompok BD2-B5

Bisma alfian imanata 100411100014

Fitria Dwindah mukhtalifah 100411100081

Nur chandra sundara 100411100089

Shohib 100411100101

Dosen Pengampu : Noor Ifada

TEKNIK INFORMATIKA

UNIVERSITAS TRUNOJOYO MADURA

MARET 2012

Page 2: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

2

DAFTAR ISI

Cover .............................................................................................................. 1

Daftar Isi ......................................................................................................... 2

26.1 Pendahuluan .............................................................................................. 3

26.2 Membuat Views . ...................................................................................... 3

26.3 Nama Kolom Pada Views . ........................................................................ 7

26.4 Merperbarui Views: WITH CHECK OPTION .......................................... 8

26.5 Pilihan Dari Views .................................................................................... 11

26.6 Menghapus Views .................................................................................... 12

26.7 Views and the Catalog .............................................................................. 13

26.8 Kekurangan pada Perubahan Views .......................................................... 14

26.9 Cara Kerja Statemen View ....................................................................... 16

26.10 Area Applikasi PadaViews ..................................................................... 19

26.11 Jawaban ................................................................................................. 24

Page 3: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

26.1 PENDAHULUAN

MySQL mendukung dua jenis tabel: tabel nyata, umumnya

dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel

dasar diciptakan dengan CREATE TABLE pernyataan dan adalah satu-

satunya di mana data dapat disimpan. Contohnya adalah PLAYERS dan

TEAMS tabel dari database klub tennis.

Sebuah tabel diturunkan, atau melihat, menyimpan ada baris itu

sendiri. Sebaliknya, ia berfungsi sebagai rumus atau

formula untuk menggabungkan data tertentu dari tabel dasar untuk

membuat"virtual" tabel. Itu kata virtual digunakan karena isi dari pandangan

hanya ada bila digunakan dalam pernyataan. Pada saat itu, MySQL mengambil

rumus yang membentuk view formula, mengeksekusinya, dan menyajikan

pengguna dengan apa yang lihatnyamenjadi tabel nyata.

Bab ini menjelaskan cara view diciptakan dan bagaimana view dapat

digunakan. Beberapa aplikasi yang berguna termasuk menyederhanakan laporan

rutin dan reorganisasi tabel.Dua bagian mencakup pembatasan query dan

memperbarui view.

26.2 MEMBUAT VIEW

View di buat dengan statemen CREATE VIEW.

DEFINISI

<create view statement> ::=

CREATE [ OR REPLACE ] VIEW <view name> [ <column list> ]

AS <table expression>

[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

Contoh 26.1: Buat tampilan yang memegang nama-nama kota semua dari tabel

PLAYERS dan menampilkan isi virtual pandangan baru.

CREATE VIEW TOWNS AS

SELECT DISTINCT TOWN

FROM PLAYERS

SELECT *

FROM TOWNS

Hasilnya :

Page 4: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

4

Contoh 26.2: Buatlah View yang menampilkan nomor pemain dan nomor liga

dari semua pemain yang memiliki sejumlah liga dan menampilkan isi virtual

view ini.

CREATE VIEW CPLAYERS AS

SELECT PLAYERNO, LEAGUENO

FROM PLAYERS

WHERE LEAGUENO IS NOT NULL

SELECT *

FROM CPLAYERS

Hasilnya :

Statemen CREATE VIEW membuat dua tampilan: TOWNS dan CPLAYERS.

Sebuah ekspresi tabel mendefinisikan isi view masing-masing dan membentuk

rumus view. Dua view ini dapat dilihat seperti tabel dasar, dan view

CPLAYERS bahkan diperbarui (lihat Bagian 26.8).

Contoh 26.3: Carilah pemain dan nomor liga untuk pemain yang nomor

kompetisinya antara 6 dan 44.

SELECT *

Page 5: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

5

FROM CPLAYERS

WHERE PLAYERNO BETWEEN 6 AND 44

Hasilnya :

Jika kita tidak menggunakan tampilan CPLAYERS untuk pertanyaan

yang sama tetapi diakses tabel PLAYERS langsung, kita akan membutuhkan

statemen SELECT karena lebih kompleks untuk mengambil informasi yang

sama:

SELECT PLAYERNO, LEAGUENO

FROM PLAYERS

WHERE LEAGUENO IS NOT NULL

AND PLAYERNO BETWEEN 6 AND 44

Contoh 26.4: Hapus pemain yang nomor kompetisi liganya adalah 7060.

DELETE

FROM CPLAYERS

WHERE LEAGUENO = '7060'

Bila statemen ini dieksekusi, ia menghapus baris di data tabel

(PLAYERS)

di mana kolom LEAGUENO sama dengan 7060.

Isi view tidak disimpan, tetapi bukan berasal ketika melihat ini

dirujuk. Ini berarti bahwa, menurut definisi, selalu sejalan dengan

isi dari tabel dasar. Setiap update yang dibuat untuk data dalam tabel dasar

segera

terlihat dalam sebuah view. Pengguna tidak perlu khawatir tentang integritas

isi dari view, selama integritas dari tabel dasar tetap terjaga. kita

kembali ke subjek memperbarui view dalam Bagian 26.8.

Tampilan lain dapat ditentukan dalam formula view. Dengan kata lain,

kita mungkin membutuhkan view bersarang.

Contoh 26.5: Buat tampilan yang menampilkan pemain di semua kompetisi

yang nomor pemainnya antara 6 dan 27, dan menampilkan isi virtual view ini

CREATE VIEW SEVERAL AS

Page 6: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

6

SELECT *

FROM CPLAYERS

WHERE PLAYERNO BETWEEN 6 AND 27

SELECT *

FROM SEVERAL

Hasilnya :

Dalam kebanyakan kasus, ekspresi tabel mengambil data dari tabel dasar

atau views, namun, ekspresi tabel dapat memberikan hasil tanpa mengakses

tabel (lihat Contoh 7.34). Oleh karena itu, views tidak perlu didefinisikan pada

tabel dasar. Lihat contoh ini:

Contoh 26.6: Buatlah view dimana DIGIT 0 sampai 9 yang muncul, dan

tampilkan hasilnya.

CREATE VIEW DIGITS AS

SELECT 0 DIGIT UNION SELECT 1 UNION

SELECT 2 UNION SELECT 3 UNION

SELECT 4 UNION SELECT 5 UNION

SELECT 6 UNION SELECT 7 UNION

SELECT 8 UNION SELECT 9

SELECT * FROM DIGITS

Hasilnya :

Di balik kata CREATE, kita dapat menentukan OR REPLACE. Jika nama

tampilan sudah ada, rumus view baru menimpa yang lama.

Page 7: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

7

26.3 NAMA KOLOM PADA VIEWS

Nama-nama kolom dalam tampilan biasa untuk nama kolom pada klausa

SELECT. Misalnya, dua kolom dalam tampilan SEVERAL disebut

PLAYERNO dan

LEAGUENO. Views mewarisi nama kolom. Anda dapat juga secara eksplisit

mendefinisikan nama kolom views.

Contoh 26.7: Buatlah view yang menampilkan jumlah pemain, nama, inisial,

dan

tanggal kelahiran setiap pemain yang tinggal di Stratford.

CREATE VIEW STRATFORDERS (PLAYERNO, NAME, INIT, BORN)

AS

SELECT PLAYERNO, NAME, INITIALS, BIRTH_DATE

FROM PLAYERS

WHERE TOWN = 'Stratford'

SELECT *

FROM STRATFORDERS

WHERE PLAYERNO > 90

Perhatikan nama kolom yang di hasilkan :

Nama kolom baru yang permanen. Anda tidak lagi dapat merujuk pada

kolom PLAYERNO atau BIRTH_DATE dalam tampilan STRATFORDERS.

MySQL memungkinkan ekspresi dalam klausa SELECT formula views

menjadi fungsi atau perhitungan bukan spesifikasi kolom. Nama kolom adalah

sama dengan ekspresi.

Contoh 26.8: Untuk setiap kota, Buatlah view yang menampilkan nama tempat

dan nomor pemain yang tinggal di kota itu dan kemudian tampilkan isi dari

view.

CREATE VIEW RESIDENTS AS

SELECT TOWN, COUNT(*)

FROM PLAYERS

GROUP BY TOWN

SELECT TOWN, "COUNT(*)"

FROM RESIDENTS

Page 8: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

8

Hasilnya :

Penjelasan: Pandangan ini memiliki nama kolom dua: TOWN dan COUNT (*).

Perhatikan bahwa COUNT nama (*) harus diapit oleh tanda kutip ganda.

Latihan 26.1: Buat tampilan yang disebut NUMBERPLS yang berisi semua tim

angka dan jumlah total pemain yang telah bermain untuk tim itu. (Asumsikan

bahwa setidaknya satu pemain telah berkompetisi untuk setiap tim.)

Latihan 26,2: Buat tampilan yang disebut WINNER yang berisi jumlah dan

nama setiap pemain yang, untuk setidaknya satu tim, telah memenangkan satu

pertandingan.

Latihan 26,3: Buat tampilan yang disebut TOTALS yang mencatat jumlah total

hukuman untuk setiap pemain yang telah terjadi setidaknya satu penalti.

26.4 UPDATING VIEWS: WITH CHECK OPTION

Kita telah melihat sejumlah contoh di mana tabel yang mendasarinya

sedang diupdate melalui metode view. Hati-hati dalam menggunakan metode

updating view, karena dapat menghasilkan hasil yang tak terduga. Contoh

berikut menggambarkan situasi ini.

Contoh 26,9: Buat tampilan semua pemain yang lahir lebih awal dari 1960.

CREATE VIEW VETERANS AS

SELECT *

FROM PLAYERS

WHERE BIRTH_DATE < '1960-01-01'

Hasil running :

Page 9: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

9

Sekarang kita ingin mengubah tanggal lahir veteran pemain dengan nomor 2 dari

1 September 1948 menjadi 1 September 1970. Querynya seperti dibawah ini :

UPDATE VETERANS

SET BIRTH_DATE = '1970-09-01'

WHERE PLAYERNO = 2

Hasil running :

Proses update sudah benar. Tanggal lahir pemain nomor 2 di table PLAYERS

telah berubah. Namun, akibat dari proses update ini adalah pemain nomor 2

tidak muncul lagi jika kita melihat view menggunakan perintah SELECT. Hal

ini dikarenakan pemain tidak lagi memenuhi kondisi yang ditentukan dalam

rumus view setelah update terjadi. Jika Anda memperluas definisi view

menggunakan WITH CHECK OPTION, MySQL memastikan bahwa efek yang

tidak dikehendaki tidak akan muncul. Definisi view kemudian menjadi:

CREATE VIEW VETERANS AS

SELECT *

FROM PLAYERS

WHERE BIRTH_DATE < '1960-01-01'

WITH CHECK OPTION

Hasil running :

Jika tampilan yang digunakan mencakup klausa with check options, semua

perubahan pada tampilan dengan menggunakan pernyataan UPDATE, INSERT,

dan DELETE diperiksa untuk validitas:

Page 10: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

10

Sebuah pernyataan UPDATE adalah benar jika baris yang diupdate masih

termasuk konten (virtual) dari isi tampilan(view).

Sebuah pernyataan INSERT adalah benar jika baris baru yang diupdate masih

termasuk konten (virtual) isi dari tampilan(view).

Sebuah pernyataan DELETE adalah benar jika baris yang dihapus masih

termasuk (virtual) isi dari tampilan(view).

Seperti yang disebutkan sebelumnya, view dapat diulang, atau dengan

kata lain, view bisa ditumpuk di atas view lain. Anda mungkin bertanya-tanya

sejauh mana pengecekan melalui WITH CHECK OPTION dapat dilakukan. Jika

kita melakukan cek dengan WITH CASCADED CHECK OPTION, maka semua

tampilan (view) akan tercek. Ketika WITH LOCAL CHECK

OPTIONdigunakan, LOCAL CHECK OPTION memeriksa kondisi hubungan

dalam tampilan yang sedang diperbarui merupakan satu-satunya kondisi yang

diperiksa. CASCADE merupakan pilihan default.

Example 26.10: Buat tampilan semua pemain yang lahir lebih awal dari tahun

1960 dan tinggal di kota Ingglewood.

CREATE VIEW INGLEWOOD_VETERANS AS

SELECT *

FROM VETERANS

WHERE TOWN = 'Inglewood'

WITH CASCADED CHECK OPTION

Hasil Running :

Tidak muncul, karena dalam View VETERANS tidak ada pemain yang tinggal

di Ingglewood.

Tetapi ketika kita mengubah SELECT *FROM VETERANS menjadi SELECT

* FROM PLAYERS, maka akan muncul tampilan seperti di bawah ini.

Penjelasan: Jika kita menggunakan pernyataan INSERT untuk

menambahkan pemain dalam tampilan ini, ia harus tinggal di Inglewood dan

harus telah lahir lebih awal dari 1 Januari 1960. Ketika kita tidak menggunakan

Cascade, setiap pemain yang kami tambahkan ke table

INGLEWOOD_VETERANS harus tinggal di Inglewood. MySQL tidak lagi

Page 11: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

11

melakukan cek itu. with check options hanya dapat digunakan dalam

hubungannya dengan tampilan yang dapat diperbarui sesuai dengan aturan yang

tercantum dalam Bagian 26.8.

26.5 PILIHAN DARI VIEWS

Anda dapat menentukan pilihan khusus seperti hak istimewa dan metode

pengolahan untuk setiap view.ON

<create view statement> ::=

CREATE [ OR REPLACE ]

[ DEFINER = { <user name> | CURRENT_USER } ]

[ SQL SECURITY { DEFINER | INVOKER } ]

[ ALGORITHM = { MERGE | TEMPTABLE | UNDEFINED } ]

VIEW <viewname> [ <column list> ] AS <table expression>

[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

Dengan definer option kita dapat mengindikasikan atau mengetahui creator atau

definer yang membuat tampilan itu. Apabila pilihan itu tidak ditentukan, user

yang menciptakan tampilan itu adalah definer. Kita bisa mengganti ini dengan

membuat tampilan untuk pengguna SQL lain

Example 26.11: Buat tampilan dengan user JACO sebagai definernya.

CREATE DEFINER = 'JACO'@'%' VIEW JACO_VIEW AS

SELECT *

FROM PLAYERS

WHERE PLAYERNO > 100

Menentukan istilah CURRENT_USER sebagai definer, memiliki hasil

yang sama seperti menghilangkan pilihan definer. Seorang user mungkin

memiliki hak untuk tampilan query, tetapi apa yang terjadi jika tampilan table

query untuk user yang sama tidak memiliki hak untuk melakukan SELECT?

SQL SECURITY OPTION yang menentukan hasilnya. Jika SQL SECURITY

OPTION belum ditentukan, aturannya adalah user yang membuat tampilan harus

dapat melakukan SELECT pada table query. Misalnya, jika tampilan V1 pada

table query T1, definer harus bisa melakukan perintah SELECT untuk table T1.

Untuk pengguna lainnya dari V1 tidak perlu melakukan hal yang sama dengan

definer tadi. SQL SECURITY option tidak sama dengan SQL SECURITY

DEFINER. Jika kita spesifikasikan SQL SECURITY INVOKER, tampilan dari

user harus secara eksplisit harus bisa dikenali secara mudah untuk melakukan

akses table. Oleh karena itu, setiap user query V1 harus bisa melakukan perintah

SELECT pada table T1.

Page 12: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

12

ALGORITMA option menunjukkan bagaimana view harus diproses

secara internal. Ada dua metode yang bisa dipakai untuk memproses pernyataan

view. Metode pertama disebut MERGE, salah satu statement query yaitu

SELECT, dikombinasikan dengan rumus view. Akibatnya, salah satu dari

pernyataan SELECT yang dikombinasikan, diproses. Dengan metode

TEMPTABLE, perintah SELECT pada view diproses dalam dua tahap. Selama

langkah pertama diproses, hasil sementara dari rumus view ditentukan dan di

simpan dalam table. Pada langkah ke 2, pernyataan SELECT di jalankan sampai

ditemukan hasil sementara. Apabila ALGORITMA option belum ditentukan,

atau jika sudah di atur agar tidak terdefinisi, maka MySQL akan menentukan

metode mana yang akan diterapkan.

Example 26.12: Buat tampilan proses dengan menggunakan metode MERGE

untuk akses setiap user

CREATE SQL SECURITY INVOKER

ALGORITHM = MERGE

VIEW SIMPLE_VIEW AS

SELECT PLAYERNO

FROM PLAYERS

WHERE PLAYERNO > 100

Semua option termasuk creator dan view formula, dapat di ubah dengan

menggunakan pernyataan ALTER USER.

<alter view statement> ::=

ALTER

[ DEFINER = { <user name> | CURRENT_USER } ]

[ SQL SECURITY { DEFINER | INVOKER } ]

[ ALGORITHM = { MERGE | TEMPTABLE | UNDEFINED } ]

VIEW <view name> [ <column list> ] AS <table expression>

[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

26.6 MENGHAPUS VIEWS

DROP VIEW digunakan untuk menghapus tampilan. Dengan

menggunakan statement ini, setiap referensi tampilan yang dihapus, maka

tampilan yang lainnya akan secara otomatis terhapus. Ketika base table di drop,

maka semua tampilan yang sudah ditetapkan maupun yang belum ditetapkan,

juga akan ter drop juga.

Page 13: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

13

<drop view statement> ::=

DROP VIEW [ IF EXISTS ] <table specification>

[ , <table specification> ]...

[ RESTRICT | CASCADE ]

Example 26.13: hilangkan tampilan CPLAYERS

Ketika ada spesifikasi tabel yang ditentukan, maka tidak ada pesan error yang

muncul. RESTRICT dan CASCADE pada script di atas tidak memiliki efek

apapun jika tidak ada spesifikasi table yang ditentukan.

26.7 VIEWS DAN CATALOG

Informasi tentang views tercatat di berbagai tabel. Pada tabel VIEWS,

sebuah baris menyimpan masing-masing view. Kolom VIEW_ID merupakan

primary key dari tabel katalog ini. Kolom VIEW_NAME dan CREATOR

merupakan sebuah alternate key.

Nama Kolom Tipe Data Deskripsi

VIEW_CREATOR CHAR Nama dari database

yang termasuk view

VIEW_NAME CHAR Nama dari view

CREATE_TIMESTAMP TIMESTAMP Tanggal saat view

dibuat; tapi, kolom

ini tidak terdapat

pada MYSQL

WITHCHECKPOT CHAR Bernilai YES jika

view didefinisikan

dengan WITH

CHECK,

CASCADED, atau

LOCAL OPTION;

sebaliknya, nilainya

adalah NO

IS_UPDATABLE CHAR Bernilai YES jika

view bisa diperbarui;

sebaliknya, nilainya

adalah NO

Page 14: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

14

COMMENT CHAR Komentar

dimasukkan dengan

menggunakan

statement

COMMENT

VIEWFORMULA CHAR Menampilkan

formula (table

lambang)

Kolom-kolom view mewarisi tipe data dari kolom lambang mulai dari kalimat

SELECT sampai view formula.

Contoh 26.14 : Dapatkah sebuah table memanggil STOCK yang telah dibuat di

DATABASE TENNIS, atau apakah namanya sudah ada ?

SELECT TABLE_NAME

FROM TABLES

WHERE TABLE_NAME = 'STOCK'

AND TABLE_CREATOR = 'TENNIS'

UNION

SELECT VIEW_NAME

FROM VIEWS

WHERE VIEW_NAME = 'STOCK'

AND VIEW_CREATOR = 'TENNIS'

Keterangan : Statement SELECT mengecek apakah table atau view telah dibuat

dengan nama STOCK pada DATABASE TENNIS. Jika statement tersebut

memiliki hasil, nama table ini tidak dapat digunakan lagi.

Tabel VIEWS pada INFORMATION_SCHEMA catalog berisi data di views.

26.8 KEKURANGAN PADA PERUBAHAN VIEWS

Statement INSERT, UPDATE, dan DELETE mungkin dapat di eksekusi

pada views. Bagaimanapun, MYSQL memiliki beberapa kekurangan.

Contohnya, baris-baris pada beberapa views tidak boleh di delete atau di update.

Bagian ini menutupi kekurangan yang digunakan untuk merubah views.

Sebuah view dapat dirubah hanya jika satu per satu sarat ada diantara baris-baris

view dan baris-baris pokok table. Tambahan, rumus view akan memenuhi

kondisi-kondisinya. Tujuh kondisi pertama digunakan pada semua statements

update.

Page 15: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

15

1. SELECT tidak dapat berisi DISTINCT

2. SELECT tidak dapat berisi kumpulan fungsi

3. FROM tidak dapat berisi lebih dari satu table

4. WHERE tidak dapat menyambungkan subquery

5. Statement SELECT tidak dapat berisi klausa GROUP BY (atau klausa

HAVING)

6. Statement SELECT tidak dapat berisi klausa ORDER BY

7. Statement SELECT tidak dapat menggunakan operator

Pada penambahan, kekurangan selanjutnya ada pada UPDATE

8. Kolom yang sebenarnya tidak dapat di UPDATE

Kolom BEGIN_AGE pada view berikutnya tidak dapat di update

(meskipun PLAYERNO dapat di update) :

CREATE VIEW AGES (PLAYERNO, BEGIN_AGE) AS

SELECT PLAYERNO, JOINED – YEAR(BIRTH_DATE)

FROM PLAYERS

Penambahan, kekurangan selanjutnya ada pada INSERT :

9. SELECT harus ada isinya, dari table yang menentukan FROM, semua

kolom yang nilainya null tidak mengijinkan atau untuk yang nilainya no

default akan ditetapkan.

Ini adalah kenapa INSERT tidak dapat menentang view yang selanjutnya-ini

tidak berisi semua kolom NOT NULL, seperti SEX dan TOWN :

CREATE VIEW PLAYERS_NAMES AS

SELECT PLAYERNO, NAME, INITIALS

FROM PLAYERS

Latihan 26.4 : Bab ini telah banyak menampilkan contoh-contoh view. Untuk

tiap view yang selanjutnya, menandai apakah UPDATE, INSERT, atau

DELETE akan dapat dilakukan oleh :

1. TOWNS

2. CPLAYERS

3. SEVERAL

4. DIGITS

5. STRATFORDERS

6. RESIDENTS

7. VETERANS

8. TOTALS

9. AGES

Page 16: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

16

26.9 CARA KERJA STATEMENT VIEW

Tahap berjalannya (lihat Chapter 6, “statement SELECT, Tabel Expresi,

dan subqueries”) tidak dapat di eksekusi satu per satu, seperti yang terjadi pada

table dasar. MYSQL mencapai klausa FROM dan mencoba untuk mengambil

baris dari database; hal ini menjumpai masalah karena view berisi baris yang

tidak tersimpan. MYSQL tahu bahwa ini bekerja pada view. Untuk memproses

step ini, MYSQL dapat memilih diantara dua method dinamakan substitution

dan materialization.

Dengan method pertama, rumus view digabungkan ke statement

SELECT. Method ini dinsmsksn pengganti karena nama view pada statement

SELECT diganti dengan rumus view. Selanjutnya, statement SELECT mencapai

proses. Contoh selanjutnya mengilustrasikan method ini.

Contoh 26.15 : buatlah view dari semua data pemain yang terkena penalty.

Selanjutnya, tampilkan nomor tiap pemain dari COST_RAISERS view yang

telah mendapatkan sedikitnya satu penalty dan tinggal di Stratford.

CREATE VIEW COST_RAISERS AS

SELECT *

FROM PLAYERS

WHERE PLAYERNO IN

(SELECT PLAYERNO

FROM PENALTIES)

SELECT PLAYERNO

FROM COST_RAISERS

WHERE TOWN = 'Stratford'

Proses step pertama berisi gabungan dari formula view ke statement SELECT

dan membuat statement selanjutnya:

SELECT PLAYERNO

FROM (SELECT *

FROM PLAYERS

WHERE PLAYERNO IN

(SELECT PLAYERNO

FROM PENALTIES)) AS VIEWFORMULA

WHERE TOWN = 'Stratford'

Sekarang statement ini dapat diproses dengan berpindah terus ke step yang tetap.

Akhirnya hasilnya adalah:

PLAYERNO

--------

Page 17: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

17

6

Lihat contoh selanjutnya yang menggunakan STRATFORDERS view dari

bagian 26.3.

Contoh 26.16 : hapus semua orang Stratford yang lahir diatas 1965.

DELETE

FROM STRATFORDERS

WHERE BORN > '1965-12-31'

Setelah namanya telah diganti dengan formula view, statement dibaca:

DELETE

FROM PLAYERS

WHERE BIRTH_DATE > '1965-12-31'

AND TOWN = 'Stratford'

Method yang lainnya yang diproses berarti telah berhasil. Pada method ini, table

expresi dari rumus view diproses pertama, yang memberikan sebuah hasil

perantara. Selanjutnya, statement SELECT yang sebenarnya di eksekusi pada

hasil perantara. Jika kita akan memproses Contoh 26.15 yang telah selesai,

statement selanjutnya akan di eksekusi pertama.

SELECT *

FROM PLAYERS

WHERE PLAYERNO IN

(SELECT PLAYERNO

FROM PENALTIES)

Ini menghasilkan hasil perantara (untuk lebih sederhananya, hanya kolom

PLAYERNO dan TOWN yang telah ditampilkan):

PLAYERNO TOWN

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

6 Stratford

8 Inglewood

27 Eltham

Page 18: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

18

44 Inglewood

104 Eltham

MYSQL menyimpan hasil perantara ini di memori internal. Setelah itu,

statement selanjutnya di eksekusi :

SELECT PLAYERNO

FROM <intermediate result>

WHERE TOWN = 'Stratford'

Kedua method tersebut memiliki kelebihan dan kekurangan. MYSQL sendiri

menentukan method yang mana yang harus digunakan pada setiap situasi;

bagaimanapun, pengguna dapat memilih pemrosesan method dengan

menentukannya pada dafinisi view.

Contoh 26.17: buatlah view dari semua data pemain yang mendapatkan penalty

dan pastikan bahwa MYSQL menggunakan method yang sudah selesai selama

proses.

CREATE VIEW EXPENSIVE_PLAYERS AS

ALORITHM = TEMPTABLE

SELECT *

FROM PLAYERS

WHERE PLAYERNO IN

(SELECT PLAYERNO

FROM PENALTIES)

Penjelasan : dengan kata TEMPTABLE, kita mengindikasikan bahwa table

sementara harus dibuat dalam proses statement SELECT pada views ini-

penyelesaiannya harus dikerjakan. Jika MERGE dikatakan sebagai algoritma,

pengganti method lah yang digunakan. Dengan UNDEFINED, MYSQL

membuat keputusannya sendiri.

Latihan 26.5 : bagaimana statement berikut muncul setelah rumus view

dimasukkan pada pengganti method?

1. SELECT YEAR(BORN) – 1900 AS DIFFERENCE, COUNT(*)

FROM STRATFORDERS

GROUP BY DIFFERENCE

2. SELECT COST_RAISERS.PLAYERNO

FROM COST_RAISERS, STRATFORDERS

Page 19: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

19

WHERE COST_RAISERS.PLAYERNO = STRATFORDERS.PLAYERNO

3. UPDATE STRATFORDERS

SET BORN = '1950-04-04'

WHERE PLAYERNO = 7

26.10 AREA APPLIKASI PADA VIEW

VIEW dapat digunakan dalam berbagai aplikasi. Ada beberapa bagian

dari VIEW ini. Tidak ada signifikansi dengan urutan yang dibahas.

26.10.1 PENYEDERHANAAN DARI PERNYATAAN YANG BIASA

DIGUNAKAN PERNYATAAN YANG SERING DIGUNAKAN ATAU

SECARA STRUKTURAL MIRIP DAPAT DISEDERHANAKAN

MELALUI PENGGUNAAN VIEW.

Contoh 26.18: Lihatlah dari dua pernyataan ini yan dimasukkan.

SELECT *

FROM PLAYERS

WHERE PLAYERNO IN

(SELECT PLAYERNO

FROM PENALTIES)

AND TOWN = 'Stratford'

dan

SELECT TOWN, COUNT(*)

FROM PLAYERS

WHERE PLAYERNO IN

(SELECT PLAYERNO

FROM PENALTIES)

GROUP BY TOWN

Kedua pernyataan diatas berhubungan dengan pemain yang telah dikeluarkan

setidaknya satu

penalti, maka bagian dari pemain dapat didefinisikan oleh view:

CREATE VIEW PPLAYERS AS

SELECT *

FROM PLAYERS

WHERE PLAYERNO IN

(SELECT PLAYERNO

FROM PENALTIES)

Sekarang dua pernyataan SELECT sebelumnya dapat disederhanakan dengan

menggunakan PPLAYERS view:

Page 20: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

20

SELECT *

FROM PPLAYERS

WHERE TOWN = 'Stratford'

and

SELECT TOWN, COUNT(*)

FROM PPLAYERS

GROUP BY TOWN

Contoh 26.19: perhatikan tabel PLAYERS sering bergabung dengan tabel

MATCHES.

SELECT ...

FROM PLAYERS, MATCHES

WHERE PPLAYERS.PLAYERNO = MATCHES.PLAYERNO

AND ...

Dalam hal ini, pernyataan SELECT menjadi lebih sederhana jika bergabung dan

didefinisikan sebagai view:

CREATE VIEW PLAY_MAT AS

SELECT ...

FROM PLAYERS, MATCHES

WHERE PLAYERS.PLAYERNO = MATCHES.PLAYERNO

Setelah menggabungkan, sekarang kita dapat mengambil bentuk yang

sederhana:

SELECT ...

FROM PLAY_MAT

WHERE ...

26.10.2 REORGANISASI STRUKTUR TABEL

Tabel dirancang dan digunakan berdasarkankan keadaan tertentu.

Keadaan/kondisi sewaktu-waktu dapat berubah, yang berarti bahwa struktur juga

berubah. Misalnya, kolom baru akan ditambahkan ke sebuah tabel, atau dua

tabel dapat bergabung menjadi tabel tunggal. Dalam beberapa kasus,

reorganisasi struktur tabel membutuhkan alter/ mengubah pernyataan yang

sudah dikembangkan dan operasional. Perubahan tersebut memerlukan banyak

waktu dan biaya. Dengan penanganan yang tepat maka akan meminimalisir

waktu dan biaya yang kita gunakan.

Agar lebih jelas maka perhatikan contoh.

Contoh 26.20: Untuk setiap pemain kompetisi, carilah nama, inisial, dan divisi

di mana ia pernah dimainkan.

Page 21: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

21

SELECT DISTINCT NAME, INITIALS, DIVISION

FROM PLAYERS AS P, MATCHES AS M, TEAMS AS T

WHERE P.PLAYERNO = M.PLAYERNO

AND M.TEAMNO = T.TEAMNO

Hasilnya adalah:

NAME INITIALS DIVISION

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

Parmenter R first

Baker E first

Hope PK first

Everett R first

Collins DD second

Moorman D second

Brown M first

Bailey IP second

Newcastle B first

Newcastle B second

Untuk alasan yang tidak diketahui, tabel TEAMS dan tabel MATCHES perlu

ditata kembali;

kedua tabel tersebut digabungkan untuk membentuk satu tabel, tabel RESULT,

seperti berikut:

Kolom CAPTAIN dalam tabel RESULT sebelumnya adalah kolom

PLAYERNO dari tabel TEAMS. Kolom ini telah diberi nama lain, jika tidak,

maka akan ada dua kolom yang bernama PLAYERNO. Semua pernyataan yang

mengacu pada dua tabel, termasuk pernyataan SELECT sebelumnya, sekarang

Page 22: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

22

perlu ditulis ulang. Agar tidak kesulitan dan untuk menulis ulang, solusi yang

lebih baik adalah mendefinisikan dua pandangan yang mewakili tabel TEAMS

dan tabel MATCHES, masing-masing:

CREATE VIEW TEAMS (TEAMNO, PLAYERNO, DIVISION) AS

SELECT DISTINCT TEAMNO, CAPTAIN, DIVISION

FROM RESULT

CREATE VIEW MATCHES AS

SELECT MATCHNO, TEAMNO, PLAYERNO,

WON, LOST

FROM RESULT

Isi yang sebenarnya dari 2 view sama dengan isi 2 table yang asli. Tidak ada

yang perlu ditulis ulang, termasuk kata kunci SELECT.

Kita tidak dapat mengelola setiap reorganisasi tabel dengan view. Karena itu

sangat berpengaruh, misalnya, untuk menyimpan data tentang pemain pria dan

wanita pada tabel yang terpisah. Kedua tabel berisi kolom yang sama sebagai

tabel PLAYERS tetapi menghilangkan

kolom SEX. Hal ini dimungkinkan untuk merekonstruksi tabel PLAYERS asli

dengan melihat menggunakan operator UNION, akan tetapi memasukkan view

tidak diperbolehkan

26.10.3 TAHAP-TAHAP PENGEMBANGAN PERNYATAAN SELECT

kita perlu menjawab pertanyaan berikut: Untuk setiap pemain dari

Stratford yang telah mendapatkan pinalti yang lebih besar daripada pinalti rata-

rata pemain dari tim kedua dan yang bermain minimal satu tim divisi pertama,

carilah nama dan inisial. Kita bisa menulis sebuah pernyataan SELECT yang

besar untuk menjawab ini, tetapi kita juga bisa mengembangkan sebuah query

dengan cara bertahap. Pertama, kita membuat tampilan semua pemain yang telah

mendapatkan setidaknya satu penalti yang lebih besar daripada pinalti rata-rata

untuk pemain dari kedua tim:

CREATE VIEW GREATER AS

SELECT DISTINCT PLAYERNO

FROM PENALTIES

WHERE AMOUNT >

(SELECT AVG(AMOUNT)

FROM PENALTIES

WHERE PLAYERNO IN

(SELECT PLAYERNO

Page 23: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

23

FROM MATCHES

WHERE TEAMNO = 2))

Kemudian kita membuat tampilan dari semua pemain yang bertanding untuk tim

dalam divisi pertama:

CREATE VIEW FIRST AS

SELECT DISTINCT PLAYERNO

FROM MATCHES

WHERE TEAMNO IN

(SELECT TEAMNO

FROM TEAMS

WHERE DIVISION = 'first')

Dengan menggunakan dua view/ tampilan, maka kita bisa menjawab pertanyaan

awal:

SELECT NAME, INITIALS

FROM PLAYERS

WHERE TOWN = 'Stratford

AND PLAYERNO IN

(SELECT PLAYERNO

FROM GREATER)

AND PLAYERNO IN

(SELECT PLAYERNO

FROM FIRST)

Kita dapat membagi masalah ke "mini-problem/ masalah-masalah kecil" dan

menjalankannya menggunakan langkah-langkah, membuat satu pernyataan

SELECT panjang.

26.10.4 KENDALA DALAM MENENTUKAN INTEGRITAS

Gunakan klausa WITH CHECK OPTION untuk menerapkan aturan yang

membatasi kemungkinan nilai-nilai yang dapat dimasukkan ke dalam kolom.

Contoh 26.21: Kolom SEX pada tabel PLAYERS berisi nilai 'M' atau 'F' .

Dengan menggunakan klausa WITH CHECK OPTION maka akan otomatis

menjalankan ini. Lihat definisi dibawah:

CREATE VIEW PLAYERSS AS

SELECT *

FROM PLAYERS

WHERE SEX IN ('M', 'F')

Page 24: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

24

WITH CHECK OPTION

Kami tidak mengizinkan orang lain mengakses tabel PLAYERS langsung,

sebaliknya, orang lain perlu menggunakan tampilan PLAYERSS. dengan klausa

WITH CHECK OPTION

tes setiap kali menggunakan pernyataan UPDATE dan INSERT untuk

menentukan apakah nilai yang ada di kolom SEX dapat di diizinkan untuk

diakses.

Catatan: Jika cek yang diinginkan dapat didefinisikan dengan batasan integritas

cek, menggunakan aplikasi ini adalah saran yang dianjurkan.

26.10.5 KEAMANAN DATA

Tampilan juga dapat digunakan untuk melindungi bagian tabel. Pada

pembahasan selanjutnya Bab 28, "Pengguna dan Data Keamanan, "mencakup

topik ini secara rinci.

Latihan 26.6: Tentukan apakah reorganisasi dari struktur database berikut yang

mungkin menggunakan view.

1. Kolom NAME ditambahkan ke tabel PENALTIES tetapi juga tetap dalam

tabel PLAYERS.

2. Kolom TOWN akan dihapus dari tabel PLAYERS dan ditempatkan pada

tempat yang sama

dengan kolom PLAYERNO dalam tabel terpisah.

26.11 JAWABAN

26.1 CREATE VIEW NUMBERPLS (TEAMNO, NUMBER) AS

SELECT TEAMNO, COUNT(*)

FROM MATCHES

GROUP BY TEAMNO

26.2 CREATE VIEW WINNERS AS

SELECT PLAYERNO, NAME

FROM PLAYERS

WHERE PLAYERNO IN

(SELECT PLAYERNO

FROM MATCHES

WHERE WON > LOST)

26.3 CREATE VIEW TOTALS (PLAYERNO, SUM_PENALTIES) AS

SELECT PLAYERNO, SUM(AMOUNT)

Page 25: TEKNIK INFORMATIKA UNIVERSITAS TRUNOJOYO MADURA …dikenal sebagai tabel dasar, dan tabel turunan, juga disebut views. Tabel dasar diciptakan dengan CREATE TABLE pernyataan dan adalah

25

FROM PENALTIES

GROUP BY PLAYERNO

26.5 1. SELECT YEAR(BORN) – 1900 AS DIFFERENCE, COUNT(*)

FROM (SELECT PLAYERNO, NAME,

NITIALS, BIRTH_DATE AS BORN

FROM PLAYERS

WHERE TOWN = 'Stratford') AS STRATFORDERS

GROUP BY DIFFERENCE

2. SELECT EXPENSIVE.PLAYERNO

FROM (SELECT *

FROM PLAYERS

WHERE PLAYERNO IN

(SELECT PLAYERNO

FROM PENALTIES)) AS EXPENSIVE,

(SELECT PLAYERNO, NAME,

INITIALS, BIRTH_DATE AS BORN

FROM PLAYERS

WHERE TOWN = 'Stratford') AS

STRATFORDERS

WHERE EXPENSIVE.PLAYERNO =

STRATFORDERS.PLAYERNO

3. UPDATE PLAYERS

SET BIRTH_DATE = '1950-04-04'

WHERE PLAYERNO = 7

26.6 1. ya

2. Ya, tapi melihat dapat di-query hanya, tidak diperbarui, karena

pandangan rumus berisi bergabung.