ModulBasisData
ModulBasisData
Disusun Oleh :
Dr. Ema Utami, S.Si, M.Kom
Anggit Dwi Hartanto, M.Kom
2013
Modul 1
Pengenalan SQL Server 2000
Untuk praktikum pengolahan basis data, server database yang digunakan adalah
Microsoft SQL Server 2000. SQL Server 2000 merupakan paket lengkap yang terdiri
dari:
1. Service Manager, digunakan untuk membuat server database, mengubah server,
men-start server, men-stop server atau meng-pause server database yang berjalan
di windows. Service menager ini harus diaktifkan, karena service manager ini
berfungsi sebagai koneksi ke server.
2. Query Analyzer, merupakan fasilitas SQL Server yang digunakan untuk
menjalankan semua sintaks SQL.
3. Enterprise Manager, digunakan untuk membuat dan mengatur database
menggunakan fasilitas control panel atau wizard yang sudah tersedia di SQL
Server 2000.
4. Import and Export Data, digunakan untuk mengcopy database dari satu server ke
server yang lain, selain itu, juga berfungsi untuk mengexport database dari
format SQL Server menjadi format lain seperti Excel, DBF, Access dan format
database lainnya.
5. Profiler, merupakan fasilitas SQL Server yang digunakan untuk merekam
aktivitas-aktivitas dalam server database.
Modul 2
Pengantar SQL
SQL
merupakan
bahasa
komputer
standar
yang
ditetapkan
oleh
Sebuah database dapat berisi satu atau lebih tabel yang setiap tabel memiliki
nama tersendiri atau unik. Tabel-tabel tersebut memiliki minimal satu kolom/field atau
lebih dan memiliki baris/record.
Arti query di atas adalah Pilih semua data Nama_Barang dari tabel Data_Barang.
Bahasa query mengikuti standar bahasa Inggris yang mudah dimengerti.
Dalam praktikum kali ini, kita menggunakan program MS SQL Server 2000.
Untuk menjalankan perintah SQL kita akan menggunakan Query Analyzer yang telah
disediakan oleh SQL Server 2000. Tampilan awal dari Query Analyzer adalah sbb :
KETIKKAN QUERY
DI SINI
Modul 3
Data Definition Language
Data Definition Language (DDL) merupakan perintah SQL yang digunakan untuk
mendefinisikan dan mendeklarasikan suatu objek database, menciptakan objek database
atau menghapus objek database. Objek database tersebut dapat berupa database dan
tabel.
DDL dapat juga digunakan untuk membuat koneksi antar tabel dalam database
beserta batasannya dengan menentukan kolom indeks sebagai kuncinya. DDL yang
biasa digunakan adalah CREATE, DROP dan ALTER.
Contoh:
CREATE DATABASE PBD
Contoh :
USE Penjualan
3.3
Keterangan :
Keterangan :
3.4
Membuat Tabel
Catatan:
Sebelum membuat tabel maka anda harus mengaktifkan database yang akan
dibuat tabelnya dengan perintah USE.
Contoh:
USE PBD
Contoh :
CREATE TABLE dokter(
kd_dokter varchar(5) primary key not null,
nama varchar(30),
gender char(1) check(gender='L' or gender='P'),
alamat varchar(30),
gaji numeric
)
Catatan :
Null tidak sama dengan nol, tetapi memiliki arti bahwa kolom atau field tersebut
tidak ada data yang dimasukkan.
Not null menyatakan bahwa data pada kolom tersebut tidak boleh kosong dan
harus diisi.
Contoh:
CREATE TABLE resep(
kd_resep int identity(1,1) primary key not null,
hari
varchar(10)
CHECK
(hari
IN
('senin','selasa','rabu','kamis',
'jumat','sabtu')),
tanggal datetime,
kd_pasien varchar(5) foreign key references pasien(kd_pasien),
kd_penyakit varchar(5) foreign key references penyakit(kd_penyakit),
kd_obat varchar(5) foreign key references obat(kd_obat),
kd_dokter varchar(5) foreign key references dokter(kd_dokter)
)
Identity atau yang biasa disebut dengan istilah autonumber adalah nilai yang
dihasilkan oleh sistem secara otomatis dan terurut sesuai dengan nilai urutan yang
dimasukkan. Contoh di atas kolom kode resep (kd_resep int identity(1,1)) akan
terurut mulai dari angka 1 dengan pertambahan pengurutan 1 nilai.
Contoh:
DROP DATABASE PBD
DROP TABLE dokter
2. Menghapus field
DROP nama_field
3. Memodifikasi field
ALTER nama_field tipe_data
4. Menambah constraint
ADD CONSTRAINT nama_constraint definisi_constraint
5. Menghapus constraint
DROP CONSTRAINT nama_constraint
Contoh:
Menambah kolom agama pada tabel dokter dengan type data varchar(10)
ALTER TABLE dokter ADD agama varchar(10)
Jika hanya ada 6 agama yang boleh dimasukkan ke dalam kolom agama, maka pada
tabel dokter maka kita bisa memakai perintah :
ALTER TABLE dokter
ADD CONSTRAINT cek_agama
CHECK (agama IN (islam,protestan,katolik,hindu,budha,konghuchu))
Perintah IN mempunyai arti semua data dalam kurung adalah benar. IN merupakan
alternatif untuk mengganti perintah OR yang terlalu banyak. Seperti contoh yang sama
di bawah ini :
Sebuah tabel mempunyai sebuah kolom atau kombinasi beberapa kolom yang
nilainya secara urut mengidentifikasi sebuah baris dalam tabel. Kolom-kolom seperti ini
disebut dangan primary key. Sebuah tabel bisa terdiri dari beberapa primary key.
Sedangkan foreign key merupakan kolom atau kombiansi kolom yang dipakai
unutk menghubungkan sebuah table dengan table lainnya. Kolom yang didefinisikan
sebuah foreign key harus selalu merujuk kepada kolom primary key dari tabel asal baik
tipe data maupun isi datanya.
10
b) Klik Kanan Mouse pada Diagram kemudian pilih New Database Diagram
11
f) Klik Finish dan gambar berikut adalah tampilan dari 3 tabel yang sudah berelasi.
12
13
3.8 Praktikum
Membuat database dengan ketentuan sebagai berikut:
Tabel dokter
Kolom
Kd_dokter
Nama
Alamat
Gender
Gaji
Tipe Data
Varchar(5)
Varchar(30)
Varchar(30)
Char(1)
Numeric
Keterangan
Primary key not null
Not null
Check(L/P)
Tabel pasien
Kolom
Kd_pasien
Nama
Alamat
Gender
Periksa
Tipe Data
Varchar(5)
Varchar(30)
Varchar(30)
Char(1)
Numeric
Keterangan
Primary key not null
Not null
Check(L/P)
Tabel penyakit
Kolom
Kd_penyakit
Penyakit
Tipe Data
Varchar(5)
Varchar(30)
Keterangan
Primary key not null
Not null
Tipe Data
Varchar(5)
Varchar(30)
Keterangan
Primary key not null
Not null
Tabel obat
Kolom
Kd_obat
Obat
Tabel jadwal_dokter
Kolom
Kd_jadwal
Hari
Shift
Kd_dokter
Tipe data
Varchar(5)
Varchar(10)
Varchar(10)
Varchar(5)
Keterangan
Primary key not null
Check (senin,selasa,rabu,kamis,jumat,sabtu)
Check(pagi/sore)
Foreign key (dokter.kd_dokter)
Tipe Data
Int
Varchar(10)
Datetime
Varchar(5)
Varchar(5)
Varchar(5)
Varchar(5)
Keterangan
Identity (1,1) Primary key not null
Check (senin,selasa,rabu,kamis,jumat,sabtu)
Tabel resep
Kolom
Kd_resep
Hari
Tanggal
Kd_pasien
Kd_penyakit
Kd_obat
Kd_dokter
Foreign
Foreign
Foreign
Foreign
key
key
key
key
(pasien.kd_pasien)
(penyakit.kd_penyakit)
(obat.kd_obat)
(dokter.kd_dokter)
14
15
16
Modul 4
Data Manipulation Language
17
Nama
Ema Utami
Suwanto Raharjo
Emi Susanti
Andi Sunyoto
Emha Taufik Luthfi
Gender
P
L
P
L
L
Alamat
Yogyakarta
Jakarta
Semarang
Bandung
Yogyakarta
Gaji
2500000
2000000
1500000
2000000
3000000
Pasien
Kd_pasien
P0001
P0002
P0003
P0004
P0005
P0006
P0007
P0008
P0009
P0010
Nama
Risa
Janu
Reva
Didi
Lativa
Fanie
Putri
Randi
Daffa
Vika
Gender
P
L
P
L
P
L
P
L
L
P
Alamat
Jakarta
Surabaya
Yogyakarta
Surakarta
Purwokerto
Cilacap
Yogyakarta
Jakarta
Semarang
Bandung
Periksa
1
2
4
3
1
2
5
3
2
4
Penyakit
Kd_penyakit
K0001
K0002
K0003
K0004
K0005
K0006
K0007
K0008
K0009
K0010
Penyakit
Batuk
Panu
Kadas
Kurap
Konstipasi
Migrain
Tipus
Hepatitis
Diabetes
Hipertensi
Obat
Kd_obat
M0001
M0002
M0003
M0004
M0005
M0006
M0007
M0008
M0009
M0010
Obat
Antalgin
Parasetamol
CTM
Antibiotik
Salep
Dulcolax
Pacepil
Imunolax
Hiposetamol
Metromex
18
Jadwal_Dokter
Kd_jadwal
A0001
A0002
B0001
B0002
C0001
C0002
D0001
D0002
E0001
E0002
F0001
Hari
Senin
Senin
Selasa
Selasa
Rabu
Rabu
Kamis
Kamis
Jumat
Jumat
Sabtu
Shift
Pagi
Sore
Pagi
Sore
Pagi
Sore
Pagi
Sore
Pagi
Sore
Pagi
Kd_dokter
D0001
D0002
D0004
D0003
D0001
D0005
D0003
D0002
D0004
D0001
D0003
Contoh :
Menampilkan data-data dokter
SELECT
* FROM Dokter
19
Pengertian
Sama Dengan
Tidak Sama Dengan
Lebih Besar
Lebih Kecil
Lebih Besar atau Sama Dengan
Lebih Kecil atau Sama Dengan
Diantara Dua Nilai
Mencari Bagian yang sama
Menggabungkan Dua Kondisi
Menolak Kondisi
Syarat Kondisi Untuk Setiap Pilihan
Operator logika terdiri dari AND, OR, dan NOT. Operator AND dan
OR
4.3.3 BETWEEN
Perintah ini jika kita ingin mengambil beberapa data yang terletak antara nilai dalam
klausa BETWEEN. Hanya berlaku pada data yang bertipe numeric dan string.
Sintaks UMUM :
SELECT [Daftar_Kolom] FROM Tabel WHERE [Kondisi]
BETWEEN [Batas_Nilai_1] AND [Batas_Nilai_2]
20
4.3.4 TOP
Perintah ini digunakan untuk menampilkan beberapa data paling atas dari hasil
SELECT. Misalnya kita ingin menampilkan 3 data paling atas saja.
Sintaks UMUM :
SELECT TOP n [Daftar_Kolom] FROM Tabel [WHERE Kondisi]
Contoh :
Menampilkan 3 data saja dari urutan paling atas :
SELECT TOP 3 * FROM Dokter
4.3.5 IS NULL
NULL adalah nilai dari sebuah field atau kolom yang tidak memiliki data apapun.
NULL tidak sama dengan sebuah karakter spasi dan atau nilai 0 pada data numeric.
4.3.6 Sorting
Untuk mengurutkan data-data dari hasil SELECT, klausa yang digunakan ialah ORDER
BY. Proses pengurutan dapat dilakukan secara ascending maupun descending. Secara
default pengurutan dilakukan secara ascending.
21
Modul 5
Klausa LIKE, UPDATE dan DELETE
5.1 LIKE
LIKE digunakan untuk mengambil data dengan pencarian data yang memiliki bagian
yang sama dalam klausa LIKE tersebut. Dengan menggunakan kondisi LIKE karakter
apapun dapat dicari, dapat berupa satu, dua, atau semua karakter yang ada didalam
string yang akan dicari. Ada beberapa hal yang harus diketahui dalam klausa LIKE,
diantaranya
Tanda % (percent)
Tanda % digunakan untuk mewakili semua karakter. Tanda ini bisa diletakkan di bagian
depan, tengah maupun belakang.
Contoh :
1. Menampilkan data dokter yang namanya memiliki karakter pertama huruf E
SELECT * FROM dokter WHERE nama LIKE E%
Tanda _ (underscore)
Tanda _ digunakan untuk mewakili sebuah karakter. Tanda ini juga bisa diletakkan di
bagian depan, tengah maupun belakang.
Contoh :
Misalnya dari tabel dokter yang ada, apabila kita ingin menampilkan data dokter yang
memiliki nama dengan karakter kedua adalah U, maka bisa digunakan perintah:
SELECT * FROM dokter WHERE nama LIKE _U%
22
5.2 Wildcard
Dalam memasukkan data ke tabel dalam database, sangat mungkin terjadi
kesalahan penulisan ataupun adanya perbedaan pelafalan. Sebagai contoh, ada yang
menyebut November dengan Nopember, Februari dengan Pebruari atau
Yogyakarta dengan Jogjakarta atau bahkan hanya Yogya ataupun Jogja.
Perintah
tersebut
akan
menghasilkan
keluaran
yang
memuat
semua
23
5.3 UPDATE
UPDATE digunakan untuk melakukan perubahan pada data. Sintaks umum yang biasa
digunakan:
UPDATE nama_tabel SET kolom1=nilai1 ,, kolomN=nilaiN
WHERE kondisi
Contoh:
Mengganti nama dan alamat dokter yang memiliki kode dokter D0001
UPDATE dokter SET nama=Ema Utami Saja, alamat=Semarang
WHERE kd_dokter=D0001
Catatan:
Hati-hati jika menggunakan perintah UPDATE yang tidak menyertakan klausa WHERE
akan mengakibatkan semua data dalam tabel yang dirujuk akan diganti dengan nilai
yang diisikan.
5.4 DELETE
DELETE digunakan untuk melakukan penghapusan pada data. Sintaks umum yang
biasa digunakan:
DELETE FROM nama_tabel WHERE kondisi
Contoh:
Menghapus data dokter yang mempunyai kode dokter D0003
DELETE FROM dokter WHERE kd_dokter=D0003
Catatan:
Hati-hati jika menggunakan perintah DELETE yang tidak menyertakan klausa WHERE
akan mengakibatkan semua data dalam tabel yang dirujuk akan terhapus.
24
5.5 Praktikum
1. Buatlah perintah untuk menampilkan data dokter dengan nama yang memiliki
karakter huruf i
2. Buatlah perintah untuk menampilkan nama dokter dengan alamat yang memiliki
akhiran klausa karta
3. Buatlah perintah untuk menampilkan data dokter dengan nama yang memiliki
karakter kedua huruf m
4. Buatlah perintah untuk mengubah alamat dokter yang beralamat Jakarta
dengan Semarang
5. Buatlah perintah untuk mengubah alamat dokter dengan nama berklausa
Suwanto menjadi Semarang
6. Buatlah perintah untuk menghapus data dokter dengan nama berklausa Susan
7. Buatlah perintah untuk menghapus data dokter dengan alamat Bandung
8. Buatlah perintah untuk menghapus data dokter dengan kode D0002
25
Modul 6
MID PREPARATION
Database Nasabah BankPlecit_xxxx
Nasabah_xxxx
Kd_nasabah
Nama
Alamat
Rekening
Kd_cabang
Saldo
Cabang_xxxx
Kd_cabang
Nama
Alamat
Jml_nasabah
Keterangan
Primary key not null
Not null
Not null
Not null
Tabel nasabah_xxxx
Kolom
Tipe Data
Kd_nasabah
Varchar(5)
Nama
Varchar(30)
Alamat
Varchar(30)
Rekening
Numeric
Kd_cabang
Varchar(5)
Saldo
Numeric
Keterangan
Primary key not null
Not null
Not null
Not null
Foreign key (cabang.kd_cabang) not null
Not null
KC
KC
KC
KC
KC
KC
KC
Nama
Amikom
Janti
Gejayan
Wirobrajan
Kauman
Imogiri
Babarsari
Alamat
Condong Catur
Janti
Gejayan
Wirobrajan
Kauman
Imogiri
Babarsari
Jml_nasabah
8
5
6
8
7
6
3
26
Nasabah_xxxx
Kd_nasabah
N0001
N0002
N0003
N0004
N0005
N0006
N0007
N0008
N0009
N0010
N0011
N0012
Nama
Januar
Febri
Maria
Aprilia
Memey
Juno
Julia
Agusto
Septia
Okta
Nova
Desi
Alamat
Kalasan
Kuncen
Paris
Samirono
Seyegan
Gamping
Monjali
Turi
Ngampilan
Sagan
Kotabaru
Terban
Rekening
12340001
12340002
12340003
12340004
12340005
12340006
12340007
12340008
12340009
12340010
12340011
12340012
Kd_cabang
KC002
KC004
KC006
KC003
KC001
KC004
KC001
KC001
KC005
KC003
KC005
KC003
Saldo
1500000
2500000
3000000
2000000
1200000
2800000
1400000
2200000
1300000
2700000
2000000
700000
Soal:
1. Tampilkan semua nama nasabah, alamat, dan saldonya
2. Tampilkan nama nasabah dengan saldo > 2000000
3. Tampilkan nama nasabah dengan alamat Gejayan
4. Tampilkan nama nasabah dengan kode cabang KC003
5. Tampilkan semua data kantor cabang (nama dan alamat)
6. Tampilkan nama kantor cabang dengan alamat Kauman
7. Tampilkan nama kantor cabang dengan jumlah nasabah > 6 orang
8. Update data kantor cabang dengan kode KC002 menjadi
Nama : KC RSJ Pakem
Alamat : Pakem
Jumlah nasabah : 7
9. Hapus data semua kantor cabang dengan jumlah nasabah kurang dari 5
10. Update data nasabah dengan kode N0010 menjadi
Alamat : Monjali
Saldo : 4000000
11. Hapus semua data nasabah dengan alamat Terban
27
Modul 7
Fungsi Agregate dan Kolom Alias
7.1 Fungsi Agregate
Fungsi Agregate ialah fungsi fungsi statistik yang ditetapkan pada baris baris yang
diseleksi. Fungsi Agregate sering digunakan untuk operasi perhitungan. Fungsi yang
sering digunakan adalah :
AVG
Digunakan untuk mencari nilai rata-rata dari suatu field dalam sebuah tabel.
MAX
Digunakan untuk mencari nilai terbesar (maksimum) dari suatu field dalam sebuah
tabel.
MIN
Digunakan untuk mencari nilai terkecil (minimum) dari suatu field dalam sebuah tabel.
SUM
Digunakan untuk mencari hasil jumlah dari suatu field dalam sebuah tabel.
COUNT
Digunakan untuk menghitung jumlah record atau baris data dari suatu field dalam
sebuah tabel.
Contoh:
1. Menghitung jumlah pasien
SELECT COUNT(*) FROM pasien
SELECT COUNT(kd_pasien) FROM pasien
28
Selain contoh dasar di atas, fungsi agregate juga bisa dikombinasikan dengan
penggunaan kondisi WHERE. Seperti contoh di bawah ini:
1. Menghitung jumlah pasien yang telah diperiksa lebih dari 2 kali
SELECT COUNT(kd_pasien) FROM pasien WHERE periksa>2
Perlu diketahui :
Bahwa AVG, MAX, MIN, SUM, COUNT mengabaikan nilai NULL. Sedangkan
COUNT(*) tidak mengabaikan nilai NULL.
29
keterangan :
Jika kolom alias ada spasi maka gunakan [ ], untuk kolom alias tersebut.
Contoh:
SELECT COUNT(kd_pasien) AS [Jumlah Pasien Dari Yogyakarta]
FROM pasien WHERE alamat='Yogyakarta'
7.3 Praktikum
1. Buatlah perintah untuk menghitung jumlah dokter yang ada.
2. Buatlah perintah untuk menghitung gaji dokter tertinggi dan terendah
3. Buatlah perintah untuk menghitung rata-rata gaji dokter
4. Buatlah perintah untuk menghitung jumlah gaji semua dokter
5. Buatlah perintah untuk menampilkan nama dokter dengan gaji tertinggi dan terendah
6. Buatlah perintah untuk menampilkan jumlah dokter dari Yogyakarta dengan nama
alias kolom Jumlah Dokter dari Yogyakarta
30
Modul 8
Grouping
8.1 Grouping
Grouping ialah proses pengelompokkan data yang dilakukan berdasarkan daftar kolom
yang disebutkan dalam SELECT.
Sintaks dasar :
SELECT
FROM
[WHERE
[GROUP BY
[ORDER BY
Catatan :
1. Semua kolom yang berada dalam daftar SELECT yang tidak berada dalam
group function harus ditulis dalam klausa GROUP BY.
2. Semua pengelompokan mengabaikan nilai NULL di dalam kolom.
3. HAVING digunakan untuk membatasi hasil pengolompokan ( group ).
Contoh:
Menampilkan jumlah pasien dari tiap daerah
SELECT alamat AS Kota_Asal, COUNT(alamat) AS Jumlah
FROM pasien GROUP BY alamat
8.2 Praktikum
1. Buatlah perintah untuk menampilkan jumlah dokter dari tiap daerah
2. Buatlah perintah untuk menampilkan jumlah pasien berdasar jumlah periksa
3. Buatlah perintah untuk menampilkan jumlah jadwal periksa dari tiap dokter dalam
satu
minggu
31
Modul 9
Join Antar Tabel
9.1 Join
Join merupakan sebuah operasi yang digunakan untuk mendapatkan data
gabungan dari dua tabel atau lebih. Operasi ini digunakan dalam perintah SELECT dan
biasanya dipakai untuk memperoleh data secara detail dari tabel-tabel yang saling
terkait (memiliki relasi). Misalnya karena tabel jadwal_dokter hanya memuat kode
dokter saja tanpa nama dokter, maka kita harus melakukan join dengan tabel dokter
yang memuat nama dokter.
2. Inner Join
Inner join menghasilkan output berupa kombinasi baris-baris yang memiliki
pasangan saja. Kombinasi baris yang tidak berpasangan akan dieliminasi atau
tidak digunakan. Baris-baris yang tidak memiliki pasangan pada tabel lainnya
juga tidak dimunculkan.
3. Outer Join
Outer join hampir sama dengan inner join, hanya saja baris yang tak memiliki
pasangan tetap akan ditampilkan. Outer join dibagi menjadi tiga, yaitu:
Left join
Right join
32
atau
SELECT tabel_1.kolom, tabel_2.kolom
FROM tabel_1 CROSS JOIN tabel_2
atau
SELECT tabel_1.kolom, tabel_2.kolom
FROM tabel_1 INNER JOIN tabel_2
ON tabel_1.kolom_kunci_1=tabel_2.kolom_kunci_2
Contoh:
Perintah untuk menggabungkan data tabel jadwal_dokter dengan tabel dokter
SELECT * FROM jadwal_dokter INNER JOIN dokter
ON jadwal_dokter.kd_dokter=dokter.kd_dokter
33
9.2 Praktikum
1) Buatlah perintah untuk menggabungkan data tabel resep dengan tabel dokter
2) Buatlah perintah untuk menggabungkan data tabel resep dengan tabel pasien
3) Buatlah perintah untuk menggabungkan data tabel resep dengan tabel penyakit
4) Buatlah perintah untuk menggabungkan data tabel resep dengan tabel obat
5) Buatlah perintah untuk menampilkan jadwal dokter (nama dokter, hari, shift)
6) Buatlah perintah untuk menampilkan nama dokter yang praktiknya hari selasa
7) Buatlah perintah untuk menampilkan nama dokter dengan tanggal periksa 3
Agustus 2006
8) Buatlah perintah untuk menampilkan nama pasien dan penyakitnya yang
diperiksa hari senin
34
Modul 10
OUTER JOIN
35
Untuk lebih memahami perbedaan antara berbagai jenis JOIN, coba jalankan perintahperintah di bawah ini:
SELECT dokter.nama, jadwal_dokter.hari, jadwal_dokter.shift
FROM dokter INNER JOIN jadwal_dokter
ON dokter.kd_dokter=jadwal_dokter.kd_dokter
SELECT dokter.nama, jadwal_dokter.hari, jadwal_dokter.shift
FROM dokter LEFT JOIN jadwal_dokter
ON dokter.kd_dokter=jadwal_dokter.kd_dokter
SELECT dokter.nama, jadwal_dokter.hari, jadwal_dokter.shift
FROM dokter RIGHT JOIN jadwal_dokter
ON dokter.kd_dokter=jadwal_dokter.kd_dokter
SELECT dokter.nama, jadwal_dokter.hari, jadwal_dokter.shift
FROM dokter FULL JOIN jadwal_dokter
ON dokter.kd_dokter=jadwal_dokter.kd_dokter
Setelah menjalankan query di atas, ada terdapat beberapa persamaan dan perbedaan
antara operasi join yang satu dengan lainnya. Yang menjadi kesamaannya ialah bahwa
semua operasi join pasti menggabungkan beberapa tabel untuk mendapatkan data
gabungan, sedangkan perbedaan antara cross join dengan jenis join lainnya adalah
dengan ada tidaknya persyaratan atau pengecekan kondisi join. Cross join merupakan
jenis join yang tidak memakai persyaratan, sementara jenis join lainnya memerlukan
persyaratan. Persyaratan yang dimaksud adalah data pada kolom foreign key di tabel
yang merujuk harus sama dengan data pada kolom primary key di tabel yang dirujuk.
Secara umum persyaratan atau kondisi tersebut dapat dituliskan sebagai berikut:
tabel_1.kolom_primary_key = tabel_2.kolom_foreign_key
Sintaks tersebut dapat ditulis secara terbalik dan tetap memiliki arti yang sama, sebagai
berikut:
tabel_2.kolom_foreign_key = tabel_1.kolom_primary_key
Catatan:
Kolom-kolom_foreign_key pada tabel_2 harus mereferensi ke kolom_primary_key
pada tabel_1.
36
Karena keharusan adanya foreign key dan primary key yang saling berhubungan itu,
maka inner join dan outer join hanya dapat dilakukan pada tabel yang memiliki relasi
saja. Sementara itu, cross join dapat dilakukan pada sembarang tabel, baik tabel yang
saling berhubungan maupun tidak.
Cara pertama lebih singkat dan akan lebih terasa jika yang di-joinkan lebih dari dua
tabel. Hal ini terjadi karena keyword JOIN dan ON merupakan satu kesatuan yang
hanya dapat diterapkan pada dua buah tabel saja. Untuk lebih dari dua tabel kita harus
menuliskan JOIN dan ON berulang kali. Perhatikan contoh berikut:
SELECT resep.kd_resep, pasien.nama, penyakit.penyakit
FROM resep, pasien, penyakit
WHERE resep.kd_pasien=pasien.kd_pasien
AND resep.kd_penyakit=penyakit.kd_penyakit
Walaupun penulisannya lebih panjang tapi bentuk yang kedua lebih dianjurkan karena
membutuhkam memory yang lebih sedikit dan prosesnya lebih cepat. Hal ini akan
terasa sekali jika melibatkan tabel-tabel dengan data yang banyak. Tidak seperti inner
join, penulisannya hanya ada satu cara. Walaupun demikian kita dapat menyingkat
dengan menghilangkan keyword OUTER, sehingga LEFT OUTER JOIN dapat
disingkat menjadai LEFT JOIN dan seterusnya.
37
10.2 Praktikum
1) Buatlah perintah untuk menggabungkan data tabel resep dengan tabel dokter
(pasien, penyakit, dan obat).
2) Buatlah perintah untuk menampilkan data resep (kode
tanggal,
nama
pasien,
nama
penyakit,
nama
obat,
resep,
nama
hari,
dokter
periksa)
38
Modul 11
Alias Tabel
Contoh:
Menampilkan nama dokter dengan jadwal praktiknya
SELECT a.nama, b.hari, b.shift FROM dokter a
INNER JOIN jadwal_dokter b
ON a.kd_dokter=b.kd_dokter
11.2 Praktikum
1) Buatlah perintah untuk menampilkan data resep (kode
tanggal,
nama
pasien,
nama
penyakit,
nama
obat,
resep,
nama
hari,
dokter
periksa)
2) Buatlah perintah untuk menampilkan nama dokter yang praktiknya hari jumat
dan sabtu
3) Buatlah perintah untuk menampilkan nama pasien yang diperiksa tanggal 5
Agustus 2006
39
MODUL 12
UAS PREPARATION
penjualan
Kd_penjualan
Hari
Tanggal
Kd_agen
Kd_barang
Jumlah
barang
Kd_barang
Barang
supplier
agen
Kd_supplier
Supplier
Alamat
Kd_agen
Agen
Alamat
Soal:
1. Tampilkan data pembelian (kode
pembelian,
hari,
tanggal,
nama
40