A. LANDASAN
TEORI
Berhubungan
dengan manejemen tabel, terlebih dahulu kita harus berbekal dengan bahasa SQL.
Sudah dijelaskan sebelumnya, bahwa SQL adalah sebuah bahasa yang menempel pada
suatu DBMS, diantaranya PostgreSQL dan MySQL. Perintah dari bahasa SQL tersebut
dapat kita sebut dengan query.
Bahasa
SQL terdiri dari tiga perintah yaitu:
- a. DDL (Data Definition Language)
- b. DML (Data Manipulation Language)
- c. DCL (Data Control Language)
Dalam
manajemen tabel, hanya diperlukan duaperintah dasar SQL, yakni DDL dan DCL.
Untuk DML, akan dibahas dipertemuan yang akan datang (Harap sabar yaaa ).
Data
Definition Language (DDL) merupakan sub bahasa SQL yang digunakan untuk
membangun kerangka database. Ada tiga perintah yang termasuk dalam DDL:
- 1. CREATE : digunakan untuk membuat database, tabel, dan kolom baru
- 2. ALTER : digunakan untuk mengubah struktur tabel yang telah dibuat. Alter mencakup mengganti nama tabel, kolom, mengubah kolom maupun mengganti atribut pada kolom.
- 3. DROP : digunakan untuk menghapus database dan tabel
Data
Control Language (DCL) merupakan sub bahasa SQL yang digunakan untuk
pengontrolan data dan server databasenya. Perintah DCL adalah sebagai berikut:
- 1. GRAND : Perintah ini digunakan untuk memberikan hak/izin akses oleh administrator (pemilik utama) server kepada user (pengguna biasa). Hak akses tersebut bisa berupa SELECT, DELETE, UPDATE, CREATE, dan hak khusus yang lain.
- 2. REVOKE : perintah ini memiliki fungsi yang berkebalikan dengan GRAND, yaitu mencabut atau menghilangkan hak akses dari server ke user.
B. HASIL
PRAKTIKUM
Sebelum mengerjakan, alangkah baiknya kalau kita mengetahui apa tugasnya ;)
Bertemu lagi dengan PostgreSQL dan MySQL. Kali ini, saya akan menampilkan query dari commandPrompt, bukan dari phpMyAdmin seperti yang kemarin :D
Pertama
tama, kita mulai dari PostgreSQL dulu ya, untuk mengerjakan Tugas Praktikum
1. Buka SQL Shell
2. Tekan enter untuk lanjut
3. Masukkan nama database yang telah dibuat pada modul pertama dahulu. Disini, nama database saya adalah nama saya sendiri, jadi saya masukkan nama saya.
4. Selanjutnya, login. Masukin nama user dan password kamu. NOTE : pake user postgre dulu yahh
5. Sekarang, buat tabel dengan nama identitasNIM, ini nih source nya:
CREATE TABLE nama_tabel (nama_kolom tipe_data keterangan, nama_kolom tipe_data keterangan);
Dengan kriteria seperti yang ada di modul, maka kamu harus nuliskan kaya gini guys:
Jika berhasil, maka akan muncul tulisan CREATE TABLE
6. Buat tabel lagi dengan nama pegawai, dimana nama field sama dengan tabel identitasNIM
7. Hapus kolom alamat_idn pada tabel pegawai dengan query:
ALTER TABLE nama_tabel DROP COLUMN "nama_kolom";
Jika berhasil, maka akan muncul ALTER TABLE.
8. Lalu, tampilkan tabel pegawai dengan query:
\d nama_tabel;
9. Tambahkan kolom "pekerjaan_idn" dengan tipedata varchar dengan query:ALTER TABLE nama_tabel ADD COLUMN "nama_kolom" tipe_data;
Jika berhasil, akan muncul ALTER TABLE dan Tampilkan tabel pegawai untuk pengecekan
10. Rename tabel pegawai dengan pekerjaNIM. Nih query-nya:ALTER TABLE nama_tabel_lama RENAME TO nama_tabel_baru;
11. Sekarang, giliran rename kolom "pekerjaan_idn" menjadi "alamat_idn". Berikut query-nya:
ALTER TABLE nama_tabel RENAME COLUMN "nama_kolom_lama" TO "nama_kolom_baru";
Tampilkan tabel pekerjaNIM
12. Merubah tipe data pada kolom "alamat_idn" yang semula varchar menjadi text
ALTER TABLE nama_tabel ALTER COLUMN "nama_kolom" type nama_tipe_pengganti;
Tampilkan tabel pekerjaNIM
13. Hapus tabel pekerjaNIM, dengan format query sebagai berikut:
DROP TABLE nama_tabel;
14. Bikin temporary tabel dengan nama mahasiswa_sementara dengan 3 kolom yaitu, id_mhs, nama_mhs, ttl_mhs dengan query:
CREATE TEMPORARY TABLE nama_table (nama_kolom tipe_data keterangan, nama_kolom tipe_data keterangan);
Tampilkan tabel mahasiswa_sementara.
15. Nah, sekarang masuk pada materi GRANT dan REVOKE. Pertama kali yang harus dilakukan sebelum menulis query untuk GRANT dan REVOKE, siapkan 2 tampilan SQL Shell. Masuk pada user yang telah dibuat sebelumnya pada pertemuan pertama. User jangan sama dengan SQL Shell pertama.
Untuk menghapus semua hak akses pada user tertentu, maka akan kita gunakan REVOKE. Pada SQL Shell pertama, ketikkan query sebagai berikut:
REVOKE ALL ON TABLE nama_tabel FROM nama_user ;
Lakukan pengecekan pada SQL Shell kedua dengan mengetikkan query:SELECT*FROM nama_tabel;
Loh, kenapa kok Error ? Yaps, ga usah khawatir. Karena ini perintah revoke, ya jelaslah hak aksesnya dihapus, maka kalau kita mengakses tabel yang udah di revoke, ya mesti ERROR ;D
16. Lakukan langkah 15 untuk query GRANT.GRANT ALL ON TABLE nama_tabel TO nama_user;
Lakukan juga pengecekan pada SQL Shell kedua dengan query yang sama dengan langkah 15.
17. Hapus just satu akses pada satu user. Misalkan saja akses DELETE. Berikut query-nya:
REVOKE DELETE ON TABLE nama_tabel TO nama_user;
Lakukan pengecekan pada SQLShell kedua.
Masih bisa diakses kok tabelnya ;). Tetapi, jika kita memberi perintah DELETE pada tabel tersebut, tetapi tidak bisa mengakses delete terhadap tabel tersebut.
18. Beralih ke inheritance. Sekarang buatlah tabel dengan nama gaji. Tetapi, INGAT. Buat tabel tersebut dengan berasal dari turunan tabel identitasNIM dan tambahkan kolom gaji kotor, pajak dan gaji bersih.Berikut ini adalah query-nya:
CREATE TABLE nama_tabel (nama_kolom tipedata keterangan , nama_kolom tipedata keterangan) inherits (tabelyanglain);
-
Tampilkan tabel gaji;
C. TUGAS
RUMAH
Kali ini, giliran MySQL untuk mengerjakan tugas rumahnya
- Aktifkan XAMPP Control Panel
- Klik Start pada menu Apache dan MySQL
- Buka CMD kalian, Masuk ke direktori mysql/bin. Lalu login dengan user root. Pake yang default dulu aja ya,,
- Sebelum membuat tabel, di MySQL, perlu mengaktifkan database terlebih dahulu. Langsung saja cara mengaktifkannya:USE nama_database;
- Baru deh kita buat tabelnya. Sintaksnya sama mirip seperti di PostgreSQL.CREATE TABLE nama_tabel (nama_kolom tipe_data keterangan, nama_kolom tipe_data keterangan);
- Satu lagi ya guys tabelnya. Kali ini dengan nama pegawai. Fieldnya, kalian buat sama aja deh seperti tabel identitasNIM.
- Penasaran kan gimana bentuknya tabel yang udah kita buat ? Sekarang, waktunya ketemu sama tabel identitasNIM dan pegawai. Sintaks untuk melihat tabel:SHOW TABLES;
- Loh. Munculnya kok nama tabel aja nih ? Mana fieldnya ? Oke, akan kita tampilkan field pada tabel. Caranya beda, ga sama kaya di PostgreSQL. Kalo Postgre kan\d nama_tabel ya, ini kita pake sintaks:DESCRIBE nama_tabel; ATAU DESC nama_tabel;
- Hapus
kolom alamat_idn dari tabel pegawai. Jangan lupa tampilkan juga ya.
Kolom alamat_idn has gone. - Tambahkan kolom "pekerjaan_idn" dengan tipedata varchar. NOTE: di MySQL harus dituliskan berapa panjang karakternya.
- Ubah nama tabel pegawai menjadi pekerjaNIM
- Giliran rubah nama field (kolom) pekerjaan_idn menjadi alamat
idn. Eits, jangan pake rename kaya di
Postgre ya. Di MySQL, kita pake CHANGE. Sekalian, Ubah tipe data pada kolom alamat_idn menjadi text. Biar nggak bingung, ini nih sintaksnya:ALTER TABLE nama_tabel CHANGE kolom_lama kolom_baru tipe_data(panjang);
- Hapus tabel pekerjaNIM.
- Buat tabel temporary dengan nama mahasiswa_sementara. Fieldnya, terdiri dari id, nama, ttl.
- Sekarang, membuat kueri DCL dengan MySQL. DCL ini terbagi menjadi dua, yakni REVOKE dan GRANT. Sebelum mengetikkan perintah DCL tersebut, buka lagi CMD, kemudian login dengan user dan password yang udah kamu buat.
- Gunakan GRANT untuk memberi semua hak akses tabel kepada salah satu user. Ketikkan query berikut pada CMD dengan user root.GRANT ALL ON TABLE nama_tabel TO user;
Pada CMD dengan user kita, ketikkan : SELECT * FROM nama_tabel;
- Gunakan REVOKE untuk menghapus semua hak akses tabel kepada salah satu user. Kerikkan query berikut pada CMD dengan user root.REVOKE ALL ON TABLE nama_tabel FROM user;
Pada CMD dengan user kita, ketikkan :SELECT * FROM nama_tabel;Hal ini digunakan untuk pengecekan hak akses
- Sekarang, kembalikan lagi hak akses user kamu dengan ketikkan GRANT.
- Kemudian, hapus salah satu hak akses, misalkan delete.
Maka:Nothing happend. Masih bisa di akses tabelnya, tetapi tidak dapat memberikan perintah delete kepada tabel tersebut.
- The last, Inheritance. Sekedar info ya, dalam MySQL tidak terdapat inheritance atau pewarisan tabel.
lanjut tugas rumah yang kedua: DATABASE dan TABEL dari MODUL 1
Ini nih, tugas rumah yang kedua. Dari tugas praktikum pertama (yakni membuat ERd suatu sistem informasi), sekarang dibuat database dan tabelnya menggunakan query di MySQL. Sebelumnya, persembahkan saya untuk menampilkan ERd dari modul pertama.
Sistem Informasi Apotik SegerWaras ini dibuat dengan enam entitas (tabel). Masing-masing tabel memiliki primary key untuk mencegah redundansi data. Ada beberapa tabel yang saling berelasi, sehingga selain memiliki primary key juga memiliki foreign key.
- Langsung saja, kita mulai membuat database dengan nama apotik.
- Aktifkan database apotik
- Membuat tabel pembeli dengan field : id_pembeli, nama_pembeli, alamat_pembeli
- Ini adalah hasil penampakan pembuatan tabel pembeli.
- Membuat
tabel petugas dengan field : id_petugas, nama_petugas,
alamat_petugas, kontak_petugas,
- Membuat tabel obat dengan field : id_obat, nama_obat, jenis_obat, harga_obat
- Membuat tabel jabatan dengan field : id_jabatan, id_petugas, nama_jabatan;
- Membuat tabel gaji dengan field : id_gaji, id_petugas, id_jabatan, jumlah_gaji
- Membuat tabel transaksi dengan field : id_transaksi, id_petugas, id_pembeli, id_obat, nama_transaksi
Dan ini hasil tabel yang telah kita buat :
D. EVALUASI PERBEDAAN MySQL DAN PostgeSQL
Cara LOGIN
PostgreSQL: Langsung masukkan user dan password di awal
MySQL: Ketikkan query mysql -u nama_user -p lalu masukkan password
Menampilkan tabeL
PostgreSQL :\z
MySQL: SHOW table
Menampilkan field / kolom pada tabel
PoStgreSQL: \d nama_tabel
MySQL : DESC nama_tabeL
Merubah nama kolom
PostgreSQL :ALTER TABLE nama_tabe RENAME COLUMN "nama_kolom_lama" TO "nama_kolom_baru";
MySQL: ALTER TABLE nama_tabel CHANGE kolom_lama kolom_baru tipe_data(panjang);
Mengubah tipe data
PostgreSQL: ALTER TABLE nama_tabel ALTER COLUMN "nama_kolom" type nama_tipe_pengganti;
MySQL: ALTER TABLE nama_tabel MODIFY "nama_kolom" type nama_tipe_pengganti;
Memasukkan Panjang karakter
PostgreSQL: Tidak harus dituliskan
MySQL: Harus dituliskan
Membuat tabel inheritance
PostgreSQL: CREATE TABLE nama_tabel (nama_kolom tipedata keterangan , nama_kolom tipedata keterangan) inherits (tabelyanglain);
MySQL: Tidak Ada
E. KESIMPULAN
Dalam pembuatan tabel, terlebih dahulu harus disiapkan kolom-kolom (field) yang menyusun kerangka tabel tersebut. Selain itu, diperlukan pengetahuan yang cukup tentang bahasa SQL terutama DDL (Data Definition Language) dan DCL (Data Control Language). Karena, dengan dua bahasa ini kita akan dimudahkan dalam memanajemen tabel apapun DBMSnya.
Semoga, dalam uraian praktikum modul 2 ini bisa membuat pembaca faham tentang bagaimana cara memanajemmen tabel dengan benar, baik menggunakan PostgreSQL maupun dengan MySQL.
Mohon untuk pembaca, silahkan memberi komentar dibawah ini. :) Terima Kasih.
F. Daftar Pustaka
Nugroho, Bunafit. 2009. Panduan Lengkap Menguasai Perintah SQL. Jakarta: Media Kita
Sutanta, Edhy. 2004. Sistem Basis Data. Yogyakarta: Graha Ilmu
Modul 2 Manejemen Tabel