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);

  1. Tampilkan tabel gaji;



 C. TUGAS RUMAH

      Kali ini, giliran MySQL untuk mengerjakan tugas rumahnya
  1. Aktifkan XAMPP Control Panel
  2. Klik Start pada menu Apache dan MySQL
  3. Buka CMD kalian, Masuk ke direktori mysql/bin.  Lalu login dengan user root. Pake yang default dulu aja ya,,
  4. Sebelum membuat tabel, di MySQL, perlu mengaktifkan database terlebih dahulu. Langsung saja cara mengaktifkannya:USE nama_database;
  5. 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);
  6. Satu lagi ya guys tabelnya. Kali ini dengan nama pegawai. Fieldnya, kalian buat sama aja deh seperti tabel identitasNIM.
  7. Penasaran kan gimana bentuknya tabel yang udah kita buat ? Sekarang, waktunya ketemu sama tabel identitasNIM dan pegawai. Sintaks untuk melihat tabel:SHOW TABLES;
  8. 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;
  9. Hapus kolom alamat_idn dari tabel pegawai. Jangan lupa tampilkan juga ya.

    Kolom alamat_idn has gone.
  10. Tambahkan kolom "pekerjaan_idn" dengan tipedata varchar. NOTE: di MySQL harus dituliskan berapa panjang karakternya. 
  11. Ubah nama tabel pegawai menjadi pekerjaNIM
  12. 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);
      NOTE : Kalau mau ngerubah tipe datanya aja, ini nih sintaksnya :


  13. Hapus tabel pekerjaNIM.
  14. Buat tabel temporary dengan nama mahasiswa_sementara. Fieldnya, terdiri dari id, nama, ttl.
  15. 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.

  16. 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;

  17. 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

  18. Sekarang, kembalikan lagi hak akses user kamu dengan ketikkan GRANT.

  19. 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.
  20. 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.
  1. Langsung saja, kita mulai membuat database dengan nama apotik.
  2. Aktifkan database apotik
  3. Membuat tabel pembeli dengan field : id_pembeli, nama_pembeli, alamat_pembeli
  4. Ini adalah hasil penampakan pembuatan tabel pembeli.
  5. Membuat tabel petugas dengan field : id_petugas, nama_petugas, alamat_petugas, kontak_petugas,


  6. Membuat tabel obat dengan field : id_obat, nama_obat, jenis_obat, harga_obat
  7. Membuat tabel jabatan dengan field : id_jabatan, id_petugas, nama_jabatan;
  8. Membuat tabel gaji dengan field : id_gaji, id_petugas, id_jabatan, jumlah_gaji
  9. 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