Professional Documents
Culture Documents
JURUSAN TEKNIK GEODESI FAKULTAS TEKNIK UNIVERSITAS GADJAH MADA YOGYAKARTA 2008
DAFTAR ISI
2..........................................................................................................................................DAFTAR ISI 3....................................................................................................................BAB I : PENDAHULUAN 3.............................................................................................................................I. Latar Belakang.1 3.....................................................................................................................Maksud dan Tujuan .1.2 4................................................................................................................................Dasar Materi .1.3 4................................................................................................................A. Microsoft Access.1.3 4........................................................................................................................B. Bahasa SQL.1.3 6...................................................................................................................BAB II : PELAKSANAAN 6........................................................................................................................Microsoft Access .2.1 9................................................................................................................................Bahasa SQL .2.1 12...........................................................................................................................BAB III : PENUTUP 13........................................................................................................................BAB III : LAMPIRAN
BAB I : PENDAHULUAN
program Microsoft Access 2003 dan Client/Server dengan menggunakan bahasa SQL (Oracle/MySQL).
Data Definition Language (DDL) Data Definition Language (DDL) merupakan sub bahasa SQL yang digunakan untuk membangun kerangka database. Ada tiga perintah yang termasuk dalam DDL, yaitu: CREATE : Perintah ini digunakan untuk membuat, termasuk di antaranya membuat database baru, tabel baru, view baru, dan kolom. ALTER : Perintah ini digunakan untuk mengubah struktur tabel yang telah dibuat. Pekerjaannya mencakup mengganti nama tabel, menambah kolom, mengubah kolom, menghapus kolom, maupun memberikan atribut pada kolom. DROP : Perintah ini digunakan untuk menghapus database dan tabel. Data Manipulation Language (DML) Data Manipulation Language (DML) merupakan sub bahasa SQL yang digunakan untuk memanipulasi data dalam database yang telah terbuat. Perintah yang digunakan, di antaranya: INSERT : Perintah ini digunakan untuk menyisipkan atau memasukkan data baru ke dalam tabel. Penggunaannya setelah database dan tabel selesai dibuat. SELECT : Perintah ini digunakan untuk mengambil data atau menampilkan data dari satu tabel atau beberapa tabel dalam relasi. Data yang diambil dapat kita tampilkan dalam layar prompt MySQL secara langsung maupun ditampilkan pada tampilan aplikasi. UPDATE : Perintah ini digunakan untuk memperbarui data lama menjadi data terkini. Jika ada data yang salah atau kurang up to date dengan kondisi sekarang, maka dapat diubah isi datanya menggunakan perintah UPDATE. DELETE : Perintah ini digunakan untuk menghapus data dari tabel. Biasanya data yang dihapus merupakan data yang sudah tidak diperlukan lagi. Pada saat menghapus data, perintah yang telah dijalankan tidak dapat digagalkan, sehingga data yang telah hilang tidak dapat dikembalikan lagi. Data Control Language (DCL) Data Control Language (DCL) merupakan sub bahasa SQL yang digunakan untuk melakukan pengontrolan data dan server databasenya. Perintah DCL, di antaranya: GRAND : Perintah ini digunakan untuk memberikan hak/ijin akses oleh administrator (pemilik utama) server kepada user (pengguna biasa). Hak akses tersebut berupa hak membuat (CREATE), mengambil (SELECT), menghapus (DELETE), mengubah (UPDATE), dan hak khusus berkenaan dengan sistem databasenya. REVOKE : Perintah ini memiliki kegunaan terbalik dengan GRAND, yaitu untuk menghilangkan atau mencabut hak akses yang telah diberikan kepada user oleh administrator.
BAB II : PELAKSANAAN
Dalam praktikum ini diberikan terlebih dahulu kerangka-kerangka tabel yang akan dibuat. Baru kemudian dibuat databasenya dalam bentuk Microsoft Access atau bahasa SQL (MySQL/Oracle) serta mengaplikasikan querynya. Tabel-tabel yang akan dibuat antara lain : PASIEN (id_pasien#, nama, umur, alamat..) DOKTER (id_dokter#, nama, umur, alamat, kode_ruang, id_poli#..) POLIKLINIK (id_poli#, nama..) RUANG DOKTER (kode_ruang#, kapasitas..) BANGSAL (id_bangsal#, kapasitas..) PAVILIUN (id_paviliun#, fasilitas...) OBAT (kode_obat#, nama_obat, penyakit, dosis..) PASIEN_BANGSAL (id_pasien#, id_bangsal#, tgl_masuk..) PASIEN_PAVILIUN (id_pasien#, id_paviliun#, tgl_masuk..) PEMERIKSAAN (no_registrasi#, id_dokter#, id_pasien#, tgl, diagnosa..) PEMBERIAN_OBAT (no_registrasi#, kode_obat#, jumlah..)
Dari kotak dialog yang muncul, memilih lokasi penyimpanan database dan nama file database tersebut. 2. Buat tabel dengan cara memilih Create table in design view dari menu yang muncul.
3. Akan muncul kotak dialog pembuatan tabel. Tabel dibuat dengan mengisikan fieldfield/kolom-kolom yang diperlukan pada Field Name. Kolom Data type diisikan dengan tipe data yang dikehendaki untuk field yang bersangkutan.
Tab general diisi dengan pengaturan mengenai tipe data yang digunakan, misal panjang karakter, dsb. 4. Setelah selesai, salah satu field yang memiliki nilai unik ditetapkan sebagai primary key, dengan cara : klik kanan pada field tersebut pilih Primary key 5. Demikian selanjunya dibuat tabel-tabel lain dengan mengisikan fieldnya pada design view pembuatan tabel. Hasilnya adalah sebagai berikut :
6. Pengisian tabel dilakukan dengan cara klik dua kali dari tabel yang akan diisi. Pengisian dilakukan dari tabel yang tidak direferensikan oleh tabel lain, misalnya tabel pasien.
Berikutnya diisi tabel-tabel lain berurutan sehingga seluruhnya terisi data. 7. Relasi antar eniti dapat dibuat dari menu Tools Relationship. Dari menu layout relationship yang muncul, dipilih Relationship Edit Relationship. Setelah itu, dimasukkan tabel-tabel yang berhubungan dan constraint yang akan diaplikasikan.
8. Setelah semua relasi selesai dibuat, barulah bisa dibuat query. Dari menu pembuatan tabel, dipilih Query, kemudian Create query in design view untuk membuat query yang diinginkan. Pada kotak dialog yang muncul, pilih tabel (atau tabel-tabel) yang akan digunakan dalam seleksi query. 9. setelah semua tabel terpilih, pada baris Field, dimasukkan nama-nama kolom yang akan dilibatkan pada pembuatan query. Kemudian, pada baris Criteria, dimasukkan kondisi baris yang menyeleksi tampilan yang diinginkan. Misalkan, untuk mencari kapasitas bangsal tempat pasien bernama Sherlock Holmes adalah sebagai berikut :
10. Query juga bisa melakukan operasi-operasi dalam penyeleksian data yang diinginkan. Ini dilakukan dengan menambahkan fungsi agregat (tanda sigma [] di menu). Misalnya untuk menampilkan jumlah pemberian obat berdasarkan nomor registrasinya, dilakukan sebagai berikut :
Selanjutnya adalah pembuatan tabel-tabel yang mengandung identitas tamu, antara lain tabel DOKTER, PASIEN BANGSAL, PASIEN PAVILIUN, PEMERIKSAAN, dan PEMBERIAN OBAT. Hal yang harus diperhatikan pada saat pembuatannya adalah harus mematuhi constraint inegritas referensi, misalnya pada saat pembuatan foreign
key, nama fieldnya harus benar-benar sama dengan nama field pada tabel referensi. Pembuatan tabel dokter adalah sebagai berikut : create table dokter (id_dokter char(10), nama char(30), umur number(5), alamat char(50), kode_ruang char(10), id_poli char(10), constraint pk_dokter primary key(id_dokter), constraint fk_dokter_1 foreign key(kode_ruang) references ruang_dokter(kode_ruang), constraint fk_dokter_2 foreign key(id_poli) references poliklinik(id_poli)); hasil pembuatannya : Name Null? ------------------------------- -------------ID_DOKTER NOT NULL NAMA UMUR ALAMAT KODE_RUANG ID_POLI 3. Type -----------CHAR(10) CHAR(30) NUMBER(5) CHAR(50) CHAR(10) CHAR(10)
Setelah semua tabel selesai dibuat, maka selanjutnya adalah melakukan pengisian tabel dengan data. Pengisian tabel dilakukan dengan perintah INSERT INTO<nama_tabel> VALUES(<nilai_kolom1>,<nilai_kolom2>...);atau INSERT INTO <nama_tabel> <nama_kolom1>,<nama_kolom2>...) VALUES (<nilai_kolom1>,<nilai_kolom2>...); Misalnya pengisian tabel PEMERIKSAAN adalah sebagai berikut : insert into pemeriksaan values ('R0001','D04','pas001','408-2008','Pilek'); insert into pemeriksaan values ('R0002','D01','pas002','311-2008','Migrain'); insert into pemeriksaan values ('R0003','D05','pas003','2902-2008','Flu Tulang'); insert into pemeriksaan values ('R0004','D03','pas004','412-2008','Luka Luar'); insert into pemeriksaan values ('R0005','D02','pas005','412-2008','Thyphus'); insert into pemeriksaan values ('R0006','D04','pas005','712-2008','Radang tenggorokan'); insert into pemeriksaan values ('R0007','D02','pas002','611-2008','Batuk');
4.
Perintah-perintah lain yang digunakan dalam membuat dan memodifikasi tabel antara lain :
. Modifikasi tipe data kolom ALTER TABLE <nama_tabel> MODIFY <nama_kolom tipe_data_kolom >; . Menambahkan kolom ALTER TABLE <nama_tabel> ADD <nama_kolom tipe_data_kolom>; . Menghapus satu baris DELETE FROM <nama_tabel> WHERE <nama_kolom>=<nilai_kolom>; . Mengganti nilai UPDATE <nama_tabel> SET <nama_kolom1>=<nilai_kolom1>,<nama_kolom2>=<nilai_kolom2>... WHERE <nama_kolom> = <nilai_kolom>; . Mengganti format tanggal, format tanggal default pada sql adalah : YYYY-MM-DD ALTER SESSION SET NLS_DATE_FORMAT="DD-MM-YYYY" 5. Pembuatan Query, secara garis besar terdiri dari tiga kondisi, yaitu seleksi baris, seleksi kolom, dan operasi penggabungan tabel yang dimasukkan dalam seleksi baris. Seleksi kolom dilakukan dengan menggunakan perintah SELECT <nama_kolom_1>, <nama_kolom_2>.. FROM <nama_tabel_1>, <nama_tabel_2>.. Seleksi baris dilakukan dengan perintah WHERE <kondisi_baris>, sedangkan operasi join dilakukan dengan operator =. 6. Disamping itu dapat juga diaplikasikan fungsi agregat (mis. AVG COUNT, MAX, MIN, SUM) untuk melakukan seleksi atau penampilan hasil dengan perhitungan tertentu. Terdapat juga fungsi : GROUP BY, yang digunakan untuk menampilkan data berdasarkan klasifikasi kolom tertentu; IN, untuk menyatakan suatu data termasuk dalam kelompok data tertentu; BETWEEN untuk menyatakan suatu data dalam range tertentu, dan seterusnya Misalkan untuk menampilkan jumlah pasien yang diperiksa oleh dokter Watson pada tanggal 11 januari 2008 adalah : SELECT COUNT (DISTINCT (pemeriksaan.id_pasien)) AS jumlah_pasien FROM dokter, pemeriksaan WHERE dokter.id_dokter=pemeriksaan.id_dokter AND pemeriksaan.tgl=11-01-2008 AND dokter.nama=Watson;
kode_ruang char(10), id_poli char(10), constraint pk_dokter primary key(id_dokter), constraint fk_dokter_1 foreign key(kode_ruang) references ruang_dokter(kode_ruang), constraint fk_dokter_2 foreign key(id_poli) references poliklinik(id_poli)); create table pasien_bangsal (id_pasien char(10), id_bangsal char(10), tgl_masuk date, constraint pk_pasien_bangsal primary key(id_pasien), constraint fk_pasien_bangsal_1 foreign key(id_pasien) references pasien(id_pasien), constraint fk_pasien_bangsal_2 foreign key(id_bangsal) references bangsal(id_bangsal)); create table pasien_paviliun (id_pasien char(10), id_paviliun char(10), tgl_masuk date, constraint pk_pasien_paviliun primary key(id_pasien), constraint fk_pasien_paviliun_1 foreign key(id_pasien) references pasien(id_pasien), constraint fk_pasien_paviliun_2 foreign key(id_paviliun) references paviliun(id_paviliun)); create table pemeriksaan (no_registrasi char(10), id_dokter char(10), id_pasien char(10), tgl date, diagnosa char(50), constraint pk_pemeriksaan primary key(no_registrasi), constraint fk_pemeriksaan_1 foreign key(id_dokter) references dokter(id_dokter), constraint fk_pemeriksaan_2 foreign key(id_pasien) references pasien(id_pasien)); create table pemberian_obat (no_registrasi char(10), kode_obat char(10), jumlah number(5), constraint pk_pemberian_obat primary key(no_registrasi,kode_obat), constraint fk_pemberian_obat_1 foreign key(no_registrasi) references pemeriksaan(no_registrasi), constraint fk_pemberian_obat_2 foreign key(kode_obat)
references obat(kode_obat)); # pengisian tabel insert into pasien values ('pas001','Ahmad',30,'Jl. Kaliurang KM 5'); insert into pasien values ('pas002','Muhammad',40,'Jl. Godean KM 5'); insert into pasien values ('pas003','Musthofa',15,'Pogung Dalangan'); insert into pasien values ('pas004','Abul Qasim',25,'Pogung Dalangan'); insert into pasien values ('pas005','Muhammad',63,'Sendowo'); insert into poliklinik values ('poli001','Poli Mata'); insert into poliklinik values ('poli002','Poli Gigi dan Mulut'); insert into poliklinik values ('poli003','Poli THT'); insert into poliklinik values ('poli004','Poli Penyakit Dalam'); insert into poliklinik values ('poli005','Poli Umum'); insert into ruang_dokter values ('R01',4); insert into ruang_dokter values ('R02',3); insert into ruang_dokter values ('R03',4); insert into ruang_dokter values ('R04',2); insert into ruang_dokter values ('R05',3); insert into bangsal values ('B01',5); insert into bangsal values ('B02',6); insert into bangsal values ('B03',4); insert into bangsal values ('B04',2); insert into bangsal values ('B05',2);
insert into paviliun values ('pav01',10); insert into paviliun values ('pav02',15); insert into paviliun values ('pav03',13); insert into paviliun values ('pav04',16); insert into paviliun values ('pav05',10); insert into obat values ('obat001','Aspirin','Migrain','50 mg'); insert into obat values ('obat002','Ether','Bius Total','44 mg'); insert into obat values ('obat003','Penicillin','Luka Luar','5 mg'); insert into obat values ('obat004','Vitamin C','Sariawan','100 mg'); insert into obat values ('obat005','Chloroform','Bius Lokal','54 mg'); insert into dokter values ('D01','James Watson',34,'Baker Street 221 B','R04','poli005'); insert into dokter values ('D02','Ibnu Haytham',54,'Andalusia','R04','poli001'); insert into dokter values ('D03','Al Khawarizmi',64,'Spanyol','R03','poli003'); insert into dokter values ('D04','Sherlock Holmes',34,'Baker Street 221 B','R04','poli003'); insert into dokter values ('D05','Stanley Hopkins',34,'Scotland Yard','R02','poli002'); ALTER SESSION SET NLS_DATE_FORMAT="DD-MM-YYYY" Pasien_bangsal insert into pasien_bangsal values ('pas001','B05', '12-08-2008'); insert into pasien_bangsal values ('pas002','B05', '12-11-2008'); insert into pasien_bangsal values ('pas003','B02', '01-03-2008'); insert into pasien_bangsal values ('pas004','B03', '12-12-2008'); insert into pasien_bangsal values ('pas005','B01', '12-12-2008');
pasien_paviliun insert into pasien_paviliun values ('pas001','pav03', '13-08-2008'); insert into pasien_paviliun values ('pas002','pav02', '13-11-2008'); insert into pasien_paviliun values ('pas003','pav01', '02-03-2008'); insert into pasien_paviliun values ('pas004','pav01', '13-12-2008'); insert into pasien_paviliun values ('pas005','pav01', '14-12-2008'); pemeriksaan insert into pemeriksaan values ('R0001','D04','pas001','4-08-2008','Pilek'); insert into pemeriksaan values ('R0002','D01','pas002','3-11-2008','Migrain'); insert into pemeriksaan values ('R0003','D05','pas003','29-02-2008','Flu Tulang'); insert into pemeriksaan values ('R0004','D03','pas004','4-12-2008','Luka Luar'); insert into pemeriksaan values ('R0005','D02','pas005','4-12-2008','Thyphus'); insert into pemeriksaan values ('R0006','D04','pas005','7-12-2008','Radang tenggorokan'); insert into pemeriksaan values ('R0007','D02','pas002','6-11-2008','Batuk'); pemberian obat insert into pemeriksaan values ('R0001','obat004',3); insert into pemeriksaan values ('R0002','obat001',1); insert into pemeriksaan values ('R0003','obat002',2); insert into pemeriksaan values ('R0004','obat005',2); insert into pemeriksaan values ('R0005','obat002',4); insert into pemeriksaan values ('R0006','obat003',3); insert into pemeriksaan values ('R0007','obat004',1); QUERY a. SELECT pasien.id_pasien, pasien.nama, pasien.alamat FROM pasien, pemeriksaan WHERE pasien.id_pasien=pemeriksaan.id_pasien AND pemeriksaan.tgl = 11-01-2008; b. SELECT pasien.id_pasien, pasien.nama, pasien.alamat FROM pasien, pemeriksaan WHERE pasien.id_pasien=pemeriksaan.id_pasien AND pemeriksaan.tgl = 11-01-2008 AND pemeriksaan.diagnosa = flu; c. SELECT COUNT (DISTINCT (pemeriksaan.id_pasien)) AS jumlah_pasien FROM dokter, pemeriksaan WHERE dokter.id_dokter=pemeriksaan.id_dokter AND pemeriksaan.tgl=27-01-2008 AND dokter.nama=affandi;
d. SELECT pasien.nama, pasien.umur, MAX(pemeriskaan.tgl) as tgl_terakhir FROM pasien, pemeriksaan WHERE pasien.id_pasien=pemeriksaan.id_pasien GROUP BY pasien.nama, pasien.umur; e. SELECT dokter.nama, pemeriksaan.tgl FROM pemeriksaan, dokter WHERE pemeriksaan.id_dokter=dokter.id_dokter AND pemeriksaan.tgl=(SELECT MAX(tgl) FROM pemeriksaan WHERE id_pasien=P08); f. SELECT pasien.id_pasien, pasien.nama, COUNT(no_reg) AS jumlah_kunjungan FROM pasien, pemeriksaan WHERE pasien.id_pasien=pemeriksaan.id_pasien AND pemeriksaan.tgl BETWEEN 1-1-2008 AND 2-6-2008 GROUP BY pasien.id_pasien, pasien.nama; g. SELECT COUNT(DISTINCT(pasien.id_pasien)) FROM pasien,pemeriksaan WHERE pasien.id_pasien=pemeriksaan.id_pasien AND pasien.umur<5; i. SELECT pasien.nama, pasien.id_pasien FROM pasien WHERE id_pasien not in (SELECT id_pasien FROM pemeriksaan WHERE diagnosa = maag); q. SELECT pasien.id_pasien,pasien.nama, COUNT(pemeriksaan.no_reg) as jumlah_kunjungan FROM pemeriksaan, pasien WHERE pasien.id_pasien=pemeriksaan.id_pasien GROUP BY pasien.id_pasien, pasien.nama HAVING COUNT(pemeriksaan.no_reg)= (SELECT MAX(COUNT(no_reg)) FROM pemeriksaan GROUP BY pemeriksaan.id_pasien); r. SELECT jumlah_kunjungan, COUNT (*) AS jumlah_orang FROM (SELECT id_pasien, COUNT(no_reg) AS jumlah_kunjungan FROM pemeriksaan GROUP BY id_pasien) GROUP BY jumlah_kunjungan;