F1319061
1. SQL DDL dan DML
a. SQL Data Definition Language (DDL): CREATE TABLE, ALTER TABLE, DROP
TABLE, TRUNCATE TABLE;
b. SQL Data Manipulating Language (DML): INSERT, UPDATE, DELETE, MERGE
c. SQL Views: CREATE TABLE, ALTER TABLE, DROP TABLE
d. SQL / Persistent Stored Moduled (SQL / PSM): Fungsi, Pemicu (Triggers), Prosedur
Penyimpanan
2. Mengelola Struktur Tabel dengan SQL DDL
SQL CREATE TABLE digunakan untuk membuat tabel, mendefinisikan kolom dan
kendala kolom, dan membuat hubungan.
a. Menggunakan pernyataan SQL CREATE TABLE
Format dasar pernyataan SQL CREATE TABLE adalah :
CREATE TABLE (
three-part column definition,
three-part column definition,
...
optional table constraint
...
);
Bagian dari definisi kolom tiga bagian yaitu nama kolom, tipe data kolom, dan batasan
pada nilai kolom (opsional). Dengan demikian, kita dapat menyatakan kembali format
CREATE TABLE sebagai:
CREATE TABLE (
ColumnName DataType OptionalConstraint,
ColumnName DataType OptionalConstraint,
...
Optional table constraint
...
);
Batasan kolom dan tabel yaitu berupa PRIMARY KEY, FOREIGN KEY, NULL,
NOT NULL, UNIQUE, dan CHECK. Selain itu, DEFAULT keyword (DEFAULT
tidak dianggap sebagai kendala kolom) dapat digunakan untuk menetapkan nilai awal. Di
bawah ini adalah ringkasan teknik-teknik untuk menciptakan hubungan menggunakan
batasan FOREIGN KEY, NULL, NOT NULL, dan UNIQUE dalam hubungan 1: N , 1:1,
dan hubungan biasa:
Kita bisa menghapus kolom yang ada dengan menggunakan klausa SQL DROP
COLUMN dalam pernyataan SQL ALTER TABLE:
ALTER TABLE CUSTOMER
DROP COLUMN MyColumn;
Perhatikan asimetri dalam syntax; kata kunci COLUMN digunakan dalam klausa
DROP COLUMN tetapi tidak dalam klausa ADD.
Menambah dan Menghapus Batasan
Pernyataan ALTER TABLE dapat digunakan dengan klausa SQL ADD
CONSTRAINT untuk menambahkan batasan sebagai berikut:
ALTER TABLE CUSTOMER
ADD CONSTRAINT MyConstraint CHECK
(LastName NOT IN ('RobertsNoPay'));
DBMS tidak akan menghapus tabel yang merupakan induk dalam batasan FOREIGN
KEY. Sehingga, untuk menghapus tabel seperti itu, pertama-tama kita harus menghapus
batasan foreign key atau tabel anak. Kemudian kita bisa menghapus tabel induk karena
tabel induk haruslah masuk pertama dan keluar terakhir.
Perhatikan bahwa nama dan nilai kolom terlampir dalam tanda kurung dan kunci
pengganti DBMS tidak termasuk dalam pernyataan. Jika kita memberikan data untuk
semua kolom, jika data itu dalam urutan yang sama dengan kolom dalam tabel, dan
jika kita tidak memiliki kunci pengganti, maka kita dapat menghilangkan daftar
kolom. Jika kita memiliki nilai parsial, cukup mengkodekan nama kolom yang kita
miliki datanya. Kita juga harus memiliki nilai untuk semua kolom NOT NULL.
Kolom yang tidak disebutkan secara spesifik dalam pernyataan INSERT akan
memiliki nilai yang ditetapkan ke NULL.
Selanjutnya, kita tidak perlu memberikan nilai dalam urutan yang sama dengan kolom
dalam tabel. Jika karena alasan tertentu kita ingin menuliskan Nationality dahulu, kita
dapat merevisi nama kolom dan nilai data.
Bulk INSERT
Dalam format ini digunakan SQL SELECT untuk memberikan nilai. Misalkan Anda
memiliki nama, kebangsaan, tanggal lahir, dan tanggal meninggal dari sejumlah artis
di sebuah tabel bernama IMPORTED_ARTIST. Dalam hal ini, Anda dapat
menambahkan data tersebut ke tabel ARTIST dengan pernyataan berikut :
INSERT INTO ARTIST
(LastName, FirstName, Nationality, DateOfBirth, DateDeceased)
SELECT LastName, FirstName, Nationality,
DateOfBirth, DateDeceased
FROM IMPORTED_ARTIST;
Untuk mengubah nilai Kota dan State (Negara Bagian), kami akan menggunakan
pernyataan SQL berikut:
UPDATE CUSTOMER
SET City = 'New York City', State = 'NY'
WHERE CustomerID = 1000;
UPDATE PURCHASE_ORDER
SET TaxRate =
(SELECT Tax
From TAX_TABLE
WHERE TAX_TABLE.City = PURCHASE_ORDER.City)
WHERE PURCHASE_ORDER.Number = 1000;
c. Pernyataan SQL MERGE
Pernyataan SQL MERGE pada dasarnya menggabungkan pernyataan SQL INSERT dan
SQL UPDATE menjadi satu pernyataan yang dapat menyisipkan atau memperbarui data,
tergantung pada apakah beberapa kondisi terpenuhi. Misalnya, sebelum staf memasukkan
data ke dalam tabel ARTIST, mereka dengan cermat meneliti data tentang setiap artis dan
menyimpannya dalam tabel yang bernama ARTIST_DATA_RESEARCH. Data artis
baru pada awalnya disimpan di ARTIST_DATA_RESEARCH, bersama dengan koreksi
ke data artis yang sudah ada di ARTIST. Aturan bisnis perusahaan adalah bahwa nama
ARTIST tidak pernah diubah setelah dimasukkan, tetapi jika kesalahan dalam
Nationality, DateOfBirth , atau DateDeceased ditemukan, kesalahan ini dapat diperbaiki.
Dalam hal ini, data ARTIST baru dapat dimasukkan dan data ARTIST diperbarui dengan
menggunakan pernyataan SQL MERGE berikut:
a. Menggunakan SQL Views untuk Menyembunyikan Kolom dan Baris
Misalnya, kita ingin daftar pelanggan yang disederhanakan yang hanya memiliki nama
dan nomor telepon. Pernyataan SQL berikut mendefinisikan tampilan,
BasicCustomerDataView, yang akan menghasilkan daftar itu:
CREATE VIEW CustomerBasicDataView AS
SELECT LastName AS CustomerLastName,
FirstName AS CustomerFirstName,
AreaCode, PhoneNumber
FROM CUSTOMER;
Untuk menggunakan tampilan ini, kita dapat menjalankan pernyataan SQL berikut:
SELECT *
FROM CustomerBasicDataView
ORDER BY CustomerLastName, CustomerFirstName;
Hasilnya adalah:
Tampilan SQL juga dapat menyembunyikan baris dengan memberikan klausa WHERE
dalam definisi tampilan. Pernyataan SQL berikutnya mendefinisikan tampilan dari nama
pelanggan dan data telepon untuk semua pelanggan dengan alamat di Negara Bagian
Washington:
CREATE VIEW CustomerBasicDataWAView AS
SELECT LastName AS CustomerLastName,
FirstName AS CustomerFirstName,
AreaCode, PhoneNumber
FROM CUSTOMER
WHERE State='WA';
Untuk menggunakan tampilan ini, kita dapat menjalankan pernyataan SQL berikut
SELECT *
FROM CustomerBasicDataWAView
ORDER BY CustomerLastName, CustomerFirstName;
Hasilnya:
b. Menggunakan SQL Views untuk Menampilkan Hasil dari Kolom yang Dihitung
Tujuan lain dari tampilan adalah untuk menunjukkan hasil dari kolom yang dihitung
tanpa mengharuskan pengguna untuk memasukkan ekspresi dalam perhitungan.
Misalnya, tampilan berikut menggabungkan kolom AreaCode dan PhoneNumber dan
memformat hasilnya:
CREATE VIEW CustomerPhoneView AS
SELECT LastName AS CustomerLastName,
FirstName AS CustomerFirstName,
('(' + AreaCode + ') ' + PhoneNumber) AS CustomerPhone
FROM CUSTOMER;
c. Menggunakan SQL Views untuk Menyembunyikan Sintaks SQL yang Rumit
Dengan menggunakan tampilan, pengembang tidak perlu memasukkan pernyataan SQL
yang kompleks ketika mereka menginginkan hasil tertentu. Juga, tampilan seperti itu
memberi manfaat pernyataan SQL yang rumit bagi pengembang yang tidak tahu
bagaimana menulis pernyataan seperti itu. Penggunaan tampilan ini juga memastikan
konsistensi.
Misalnya, kita ingin melihat pelanggan mana yang tertarik pada artis mana, dan mereka
ingin melihat nama pelanggan dan artis. Untuk menampilkan minat ini, diperlukan dua
gabungan (join), yaitu satu untuk menggabungkan CUSTOMER ke
CUSTOMER_ARTIST_INT dan untuk menggabungkan hasilnya ke ARTIST. Kita dapat
mengkode pernyataan SQL yang membangun gabungan ini dan mendefinisikannya
sebagai tampilan SQL untuk membuat CustomerInterestsView :
CREATE VIEW CustomerInterestsView AS
SELECT C.LastName AS CustomerLastName,
C.FirstName AS CustomerFirstName,
A.LastName AS ArtistName
FROM CUSTOMER AS C JOIN CUSTOMER_ARTIST_INT AS CAI
ON C.CustomerID = CAI.CustomerID
JOIN ARTIST AS A
ON CAI.ArtistID = A.ArtistID;
SELECT *
FROM CustomerInterestsView
ORDER BY CustomerLastName, CustomerFirstName;
Tampilan SQL ini tergabung dengan TRANS, WORK, dan ARTIST dan membentuk
NetProfit kolom yang dikomputasi. Kita sekarang dapat menggunakan NetProfit dalam
klausa SQL WHERE dalam kueri sebagai berikut:
Di sini kita menggunakan hasil dari perhitungan dalam klausa WHERE, sesuatu yang
tidak diizinkan dalam pernyataan SQL tunggal ( hasil perhitungan dapat digunakan
dalam klausa WHERE, tetapi tidak dengan nama ). Hasil pernyataan SQL SELECT
adalah:
e. Menggunakan Tampilan SQL untuk Isolasi, Izin Banyak (Multiple Permissions),
dan Pemicu Banyak (Multiple Triggers)
Memisahkan tabel data sumber dari kode aplikasi. Contoh:
CREATE VIEW CustomerTableBasicDataView AS
SELECT *
FROM CUSTOMER;
Tampilan ini menetapkan alias CustomerTableBasicDataView ke tabel CUSTOMER,
dan ketika kita memformat tampilan ini, kita dapat dengan mudah memilih semua
data dalam tampilan:
SELECT *
FROM CustomerTableBasicDataView;
Hasilnya adalah data dalam tabel PELANGGAN itu sendiri (termasuk semua kolom):
Mengaktifkan definisi beberapa set pemicu pada sumber data yang sama.
Teknik ini biasanya digunakan dalam hubungan O-M dan M-M. Dalam hal ini, satu
tampilan memiliki serangkaian pemicu yang melarang penghapusan anak yang
diperlukan dan tampilan lain memiliki serangkaian pemicu yang menghapus anak
yang diperlukan beserta induknya. Tampilan akan berbeda untuk setiap aplikasi,
tergantung pada otoritasnya masing-masing.
f. Memperbarui Tampilan SQL
Beberapa tampilan dapat diperbarui sedangkan yang lain tidak bisa.
1) Tampilan yang dapat diupdate:
Tampilan berdasarkan pada satu tabel tanpa kolom yang dikomputasi dan semua
kolom yang bukan nol ada dalam tampilan.
Tampilan berdasarkan pada sejumlah tabel, dengan atau tanpa kolom yang
dikomputasi, dan pemicu INSTEAD OF yang ditentukan untuk tampilan.