Anda di halaman 1dari 9

115

Lebih SQL: Pertanyaan Complex,


Pemicu, Views, dan
Skema Modifikasi

bab menjelaskan fitur yang lebih canggih dari

Standar bahasa SQL untuk databases.We relasional


mulai di Bagian 5.1 dengan menghadirkan fitur yang lebih kompleks query pencarian
SQL,
seperti query bersarang, bergabung tabel, luar bergabung, fungsi agregat, dan
pengelompokan.
Dalam Bagian 5.2, kita menggambarkan CREATE Penegasan pernyataan, yang
memungkinkan
spesifikasi kendala umum lebih pada database. Kami juga memperkenalkan
konsep pemicu dan CREATE TRIGGER pernyataan, yang akan disajikan dalam
lebih detail dalam Bagian 26.1 ketika kami menyajikan prinsip-prinsip database aktif.
Kemudian, di Bagian 5.3, kita menggambarkan fasilitas SQL untuk mendefinisikan
pandangan tentang database.
Tampilan juga disebut tabel virtual atau berasal karena mereka menyajikan pengguna
dengan
apa yang tampak sebagai meja; Namun, informasi dalam tabel tersebut berasal dari
sebelumnya didefinisikan tabel. Bagian 5.4 memperkenalkan pernyataan TABLE SQL
ALTER,

yang digunakan untuk memodifikasi tabel database dan kendala. Bagian 5.5 adalah
Ringkasan bab.
Bab ini merupakan kelanjutan dari Bab 4. instruktur dapat melewati bagian ini
Bab jika pengenalan kurang rinci untuk SQL dimaksudkan.

5.1 Lebih Kompleks SQL Retrieval Query

Pada Bagian 4.3, kita menggambarkan beberapa jenis dasar query pencarian di SQL.
Karena
keumuman dan kekuatan ekspresif bahasa, ada banyak fitur tambahan
yang memungkinkan pengguna untuk menentukan retrievals lebih kompleks dari
database.We membahas
beberapa fitur tersebut di bagian ini.

5
bab

5.2 Menentukan Kendala sebagai Pernyataan dan Actions sebagai Pemicu 131

5.2 Menentukan Kendala sebagai Penegasan


dan Tindakan sebagai Pemicu
Pada bagian ini, kami memperkenalkan dua fitur tambahan SQL: CREATE Penegasan
Pernyataan dan CREATE TRIGGER pernyataan. Bagian 5.2.1 membahas
MENCIPTAKAN Penegasan, yang dapat digunakan untuk menentukan jenis tambahan

kendala
yang berada di luar lingkup built-in kendala model relasional (primer dan
kunci unik, integritas entitas, dan integritas referensial) yang kita disajikan dalam Bagian
3.2. Ini built-in kendala dapat ditentukan dalam pernyataan CREATE TABLE
SQL (lihat Bagian 4.1 dan 4.2).
Kemudian dalam Pasal 5.2.2 kami memperkenalkan CREATE TRIGGER, yang dapat
digunakan untuk menentukan
tindakan otomatis yang sistem database akan tampil ketika peristiwa tertentu dan
kondisi terjadi. Jenis fungsi umumnya disebut database aktif.
Kami hanya memperkenalkan dasar-dasar pemicu dalam bab ini, dan menyajikan lebih
diskusi lengkap database aktif dalam Bagian 26.1.

5.2.1 Kendala Menentukan Umum sebagai Penegasan di SQL


Dalam SQL, pengguna dapat menentukan batasan-orang umum yang tidak termasuk
dalam salah satu
kategori yang dijelaskan dalam Bagian 4.1 dan 4.2-melalui pernyataan deklaratif,
menggunakan
Pernyataan CREATE Penegasan dari DDL tersebut. Setiap pernyataan diberikan kendala
nama dan ditetapkan melalui kondisi yang mirip dengan klausa WHERE dari query SQL.
Misalnya, untuk menentukan kendala bahwa gaji seorang karyawan tidak harus
lebih besar dari gaji manajer departemen yang karyawan bekerja untuk di
SQL, kita dapat menulis pernyataan berikut:
MENCIPTAKAN Penegasan SALARY_CONSTRAINT

TARIF (TIDAK ada (SELECT *


DARI KARYAWAN E, KARYAWAN M,
DEPARTEMEN D
MANA E.Salary> M.Salary
DAN E.Dno = D.Dnumber
DAN D.Mgr_ssn = M.Ssn));

Nama kendala SALARY_CONSTRAINT diikuti oleh kata kunci TARIF,


yang diikuti dengan kondisi kurung yang harus terus benar pada setiap basis data
negara untuk pernyataan yang akan puas. Nama kendala dapat digunakan kemudian
untuk
mengacu kendala atau untuk memodifikasi atau menjatuhkannya. DBMS bertanggung
jawab untuk memastikan
bahwa kondisi ini tidak violated.Any WHERE kondisi klausa dapat digunakan, tetapi
banyak kendala dapat ditentukan dengan menggunakan EXISTS dan NOT EXISTS gaya SQL
kondisi. Setiap kali beberapa tupel dalam database menyebabkan kondisi sebuah
Pernyataan Penegasan untuk mengevaluasi ke FALSE, kendala yang dilanggar. Kendala
puas dengan keadaan database jika tidak ada kombinasi tuple dalam database yang
negara melanggar kendala.
Teknik dasar untuk menulis pernyataan tersebut adalah untuk menentukan query yang
memilih setiap
tupel yang melanggar kondisi yang diinginkan. Dengan termasuk query ini di dalam
TIDAK ada

5.3 Views (Tabel Virtual) di SQL


Pada bagian ini kami memperkenalkan konsep pandangan di SQL.We menunjukkan
bagaimana pandangan
ditentukan, dan kemudian kita membahas masalah memperbarui pandangan dan bagaimana
pandangan bisa
dilaksanakan oleh DBMS.
5.3.1 Konsep dari View di SQL
Pandangan di SQL terminologi adalah satu tabel yang berasal dari tables.6 lainnya ini
tabel lain dapat tabel dasar atau pandangan yang ditetapkan sebelumnya. Pandangan tidak
tentu
ada dalam bentuk fisik; itu dianggap sebuah meja virtual, berbeda dengan tabel dasar,
yang tupel selalu secara fisik disimpan dalam database. Hal ini membatasi kemungkinan
operasi update yang dapat diterapkan untuk dilihat, tetapi tidak memberikan batasan
pada query tampilan.
Kami bisa memikirkan pandangan sebagai cara menentukan tabel yang kita perlu referensi
sering,
meskipun mungkin tidak ada secara fisik. Misalnya, mengacu pada
Database PERUSAHAAN di Gambar 3.5 kita mungkin sering mengeluarkan permintaan
yang mengambil
nama pegawai dan nama-nama proyek yang karyawan bekerja pada. Daripada
harus menentukan bergabung dari tiga tabel EMPLOYEE, WORKS_ON, dan PROYEK
setiap kali kita mengeluarkan query ini, kita dapat mendefinisikan tampilan yang ditetapkan
sebagai hasil dari
ini bergabung. Kemudian kita bisa mengeluarkan permintaan pada tampilan, yang ditetapkan
sebagai singletable
retrievals bukan sebagai retrievals melibatkan dua bergabung pada tiga panggilan tables.We
EMPLOYEE, WORKS_ON, dan tabel PROJECT tabel mendefinisikan tampilan.
5.3.2 Spesifikasi Views di SQL

Dalam SQL, perintah untuk menentukan pandangan adalah CREATE VIEW. Pandangan
diberi (virtual)
nama tabel (atau melihat nama), daftar nama atribut, dan query untuk menentukan
Isi dari pandangan. Jika tidak ada pandangan atribut hasil dari fungsi menerapkan
atau operasi aritmatika, kita tidak harus menentukan nama atribut baru untuk
melihat, karena mereka akan menjadi sama dengan nama-nama atribut mendefinisikan yang
tabel dalam kasus default. Pandangan di V1 dan V2 membuat tabel maya yang skema
diilustrasikan pada Gambar 5.2 ketika diterapkan pada skema database dari Gambar 3.5.
V1: CREATE VIEW WORKS_ON1
AS SELECT Fname, lname, pname, Jam
DARI KARYAWAN, PROYEK, WORKS_ON
MANA SSN = Essn DAN PNO = Pnumber;
V2: CREATE VIEW DEPT_INFO (dept_name, No_of_emps, Total_sal)
AS SELECT dname, COUNT (*), SUM (Gaji)
DARI DEPARTEMEN, KARYAWAN
MANA Dnumber = DNO
GROUP BY dname;
Dalam V1, kita tidak menentukan nama-nama atribut baru untuk tampilan WORKS_ON1
(Meskipun kita bisa memiliki); dalam hal ini, WORKS_ON1 mewarisi nama tampilan
atribut dari mendefinisikan tabel EMPLOYEE, PROYEK, dan WORKS_ON.View V2
5.3.3 View Implementasi, View Update,
dan Inline Views
Masalah efisien menerapkan pandangan untuk query yang kompleks. Dua utama
pendekatan telah diusulkan. Salah satu strategi, yang disebut modifikasi query,
melibatkan
memodifikasi atau mengubah query view (yang diajukan oleh pengguna) ke query pada

tabel dasar yang mendasari. Misalnya, permintaan QV1 akan secara otomatis
dimodifikasi untuk query berikut dengan DBMS:
SELECT Fname, lname
DARI KARYAWAN, PROYEK, WORKS_ON
MANA SSN = Essn DAN PNO = Pnumber
DAN pname = 'ProductX';

Kerugian dari pendekatan ini adalah bahwa hal itu tidak efisien untuk dilihat didefinisikan
melalui kompleks
query yang memakan waktu untuk mengeksekusi, terutama jika beberapa pertanyaan
yang
akan diterapkan pada pandangan yang sama dalam waktu singkat. Kedua
Strategi, yang disebut pandangan materialisasi, melibatkan fisik menciptakan
pandangan sementara
meja ketika pandangan pertama bertanya dan menjaga meja yang pada asumsi bahwa

5.4 Skema Ganti Laporan di SQL


Pada bagian ini, kami memberikan gambaran tentang evolusi skema perintah yang tersedia di
SQL, yang dapat digunakan untuk mengubah skema dengan menambahkan atau menjatuhkan
tabel, atribut,
kendala, dan elemen skema lainnya. Hal ini dapat dilakukan sambil database
operasional dan tidak memerlukan kompilasi ulang dari skema database. Tertentu
pemeriksaan harus dilakukan oleh DBMS untuk memastikan bahwa perubahan tidak
mempengaruhi sisanya
database dan membuatnya tidak konsisten.
Bab 5 Lebih SQL: Pertanyaan Complex, Pemicu, Views, dan Skema Modifikasi
5.4.1 The DROP Perintah
Perintah DROP dapat digunakan untuk drop elemen skema bernama, seperti tabel,
domain, atau kendala. Satu juga bisa drop skema. Sebagai contoh, jika keseluruhan
skema tidak lagi diperlukan, perintah DROP skema dapat digunakan. Ada
dua pilihan perilaku penurunan: CASCADE dan MEMBATASI. Misalnya, untuk menghapus
PERUSAHAAN skema database dan semua yang tabel, domain, dan unsur-unsur lain,
Pilihan CASCADE digunakan sebagai berikut:
DROP skema PERUSAHAAN CASCADE;
Jika MEMBATASI opsi yang dipilih di tempat CASCADE, skema dijatuhkan hanya
jika tidak memiliki unsur-unsur di dalamnya; jika tidak, perintah DROP tidak akan
dieksekusi. Untuk
menggunakan MEMBATASI pilihan, pengguna harus terlebih dahulu secara individual
menjatuhkan setiap elemen dalam
skema, kemudian turun skema itu sendiri.
Jika hubungan dasar dalam skema tidak lagi diperlukan, hubungan dan definisi
dapat dihapus dengan menggunakan perintah DROP TABLE. Sebagai contoh, jika kita tidak
lagi

ingin melacak tanggungan karyawan dalam database PERUSAHAAN Gambar


4.1, kita dapat menyingkirkan hubungan TERGANTUNG dengan mengeluarkan perintah
berikut:
DROP TABLE CASCADE TERGANTUNG;
Jika MEMBATASI opsi dipilih bukan CASCADE, meja dijatuhkan hanya jika
tidak dirujuk dalam setiap kendala (misalnya, dengan definisi kunci asing di
hubungan lain), atau (lihat Bagian 5.3) atau dengan unsur-unsur lain. Dengan
Pilihan CASCADE, semua seperti kendala, pandangan, dan unsur-unsur lain yang referensi
tabel yang dijatuhkan juga turun secara otomatis dari skema, bersama dengan
tabel itu sendiri.
5.4.2 The ALTER Command
Definisi dari tabel dasar atau unsur skema lain bernama dapat diubah dengan
menggunakan perintah ALTER. Untuk tabel dasar, mungkin tindakan meja alter termasuk
menambahkan atau menjatuhkan kolom (atribut), mengubah definisi kolom, dan
menambahkan
atau menjatuhkan kendala meja. Misalnya, untuk menambahkan atribut untuk melacak
pekerjaan karyawan untuk basis relasi EMPLOYEE dalam skema PERUSAHAAN (lihat
Gambar 4.1), kita dapat menggunakan perintah
ALTER TABLE ADD COMPANY.EMPLOYEE KOLOM Pekerjaan VARCHAR (12);
Kita harus tetap memasukkan nilai untuk atribut Job baru untuk setiap individu KARYAWAN
tupel. Hal ini dapat dilakukan baik dengan menetapkan klausul standar atau dengan
menggunakan UPDATE