16 September 2006

Tutorial SQL Bagian 1

SQL adalah singkatan dari Structured Query Language, yang merupakan bahasa standar (lingua franca) untuk mengolah database. Bagi Anda yang baru memulai mempelajari SQL dan kebetulan berkecimpung di bidang informasi kesehatan/ilmu kesehatan, tutorial ini kami sajikan dalam langkah-langkah yang praktis serta berkaitan langsung dengan kasus supaya mudah dipahami.

Bagi Anda yang sudah cukup mahir menggunakan SQL, tutorial ini dapat pula digunakan sebagai penyegaran, selain itu juga dapat sebagai bahan renungan untuk pertimbangan alternatif desain database.

Gambaran Singkat Mengenai Database
tableApa dan bagaimanakah database itu? Database adalah sarana penyimpanan data (basis data). Data yang kita peroleh (semisal dari hasil penelitian/survei yang kita lakukan) akan disimpan di database dalam bentuk tabel. Di dalam database boleh terdapat banyak tabel untuk menyimpan informasi yang bermacam-macam. Tabel memiliki kolom dan baris. Kolom sering disebut dalam bahasa lain: column/field/attribute, sedangkan baris: row/record/tuple/relation (kami akan menggunakan bahasa-bahasa tersebut sepanjang tutorial ini).

Untuk mempraktekkan langkah-langkah dalam tutorial ini, Anda membutuhkan aplikasi komputer seperti Microsoft Access, MS SQL Server, MySQL, Oracle, dll, dan diharapkan sudah cukup mengenal penggunaan aplikasi tersebut sehingga kita bisa langsung kepada prakteknya. Contoh-contoh perintah SQL yang dibuat sepanjang tutorial ini juga dapat dicopy dan dipaste ke dalam aplikasi untuk langsung dicoba tanpa perlu mengetik terlalu banyak.

Kita akan mengambil contoh kasus sebuah misi/proyek surveillance of disease sepanjang tutorial ini.

Langkah 1 : Tabel Pasien
Pertama kali, kita akan membuat tabel yang isinya adalah data sosio demografi pasien hasil survei. Tabel ini akan memiliki atribut : nama, alamat, kode_wilayah, kelamin dan umur. Untuk membuat tabel dengan SQL, kita gunakan perintah CREATE TABLE :

CREATE TABLE pasien (
nama TEXT,
alamat TEXT,
kode_wilayah TEXT(10),
kelamin CHARACTER,
umur SMALLINT
);

Kemudian kita akan mengisinya dengan data menggunakan perintah INSERT :
[catatan: untuk jenis kelamin L=laki-laki, P=perempuan]

INSERT INTO pasien (nama,alamat,kode_wilayah,kelamin,umur)
VALUES ('John','Jl. Enau No. 99','3471000000','L','35');

INSERT INTO pasien (nama,alamat,kode_wilayah,kelamin,umur)
VALUES ('Jane','Jl. Melati No. 1','3471000000','P','30');

INSERT INTO pasien (nama,alamat,kode_wilayah,kelamin,umur)
VALUES ('George','Jl. Mangga No. 33','3404000000','L','30');

INSERT INTO pasien (nama,alamat,kode_wilayah,kelamin,umur)
VALUES ('Silvy','Jl. Bambu No. 11','3402000000','P','20');

INSERT INTO pasien (nama,alamat,kode_wilayah,kelamin,umur)
VALUES ('Tommy','Jl. Beringin No. 55','3402000000','L','25');

Kemudian kita akan sedikit bermain-main dengan data yang telah kita simpan di dalam tabel tadi. Kita akan melakukan query (mengambil data) dengan perintah SELECT:

Tampilkan seluruh data pasien:
SELECT * FROM pasien;

hasilnya:
+--------+---------------------+--------------+---------+------+
| nama | alamat | kode_wilayah | kelamin | umur |
+--------+---------------------+--------------+---------+------+
| John | Jl. Enau No. 99 | 3471000000 | L | 35 |
| Jane | Jl. Melati No. 1 | 3471000000 | P | 30 |
| George | Jl. Mangga No. 33 | 3404000000 | L | 30 |
| Silvy | Jl. Bambu No. 11 | 3402000000 | P | 20 |
| Tommy | Jl. Beringin No. 55 | 3402000000 | L | 25 |
+--------+---------------------+--------------+---------+------+

Tampilkan yang berjenis kelamin laki-laki saja:
SELECT * FROM pasien WHERE kelamin = 'L';

hasilnya:
+--------+---------------------+--------------+---------+------+
| nama | alamat | kode_wilayah | kelamin | umur |
+--------+---------------------+--------------+---------+------+
| John | Jl. Enau No. 99 | 3471000000 | L | 35 |
| George | Jl. Mangga No. 33 | 3404000000 | L | 30 |
| Tommy | Jl. Beringin No. 55 | 3402000000 | L | 25 |
+--------+---------------------+--------------+---------+------+

Tampilkan nama pasien yang berumur 30 tahun:
SELECT nama FROM pasien WHERE umur = '30';

hasilnya:
+--------+
| nama |
+--------+
| Jane |
| George |
+--------+

Tampilkan kolom/field nama dan umur saja:
SELECT nama,umur FROM pasien;

hasilnya:
+--------+------+
| nama | umur |
+--------+------+
| John | 35 |
| Jane | 30 |
| George | 30 |
| Silvy | 20 |
| Tommy | 25 |
+--------+------+

Langkah 2 : Tabel Wilayah
+--------------+-----------------+
| kode_wilayah | nama_wilayah |
+--------------+-----------------+
| 3401000000 | KULON PROGO |
| 3402000000 | BANTUL |
| 3403000000 | GUNUNG KIDUL |
| 3404000000 | SLEMAN |
| 3471000000 | YOGYAKARTA |
+--------------+-----------------+
Ada pertanyaan:
  1. Mengapa kita perlu kode wilayah?
  2. Mengapa tidak langsung saja nama wilayah diikutkan sekalian dalam kolom alamat?
Jawab:
Kita bisa saja memasukkan nama wilayah didalam alamat, namun kita akan kesulitan nantinya pada saat mengolah data. Kesulitan itu timbul dikarenakan data menjadi kurang terstruktur (informasi wilayah bercampur dengan alamat). Selain itu, kode yang dimasukkan disini juga bukan asal dibuat, namun sudah dibakukan sebagai kode wilayah standar oleh pemerintah Indonesia melalui Biro Pusat Statistik. Keistimewaan yang kita peroleh nantinya dengan memasukkan wilayah dalam bentuk kode ialah kemudahan untuk bertukar data dengan institusi-institusi mau pun peneliti-peneliti yang lain yang menggunakan kode standar tersebut. Keunggulan lainnya ialah query menjadi lebih optimal dan cepat.

Kita akan membuat tabel wilayah dengan perintah:
CREATE TABLE wilayah (
kode_wilayah TEXT(10),
nama_wilayah TEXT(60)
);

Kemudian mengisinya dengan data menggunakan perintah:

INSERT INTO wilayah (kode_wilayah,nama_wilayah)
VALUES('3401000000','KULON PROGO');
INSERT INTO wilayah (kode_wilayah,nama_wilayah)
VALUES('3402000000','BANTUL');
INSERT INTO wilayah (kode_wilayah,nama_wilayah)
VALUES('3403000000','GUNUNG KIDUL');
INSERT INTO wilayah (kode_wilayah,nama_wilayah)
VALUES('3404000000','SLEMAN');
INSERT INTO wilayah (kode_wilayah,nama_wilayah)
VALUES('3471000000','YOGYAKARTA');

Kita periksa data yang telah kita masukkan dengan perintah:
SELECT * FROM wilayah;

hasilnya:
+--------------+--------------+
| kode_wilayah | nama_wilayah |
+--------------+--------------+
| 3401000000 | KULON PROGO |
| 3402000000 | BANTUL |
| 3403000000 | GUNUNG KIDUL |
| 3404000000 | SLEMAN |
| 3471000000 | YOGYAKARTA |
+--------------+--------------+

Setelah ini, kita akan mencoba metode-metode penggalian informasi yang lebih canggih pada tutorial SQL bagian kedua.

Bersambung.

No comments: