laporan praktikum basis data modul 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah...

12
LAPORAN PRAKTIKUM BASIS DATA MODUL 3 CONDITIONAL SQL MIKA PURNAMASARI NASTADINA LABORATORIUM REKAYASA PERANGKAT LUNAK TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH MALANG 2010 -2011

Upload: lythuy

Post on 21-Apr-2018

241 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

LAPORAN PRAKTIKUM BASIS DATA

MODUL 3

CONDITIONAL SQL

MIKA PURNAMASARI

NASTADINA

LABORATORIUM REKAYASA PERANGKAT LUNAK

TEKNIK INFORMATIKA

FAKULTAS TEKNIK

UNIVERSITAS MUHAMMADIYAH MALANG

2010 -2011

Page 2: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

I. Tujuan

1. Mengenal dan memahami konsep conditional SQL

2. Memahami dan mengimplementasikan operator conditional SQL seperti AND,

OR, LIKE, BETWEEN, =, <, >, <=, >=, <>

3. Mengenal dan memahami konsep penggunaan operasi nested query

4. Memahami dan mengimplementasikan operator IN, NOT IN dalam SQL

II. Perlengkapan yang dibutuhkan:

1. Komputer Set (memory >= 1GB, CPU >= PIV)

2. Oracle XE

3. SQL manager console/ TOAD/ SQL Developer

III. Dasar Teori

A. SQL

SQL ( Structured Query Language ) merupakan bahasa query yang digunakan

untuk mengakses database relasional. SQL sekarang sudah menjadi bahasa

database standard dan hampir semua sistem database memahaminya. SQL

terdiri dari berbagai jenis statemen. Semuanya didesain agar

memungkinkan untuk dapat secara interaktif berhubungan dengan database.

syntax dari SQL-SELECT

SELECT [DISTINCT] select_list

FROM table_source

[WHERE search_condition]

[GROUP BY group_by_expression]

[HAVING search_condition]

[ORDER BY order_expression [ASC | DESC] ]

B. WHERE <KONDISI> untuk filter

Where digunakan untuk filter atau pencarian data sesuai dengan kondisi tertentu

yang ada di dalam suatu database, ada berbagai bentuk ekpresi di dalam kondisi

yang ada di where clause, yaitu:

- operasi pembandingan

- operasi pendekatan pola string (string matching)

- Operasi pembandingan dengan sekumpulan nilai

Page 3: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

Comparation Condition

Khusus untuk pembanding IS, nilai yang diisikan adalah null, yakni sebuah nilai

yang belum berisi nilai. Perlu diketahui, bahwa nilai null tidak sama dengan nilai 0

pada tipe numerik ataupun string kosong pada tipe string.

Misal:

- menampilkan anggota yang berjenis kelamin laki-laki:

SELECT * FROM Anggota WHERE JK=’L’

- menampilkan Anggota yang tahun kelahirannya lebih dari 1985:

SELECT * FROM Anggota WHERE extract (YEAR FROM tgllahir) > 1985

- menampilkan Anggota wanita yang lahir di bulan Juli:

SELECT * FROM anggota

WHERE JK=’P’ AND extract (MONTH FROM tgllahir) = 6

- menampilkan idKoleksi yang belum dikembalikan (TglKembali belum terisi)

SELECT * FROM Peminjaman WHERE TglKembali IS NULL

Operasi LIKE (pendekatan pola)

khusus string

Operasi ini, hanya untuk pembandingan nilai bertipe string. Digunakan untuk

mengenali string -string yang memiliki pola tertentu. Di dalam operasi ini,

digunakan simbol-simbol berikut:

- simbol % artinya mewakili 0 s/d tak terhingga dari sembarang karakter.

- simbol _ artinya mewakili 1 sembarang karakter.

misal:

- menampilkan anggota yang nama depannya: ‘Budi’

SELECT * FROM anggota WHERE Nama LIKE ‘Budi%’

- menampilkan Anggota yang huruf ketiga namanya adalah ‘d’, dua garis bawah ( _

_ ) sebelum huruf d.

Page 4: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

SELECT * FROM anggota WHERE Nama LIKE ‘__d%’

- menampilkan koleksi yang judulnya terdapat kata ‘pemrograman’

SELECT * FROM koleksi WHERE Judul LIKE ‘%pemrograman%

operasi IN atau NOT IN ...

Ekspresi ini digunakan untuk membandingkan dengan sebuah kumpulan nilai,

yang mana kumpulan nilai bisa berupa:

- nilai-nilai yang diisikan

- query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja)

Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

tersebut di dalam query kita. Misalnya:

- menampilkan koleksi yang jenisnya buku dan majalah (idTipeKoleksi=1 atau

2):

SELECT * FROM koleksi WHERE idTipeKoleksi IN (1, 2)

- menampilkan anggota yang selain mahasiswa atau dosen (idJenisAnggota selain

1 dan 3)

SELECT * FROM anggota WHERE IDJenisAnggota NOT IN (1, 3)

Nested Query

Sering juga disebut Inner Query atau Query bersarang. Yaitu sebuah query yang

terdapat didalam query lainnya. Misalnya:

- menampilkan anggota yang belum pernah meminjam buku sama sekali:

SELECT * FROM anggota

WHERE id NOT IN (SELECT DISTINCT idAnggota FROM Peminjaman)

perhatikan tambahan klausa DISTINCT di atas untuk mempercepat proses, walau

toh tanpa DISTINCT hasilnya juga sama.

- menampilkan koleksi yang sedang dipinjam:

SELECT * FROM koleksi WHERE idKoleksi IN (SELECT idKoleksi

FROM Peminjaman WHERE TglKembali is NULL)

Page 5: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

IV Hasil Praktikum

Dengan merujuk pada table-table yang telah Anda ciptakan untuk study case

yang telah diberikan. Buat masing-masing 2 query yang didalamnya terdapat operasi :

a. WHERE

b. OR

c. <>

d. BETWEEN … AND …

e. LIKE

f. IN

g. IS NULL

h. NOT IN

i. BETWEEN

j. Nested Query

NB :

- Tiap kelompok menciptakan total 20 query

- Untuk masing-masing query, tulis query nya, kemudian print screen hasilnya

- Penilaian akan dilakukan dengan melihat kompleksitas query yang dibuat.

Semakin kompleks querynya, maka akan semakin baik nilainya.

1. Query dengan operasi WHERE

- Menampilkan nama pasien yang bertempat tinggal di Sengkaling

SELECT * FROM PASIEN WHERE ALAMAT='SENGKALING'

- Menampilkan nama pasien yang tidak memiliki nomor telepon

SELECT * FROM PASIEN WHERE NO_TELP IS NULL

Page 6: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

2. Querry dengan operasi OR

- Dapatkan nama obat yang berjenis sirup atau kapsul

SELECT * FROM GOLOBAT WHERE (JENIS='SYRUP') OR (JENIS='KAPSUL')

- Dapatkan nama pasien yang bertempat tinggal di Jetis atau Landungsari

SELECT * FROM PASIEN WHERE (ALAMAT='JETIS') OR (ALAMAT='LANDUNGSARI')

3. Query dengan operasi <>

- Dapatkan nama pasien yang tidak berumur 28 dan 51 dan yang tidak berjenis

kelamin perempuan dan yang tidak beralamat di Tirto

SELECT * FROM PASIEN WHERE (UMUR <>28) AND (UMUR <>51) AND

(JK_PASIEN <>'PEREMPUAN') AND (ALAMAT <>'TIRTO')

- Dapatkan nama obat yang tidak memiliki harga diantara 15.000 dan 30.000 dan

tidak memiliki kode obat ‘B-009’ dan nama obat diakhiri dengan huruf ‘a’

SELECT * FROM OBAT WHERE NOT(HARGA BETWEEN '15000' AND '30000')

AND (KODE_OBAT<>'B-009') AND (NAMA_OBAT LIKE '%A')

Page 7: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

4. Query dengan operasi BETWEEN … AND …

- Dapatkan nama pasien yang berumur antara 10 dan 20 tahun dan tidak

bertempat tinggal di Sengkaling

SELECT * FROM PASIEN WHERE (UMUR BETWEEN 10 AND 20) AND NOT

(ALAMAT='SENGKALING')

- Dapatkan nama dokter yang dimulai dari huruf ‘M’ dan memiliki gaji diantara

1.000.000 sampai 2.500.000

SELECT * FROM RESEP WHERE (GAJI_DOKTER BETWEEN '1.000.000' AND

'2.500.000') AND (NAMA_DOKTER LIKE 'M%')

5. Query dengan operasi LIKE

- Dapatkan nama pasien yang diawali dengan ‘Muhammad’ dan tidak berumur

diantara 10 sampai 30 tahun

SELECT * FROM PASIEN WHERE (NAMA_PASIEN LIKE 'MUHAMMAD%') AND

NOT(UMUR BETWEEN 10 AND 30)

Page 8: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

- Dapatkan nama obat yang berkhasiat untuk mengobati demam

SELECT * FROM OBAT WHERE KHASIAT LIKE '%DEMAM%'

6. Query dengan operasi IN

- Dapatkan nama pasien yang berumur 18,19 dan 24 tahun

SELECT * FROM PASIEN WHERE UMUR IN(18,19,24)

- Dapatkan nama pasien yang memiliki ID_PASIEN P-001, P-002, P-003 dan P-004

SELECT * FROM PASIEN WHERE ID_PASIEN IN('P-001','P-002','P-003','P-004')

7. Query dengan operasi IS NULL

- Dapatkan nama pasien yang tidak memiliki nomor telepon

SELECT * FROM PASIEN WHERE NO_TELP IS NULL

Page 9: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

- Dapatkan NO_RESEP yang tidak memiliki tanggal transaksi

SELECT * FROM RESEP WHERE NO_RESEP IN (SELECT NO_RESEP FROM

TRANSAKSI WHERE TANGGAL IS NULL)

8. Query dengan operasi NOT IN

- Dapatkan NO_RESEP yang belum melakukan transaksi

SELECT * FROM RESEP WHERE NO_RESEP NOT IN (SELECT DISTINCT

NO_RESEP FROM TRANSAKSI)

- Dapatkan kode obat yang memiliki golongan obat

SELECT * FROM OBAT WHERE KODE_OBAT IN (SELECT DISTINCT KODE_OBAT

FROM GOLOBAT)

Page 10: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

9. Query dengan operasi BETWEEN

- Dapatkan nama dokter yang memiliki gaji diantara 1.000.000 sampai 2.700.000

SELECT * FROM RESEP WHERE GAJI_DOKTER BETWEEN '1.000.000' AND

'2.700.000'

- Dapatkan nama pasien yang berumur 17 sampai 30 tahun

SELECT * FROM PASIEN WHERE UMUR BETWEEN '17' AND '30'

10. NestedQuery

- Dapatkan nama pasien yang tidak bertempat tinggal di Sengkaling dan nama

pasien dimulai dengan huruf ‘O’ dan berumur diantara 10 sampai 30 tahun

SELECT * FROM PASIEN WHERE (ALAMAT NOT IN 'SENGKALING') AND

Page 11: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai

(NAMA_PASIEN LIKE 'O%') AND (UMUR BETWEEN '10' AND '30')

- Dapatkan nama dokter yang memiliki gaji diantara 1.000.000 sampai 3.000.000

dan nama dokter dimulai dari huruf ‘M’.

SELECT * FROM RESEP WHERE (GAJI_DOKTER BETWEEN '1000000' AND

'3000000') AND (NAMA_DOKTER LIKE 'M%')

V. Kesimpulan

Bagi seorang programmer, menguasai SQL adalah sebuah kewajiban karena

program zaman sekarang pasti menggunakan database untuk menyimpan datanya.

SQL juga mudah dipelajari karena semua statement dibuat berdasarkan kata-kata di

dalam bahasa inggris yang umum. SQL benar-benar suatu bahasa yang kuat, dan

dengan kepandaian menggunakan unsur-unsur bahasa tersebut, kita dapat melakukan

pengoperasian database yang kompleks dan sulit.

Page 12: LAPORAN PRAKTIKUM BASIS DATA MODUL 3 ... query tunggal (query yg hasilnya hanya terdapat sebuah kolom saja) Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai