DAFTAR ISI
Latihan 1.1
Pada latihan ini anda akan belajar membuat dan memanipulasi database
Ikuti langkah-langkah berikut:
1. Dari “SQL Server Enterprise Manager” jalankan “Query
AnalyzerTools”
2. Buat database baru dengan perintah berikut
Latihan 1.2
Pada latihan ini anda akan belajar membuat (CREATE) dan menghapus
(DROP) table serta menggunakan contraint PRIMARY KEY dan NOT
NULL.
Ikuti langkah-langkah berikut:
1. Jalankan script sebagai berikut
1 CREATE DATABASE dbPrak01
2
3 CREATE TABLE kota (
4 kode char(5) PRIMARY KEY,
5 nama char(30)
6 )
Latihan 1.3
Pada latihan ini anda akan belajar momodifikasi (ALTER) dan
menggunakan contraint UNIQUE, CHECK dan DEFAULT.
Ikuti langkah-langkah berikut:
1. Drop table kota kemudian buat table propinsi dengan DDL berikut
1 CREATE TABLE propinsi (
2 kode_prop char(10) PRIMARY KEY,
3 nama_prop char(30) NOT NULL,
4 CONSTRAINT uq_nama_prop UNIQUE (nama_prop),
5 CONSTRAINT ck_nama_prop CHECK (nama_prop<>''),
6 )
(4 row(s) affected)
Latihan 2.1
Pada latihan ini anda akan belajar membuat primary key yang dibentuk
dari 2 field dan mengatur relationship antar table.
Ikuti langkah-langkah berikut:
1. Gunakan kembali hasil Latihan 1.3 atau jalankan kembali DDL
sebagai berikut
1 CREATE TABLE propinsi (
2 kode_prop char(10) PRIMARY KEY,
3 nama_prop char(30) NOT NULL,
4 jumlah_penduduk INT DEFAULT 0,
5
6 CONSTRAINT uq_nama_prop UNIQUE (nama_prop),
7 CONSTRAINT ck_nama_prop CHECK (nama_prop<>''),
8 CONSTRAINT ck_jumlah_penduduk
9 CHECK (jumlah_penduduk>=0)
10 )
11
12 CREATE TABLE kota (
13 kode_kota char(5),
14 kode_prop char(10) FOREIGN KEY
15 REFERENCES propinsi (kode_prop),
16 nama_kota char(30) NOT NULL,
17 PRIMARY KEY (kode_kota, kode_prop)
18 )
TUGAS
3.1. View
View merupakan virtual table yang dibangun dari satu atau beberapa
table. View tidak membuat penyimpanan secara fisik seperti table,
namun hanya menyimpan referensi/pointer ke record pada table-table
yang berkaitan.
Struktur umum sebuah view adalah
CREATE VIEW namaView (kolom1, kolom2, …) AS
SELECT kolom_a, kolom_b, …
FROM namaTable
WHERE predikat
Melalui view dapat dilakukan INSERT, UPDATE dan DELETE
dengan beberapa batasan.
Latihan 3.1
Pada latihan ini anda akan belajar membuat view yang dibentuk dari satu
table serta cara menambahkan record ke table melalui view.
Ikuti langkah-langkah berikut:
1. Gunakan kembali hasil Latihan 2.2. Isi data sebagai berikut
propinsi
kode_prop nama_prop jumlah_penduduk
---------- ------------------------- ---------------
jabar jawa barat 0
jak dki jakarta 0
kota
kode_kota kode_prop nama_kota
--------- ---------- ------------------------------
ban jatim banyuwangi
ban yog bantul
bks jabar bekasi
blr jateng blora
byl jateng boyolali
kdr jatim kediri
kul yog kulon progo
mlg jatim malang
sby jatim surabaya
sle yog sleman
penduduk
nik nama jk kode_kota kode_prop
----- ---------------- ---- --------- ----------
00001 adi l ban yog
00002 anita p ban jatim
00003 ananda p kdr jatim
00004 badu l blr jateng
0005 budi l mlg jatim
4. Anda bisa mengganti nama kolom (field) pada view sebagai berikut
1 DROP VIEW vw_propinsi
2
3 CREATE VIEW vw_propinsi (kode_propinsi,
4 nama_propinsi) AS
5 SELECT kode_prop, nama_prop
6 FROM propinsi
Praktikum Basis Data Lanjut – MITEK – September 2007 16
5. Gunakan view untuk mengisi record sebagai berikut
1 INSERT INTO vw_propinsi VALUES ('ban','banten')
Latihan 3.2
Pada latihan ini anda akan mempelajari view yang tidak bisa digunakan
untuk mengisi record
Ikuti langkah-langkah berikut:
TUGAS 1
4.1. Transact-SQL
Transact-SQL merupakan bahasa pemrograman yang dikembangkan
dari SQL. Transact-SQL mengembangkan kemampuan SQL dengan
menambahkan instruksi logic seperti halnya sebuah bahasa
pemrograman.
Latihan 4.1
Pada latihan ini anda akan belajar membuat Transact-SQL sederhana.
1. Buat table dengan DDL sebagai berikut
1 CREATE TABLE prodi (
2 kode_prodi CHAR(3) PRIMARY KEY,
3 nama_prodi CHAR(30)
4 )
5
6 CREATE TABLE mahasiswa (
7 nim CHAR(4 ) CONSTRAINT ck_nim
8 CHECK (nim<>'') PRIMARY KEY,
9 nama CHAR(20) CONSTRAINT ck_nama
10 CHECK (nama<>'') NOT NULL,
11 jk CHAR CONSTRAINT ck_jk
12 CHECK (jk='l' or jk='p') NOT NULL,
13 alamat CHAR(20),
14 kota CHAR(15),
15 ipk NUMERIC(4,2),
16 kode_prodi CHAR(3) FOREIGN KEY
17 REFERENCES prodi(kode_prodi)
18 )
mahasiswa
nim nama jk alamat kota ipk kode_prodi
------------------------------------------------------
0001 adi l kelud 72 malang 3.20 mi
0002 ani p mawar 19 malang 2.90 tk
0003 ali l krakatau 54 malang 3.10 mi
0004 budi l kerinci 84 surabaya 2.50 tk
0005 badu l semeru 87 kediri 2.50 tk
Latihan 4.2
Pada latihan ini anda akan belajar membuat Transact-SQL dengan
melibatkan statemen seleksi CASE...WHEN.
1. Tulis dan jalankan script berikut
1 SELECT
2 nim,
3 nama,
4 jenis_kelamin =
5 CASE
6 WHEN jk='l' THEN 'Laki-laki'
7 WHEN jk='p' THEN 'Perempuan'
8 ELSE 'Tidak jelas'
9 END
10 FROM mahasiswa
Latihan 4.3
Pada latihan ini anda akan belajar membuat Transact-SQL dengan
melibatkan fungsi konversi angka ke string.
1. Tulis dan jalankan script berikut
1 PRINT 'Hello Word'
2 PRINT 'Today is ' + CONVERT(CHAR(30), GETDATE())
5.1. Procedure
Procedure adalah program yang dapat dipanggil oleh program
lainnya. Struktur umum sebuah procedure adalah
CREATE PROCEDURE namaProcedure (parameter) AS
Deklarasi variable
…
…
RETURN
Kata PROCEDURE bisa disingkat PROC. Untuk menjalankan procedure
digunakan EXEC seperti contoh berikut
EXEC namaProcedure
Latihan 5.1
Pada latihan ini anda akan belajar membuat procedure sederhana.
Gunakan table pada Praktikum 4.
1. Berikut ini procedure untuk manampilkan data mahasiswa
1 CREATE PROC PrintMahasiswa AS
2 SELECT * FROM Mahasiswa
3 RETURN
(3 row(s) affected)
TUGAS 2
Susun procedure dengan parameter kode_propinsi. Procedure ini
menghasilkan output rata-rata penduduk di tiap kota pada propinsi
tersebut.
TUGAS 3
Susun procedure dengan parameter kode_propinsi. Gunakan procedure
pada Tugas 2. Tampilkan kota yang penduduknya lebih banyak daripada
rata-rata penduduk di tiap kota pada propinsi tersebut.
Catatan:
6.1. Trigger
Trigger adalah blok program Transact-SQL yang diasosiasikan
dengan table dan disimpan dalam database. Trigger dieksekusi bila
terjadi database event (INSERT, UPDATE, DELETE).
Struktur umum sebuah trigger adalah
CREATE TRIGGER namaTriger
ON namaTable
FOR INSERT, UPDATE, DELETE
Deklarasi variable
…
…
RETURN
Latihan 6.1
Pada latihan ini anda akan belajar membuat trigger sederhana. Gunakan
table pada Praktikum 4.
1. Berikut ini trigger yang diekskusi pada saat penambahan record ke
table mahasiswa
1 CREATE TRIGGER trInsertMhs
2 ON mahasiswa
3 FOR INSERT
4 AS
5 PRINT 'Record baru : ' +
6 CONVERT (CHAR(30), GetDate(), 103)
7 DECLARE @nama char(20)
8 SELECT @nama=nama FROM INSERTED
Praktikum Basis Data Lanjut – MITEK – September 2007 30
9 PRINT 'Nama mahasiswa : '+@nama
(1 row(s) affected)
2. Berikut ini trigger yang diekskusi pada saat update record table
mahasiswa
1 CREATE TRIGGER trUpdateMhs
2 ON mahasiswa
3 FOR UPDATE
4 AS
5 PRINT 'Update Record : ' + CONVERT (CHAR(30),
6 GetDate(), 103)
7 PRINT 'Record Lama'
8 SELECT * FROM DELETED
9 PRINT 'Record Baru'
10 SELECT * FROM INSERTED
(1 row(s) affected)
Record Baru
nim nama jk alamat kota ipk kode_prodi
-----------------------------------------------------
(1 row(s) affected)
Latihan 6.2
Pada latihan ini anda akan belajar membuat trigger yang berkaitan
dengan banyak table.
1. Buat table counter
1 CREATE TABLE counter (
2 kota CHAR(10) PRIMARY KEY,
3 jumlah_mhs INT NOT NULL
4 )
(3 row(s) affected)
TUGAS 1
Trigger pada Latihan 6.2 akan mengupdate field jumlah_mhs pada table
counter jika ada penambahan record pada table mahasiswa. Bagaimana
jika ada penghapusan record atau ada mahasiswa pindah kota ? Susun
trigger baru untuk mengatasi hal ini.
TUGAS 2
Pada table prodi tambahkan field jumlah_mhs. Modifikasi trigger pada
Tugas 1 sehingga juga bisa mengupdate table prodi.