A. Landasan Teori
a. Tabel
b. PostgreSQL
1. Membuat Tabel
Catatan :
· Tabel harus memiliki primary key, artinya dalam pembuatan tabel haruslah terdapat sekelompok kolom (field) yang menyebabkan setiap baris (record) dalam tabel tersebut tidak sama.
· Deklarasi primary key tidak boleh kosong (null), jadi kita harus mendeklarasikan sebagai not null. Namun secara default PostgreSQL menganggapnya sebagai nullable (boleh kosong), jika waktu pengisian tidak menyebutkan null atau not null.
Struktur query yang digunakan membuat tabel dengan dua kolom:
CREATE TABLE [NAMA TABEL] ([NAMA KOLOM] [SPASI] [TIPE DATA] [SPASI] [KETERANGAN] , [NAMA KOLOM] [SPASI] [TIPE DATA] [SPASI] [KETERANGAN]);
Untuk melihat struktur tabel yang telah dibuat ketikkan perintah “\d”.
Struktur query yang digunakan menghapus tabel adalah:
DROP TABLE [NAMA TABEL];
2. Manipulasi Tabel
Dalam pembuatan tabel sebaiknya direncanakan field dan tipe datanya untuk meminimalisir kesalahan saat tabel telah berisi data. Namun meskipun begitu bukan berarti tabel tidak bisa diubah dan dihapus. PostgreSQL telah menyediakan utilitas untuk manipulasi ini dan perllu diingat hal ini bukan manipulasi data melainkan manipulasi struktur tabelnya.
Struktur query yang digunakan untuk menghapus kolom :
ALTER TABLE [NAMA TABEL] DROP COLUMN “[NAMA KOLOM]”;
Struktur query yang digunakan untuk menambah kolom:
ALTER TABLE [NAMA TABEL] ADD COLUMN “[NAMA KOLOM] ” [SPASI] [TIPE DATA];
Struktur query yang digunakan untuk mengubah nama tabel :
ALTER TABLE [NAMA TABEL ASAL] RENAME TO [NAMA TABEL BARU];
Struktur query yang digunakan untuk mengubah nama kolom :
ALTER TABLE [NAMA TABLE] RENAME COLUMN “[NAMA KOLOM ASAL]” TO [NAMA KOLOM BARU] ;
Struktur query yang digunakan untuk menambahkan primary key pada tabel :
ALTER TABLE [NAMA TABEL] ADD PRIMARY KEY ([NAMA KOLOM]);
3. Temporary Tabel
Temporary tabel sifatnya hanya sementara artinya akan aktif hanya ketika kita sedang berada atau login ke database namun ketika kita logout dari psql database maka secara otomatis temporary tabel akan terhapus.
Struktur query yang digunakan membuat tabel dengan dua kolom:
CREATE TEMPORARY TABLE [NAMA TABEL] ([NAMA KOLOM] [SPASI] [TIPE DATA] [SPASI] [KETERANGAN] , [NAMA KOLOM] [SPASI] [TIPE gran allDATA] [SPASI] [KETERANGAN]);
4. GRANT dan REVOKE
Pada saat membuat tabel pada user tertentu maka hanya user tersebut dan user postgres yang dapat mengakses tabel itu. Namun jika kita ingin agar tabel yang telah dibuat pada user kita dapat diakses oleh user tertentu atau semua user yang berada pada PostgreSQL, maka semua itu dapat dilakukan dengan perintah GRANT. Jika ingin mencabut hak akses kita bisa menggunakan perintah REVOKE.
Berikut struktur penggunaan GRANT untuk semua hak akses :
GRANT ALL ON TABLE [NAMA TABEL] TO [NAMA USER];
Berikut struktur penggunaan REVOKE untuk semua hak akses :
REVOKE ALL ON TABLE [NAMA TABEL] FROM [NAMA USER];
Struktur query untuk menghapus salah satu hak akses, misalnya UPDATE :
REVOKE UPDATE ON TABEL [NAMA TABEL] FROM [NAMA USER];
Struktur query untuk memberi salah satu hak akses, misalnya DELETE :
GRANT DELETE ON TABEL [NAMA TABEL] TO [NAMA USER];
5. Turunan (Inheritance)
INHERITANCE dipergunakan jika ingin membuat sebuah tabel baru yang berhubungan dengan tabel yang ada, dengan kata lain turunan tabel pertama.
Struktur penggunaan query INHERITANCE :
CREATE TEMPORARY TABLE [NAMA TABEL] ([NAMA KOLOM] [SPASI] [TIPE DATA] [SPASI] [KETERANGAN] , [NAMA KOLOM] [SPASI] [TIPE DATA] [SPASI] [KETERANGAN]) INHERITS (NAMA TABEL INDUK);
6. Hubungan Antar Tabel /Relasi (References)
Dalam hal hubungan antar tabel, ada beberapa syarat yang harus terpenuhi seperti, antara tabel yang ingin dihubungkan harus memiliki sebuah field dengan tipe data yang sama. Dengan kata lain ada tabel yang memiliki primary key sebagai kunci untuk menghubungkan ke tabel yang lain dimana terdapat field yang mempunyai tipe data yang sama dengan kata lain yang disebut foreign key. Misalnya, terdapat tabel barang dan macam_barang. Berikut query kedua tabel tersebut :
CREATE TABLE barang (bar_id INTEGER NOT NULL, bar_nama VARCHAR(15), mac_id INTEGER NOT NULL REFERENCE macam_barang, PRIMARY KEY (bar_id, mac_id));
CREATE TABLE macam_barang (mac_id INTEGER NOT NULL, mac_nama VARCHAR(15), mac_guna VARCHAR(40), PRIMARY KEY (mac_id));
Barang
Bar_id
Bar_nama
Mac_id
Macam_barang
Mac_id
Mac_nama
Mac_guna
c. MySQL
1. Membuat Tabel
Untuk membuat tabel dalam MySQL, harus dikoneksikan dahulu salam database, acranya dengan mengetikkan kode query “use nama_database;”, kemudian bisa dilanjutkan membuat tabel dengan query code:
CREATE TABLE nama_tabel (
field1 tipe(panjang),
field2 tipe(panjang),
...
fieldn tipe(panjang),
PRIMARY KEY (field_key)
);
Contoh:
CREATE TABLE pelanggan (
id_pelanggan varchar(5) NOT NULL,
nm_pelanggan varchar(30) NOT NULL,
alamat text,
telepon varchar (20),
email varchar (50),
PRIMARY KEY(id_pelanggan)
);
Selanjutnya untuk melihat tabel mhs sudah benar benar sudah ada atau belum, ketikkan perintah berikut ini :
SHOW TABLES;
Untuk melihat struktur tabel secara lebih detail, cobalah perintah
atau query sebagai berikut :
DESC nama_tabel;.
2. Manipulasi Tabel
Untuk mengubah struktur suatu tabel, bentuk umum perintah SQL-nya
sebagai berikut :
ALTER TABLE nama_tabel alter_options;
Beberapa contoh variasi perintah ALTER untuk mengubah struktur suatu tabel antara lain :
Menambahkan field ke tabel
ALTER TABLE nama_tabel ADD nama_field tipe_data keterangan;
Menambahkan primary key pada suatu tabel
ALTER TABLE nama_tabel ADD PRIMARY KEY(field);
Mengubah tipe field menjadi varchar dalam tabel
ALTER TABLE nama_tabel MODIFY nama-field varchar(8) NOT
NULL;
Menghapus field dari tabel
ALTER TABLE nama_tabel DROP nama_field;
Untuk mengubah nama suatu tabel, dapat menggunakan perintah SQL:
RENAME TABLE pelanggan TO plg;
ALTER TABLE plg RENAME TO pelanggan;
Untuk menghapus sebuah tabel, bentuk umum dari perintah SQL adalah
sebagai berikut :
DROP TABLE nama_tabel;
3. Temporary Tabel
Untuk membuat temporary tabel dalam MySQL, perintah query seperti di bawah ini:
CREATE TEMPORARY TABLE NAMA_TABEL (nama_field tipe_data keterangan, nama_field tipe_data keterangan);
4. GRANT dan REVOKE
Untuk mengatur hak akses di MySQL, pada dasarnya kita menggunakan
bentuk perintah GRANT dan REVOKE.
Berikut ini bentuk umum perintah GRANT dan REVOKE secara
sederhana :
GRANT priv_type
ON {tbl_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY 'password']
[WITH GRANT OPTION];
REVOKE priv_type
ON {tbl_name | * | *.* | db_name.*}
FROM user_name;
Berikut ini pilihan untuk priv_type dalam bentuk umum perintah
GRANT dan REVOKE di atas:
ALL PRIVILEGES FILE RELOAD
ALTER INDEX SELECT
CREATE INSERT SHUTDOWN
DELETE PROCESS UPDATE
DROP REFERENCES USAGE
Perintah GRANT dan REVOKE dapat digunakan untuk membuat user
barumaupun mengatur hak akses user yang sudah ada dengan hak akses (privileges)tertentu. Tingkatan hak akses user dapat terbagi menjadi
tingkatan global(tersimpan di tabel mysql.user), database (tersimpan di
tabel mysql.host danmysql.db), tabel (tersimpan di tabel mysql.tables_priv) dan kolom (tersimpan di tabel mysql.columns_priv).
Setiap perubahan hak akses di MySQL, termasuk menambahkan user
baru,tidak akan berlaku sebelum diakhiri dengan perintah
FLUSH PRIVILEGES;.
B. Hasil Praktikum dan Tugas Rumah
HASIL PRAKTIKUM
1. PostgreSQL
a. Silakan masuk dalam akun PostgreSQL, gunakan SQL Shell.
b. Pertama, silakan membuat user akun lain untuk nanti dilakukan dalam percobaan. Misalkan saja kita namakan dan diberi password “user1”. Query nya, CREATE USER USER1 WITH CREATEDB PASSWORD ‘USER1’;
c. Kita buat tabel idnetitasnim, dengan ketentuan seperti query berikut: CREATE TABLE identitasNIM (Id_idn integer not null, namaDepan_idn varchar(10), namaBelakang_idn varchar(10), tgl_lahir date, status_idn boolean, alamat_idn text);. Jika sudah, kita coba tampilkan table nya dengan mengetikkan “\d identitasNIM;”.
d. Lalu, kita buat lagi tabel pegawai, dengan ketentuan yang sama seperti tabel identitasNIM. CREATE TABLE pegawai (Id_idn integer not null, namaDepan_idn varchar(10), namaBelakang_idn varchar(10), tgl_lahir date, status_idn boolean, alamat_idn text);. untuk menampilkan tabel yang telah dibuat, ketikkan \d pegawai;.
e. Untuk melihat tabel apa saja yang telah dibuat, ketikkan “\z”.
f. Kemudian, menghapus kolom/ field alamat_idn, caranya ketik ALTER TABLE pegawai DROP column “alamat_idn”;. Lakukan pengecekan dengan “\d pegawai;”.
g. Lalu, kita akan menambahkan field pekerjaan_idn pada tabel pegawai. Querynya seperti: ALTER TABLE pegawai ADD COLUMN “pekerjaan_idn” varchar(15);. Lakukan pengecekan “\d pegawai”.
h. Rubah nama tabel pegawai menjadi pekerjaanNIM. Querynya: ALTER TABLE PEGAWAI RENAME TO PEKERJAANNIM;. Iihat tabelnya dengan “\z”.
i. Merubah nama field pekerjaan_idn menjadi alamat_idn dalam tabel pekerjaanNIM. ALTER TABLE pekerjaannim RENAME COLUMN “pekerjaan_idn” to “alamat_idn;. Tampilkan hasilnnya “\d pekerjaannim”.
j. Merubah tipe data field alamat_idn yang semula varchar menjadi text. ALTER TABLE pekerjaannim ALTER COLUMN alamat_idn TYPE TEXT;. Tampilkan hasilnya “\d pekerjaannim”.
k. Setelah itu, hapus tabel pekerjaannim, dengan cara DROP TABLE pekerjaannim;. Lihat hasilnya “\z”.
l. Membuat temporary table dengan ketentuan seperti di bawah ini. CREATE TEMPORARY TABLE mahasiswa_sementara ( id integer not null, nama varchar(35), tgl_lahir date);. Tampilkan tabel temporarynya “\d mahasiswa-sementara”,
m. Hapus hak ases user 1 terhadap tabel identitasnim. REVOKE ALL ON TABLE identitasnim FROM USER1;.
n. Untuk mengecek sudah direvoke apa belum, masuk memakai akun user lain dalam SQL Shell, ketikkan SELECT * FROM identitasnim;.
o. Untuk memberikan kekbali hak aksespada akun user1, kita grant kembali, GRANT ALL ON TABLE identitasnim to user1;.
p. Cek kembali menggunakan akun user1, SELECT * FROM identitasnim;. Sekarang sudah bisa diakses.
q. Tutup kembali hak akses SELECT kepada akun user1. “REVOKE SELECT ON TABLE identitasnim FROM user1;”.
r. Lakukan pengecekan dalam akun user1, akan muncul tampilan denied,
s. Membuat tabel gaji, dengan ketentutan seperti di bawah ini. Namun, dilakukan dengan cara inherits. CREATE TABLE gaji (gaji_kotor integer, pajak integer, gaji_bersih integer) inherits (identitasnim);. Lihat tabelnya “\z”, lalu munculkan strukturnya “\d gaji”.
2. MySQL
a. Masuk ke dalam akun super user MySQL, caranya dengan “mysql -h localhost –u root”.
b. Membuat akun dengan username dan password “user1”. Caranya ketika “CREATE USER ‘user1’ @’localhost’ identified by ‘user1’;”
c. Kita buat database praktikum2 untuk menaruh hasil percobaan kali ini. Caranya ketik “CREATE DATABASE praktikum2;”.
d. Jika sudah berhasil, kita koneksikan databasenya, dengan cara “USE praktikum2;”.
e. Kita buat tabel dengan nama identitasNIM dengan ketentuan seperti di bawah ini. “CREATE TABLE identitasNIM (id_idn integer not null, namaDepan_idndatevarchar(10), namaBelakang_idn varchar(10), tgl_lahir date, status_idn boolean, alamat_idn text);”. Pastikan bahwa tabel sudah selesai dibuat dengan “show tables;”. Setelah itu, lihat struktur tabel secara lengkap “desc identitasnim;”.
f. Dengan langkah seperti di atas, kita buat lagi tabel pegawai.
g. Kita hapus field alamat_idn dalam tabel pegawai, caranya “ALTER TABLE pegawai DROP alamat_idn;”. Lihat strukturnya “desc pegawai;”.
h. Setelah itu, tambahkan field pekerjaan_idn dalam tabel pegawai. “ALTER TABLE pegawai ADD pekerjaan_idn varchar(15);”.
i. Rubah nama tabel pegawai menjadi pekerjaanNIM. “RENAME TABLE pegawai TO pekerjaanNIM;”. Tampilkan bahwa tabel sudah berhasil dirubah “show tables;”.
j. Dalam tabel pekerjaannim, rubah nama field pekerjaan_idn mejadi alamat_idn dengan tipe data text. “ALTER TABLE pekerjaannim change pekerjaan_idn alamat_idn text;”. Lihat hasilnya “desc pekerjaannim;”.
k. Pada tabel pekerjaannim, kita beri primary key pada tabelnya. Dengan cara “ALTER TABLE pekerjaannim ADD PRIMARY KEY (id_idn);”. Lihat hasilnya “desc pekerjaannim;”.
l. Jika sudah, hapus tabel pekerjaannim “DROP TABLE pekerjaannim”. Setelah itu lihat “show tables;”.
m. Kita membuat temporary tabel dengan ketentuan seperti di bawah ini. “CREATE TEMPORARY TABLE mahasiswa_sementara (id integer not null, nama varchar(35), tgl_lahir date);”.
n. Tampilkan struktur lengkapnya dari tabel temporary yang telah dibuat “desc mahasiswa_sementara;”.
o. Mari kita REVOKE tabel yang telah dibuat kepada user1, agar tidak bisa diakses. “REVOKE ALL PRIVILEGES ON *.* FROM ‘user1’ @’localhost’ identified by ’user1’;”.
p. Untuk mengecek, masuk pada user1, kemudian koneksokan terlebih dahualu pada database praktikum, masuk pada “desc identitasnim;”, akan muncul bahwa anda tidak bisa mnegaksesnya alias denied.
q. Lalu, kita cebo untuk membuka hak akses kepada user1. “GRANT ALL PRIVILEGES ON *.* TO ‘user1’ @’localhost’ identified by ‘user1’ WITH GRANT OPTION;”.
r. Masuk lagi ke akun user1 untuk mengecek apa bisa diakses tabel identitasnim-nya. Koneksikan kepada database praktikum2 dahulu, lalu “desc identitasnim;”.
s. Masuk pada akun root kembali, sekarang “REVOKE SELECT pada akun user1. “REVOKE SELECT *.* FROM ‘user1’ @’localhost’;”.
t. Silakan cek kembali pada akun user1, akan kembali di-denied akun Anda saat mengakses tabel identitasnim.
TUGAS RUMAH
1. QUERY
2. TABEL
C. Evaluasi Perbandingan DBMS PostgreSQL dengan MySQL
- Dalam membuat user, perintah querynya berbeda.
- Mengoneksikan database dalam postgreSQL dan MySQL berbeda.
- Untuk cara membuat tabelnya kira-kira sama dalam querynya.
- Dalam melihat daftar tabel, ada perbedaan query. (show dan \z)
- Query untuk menampilkan struktur tabel berbeda. (desc dan \d)
- Dalam menghapus dan menambahkan field, ada perbedaan dengan adanya tulisan “column serta tanda petik”.
- Dalam rename tabel, hanya terjadi perubahan posisi kata, serta penambahan kata alter.
- Ketika merubah field, perbedaannya langsung diminta memasukkan tipe data field pengganti dalam MySQL
- Dalam GRANT dan REVOKE, di MySQL perintah querynya lebih panjang dibandingkan PostgreSQL.
- Untuk mengecek sudah di GRANT atau REVOKE, dalam postgreSQL mengecek melalui “SELECT * FROM NAMA_TABEL;”, kalau MySQL melalui “DESC NAMA_TABEL;”.
D. Kesimpulan
Tabel terdiri baris dan kolom. Dalam bahasa SQL, Anda bisa menerapkannya dalam database seperti MySQL maupun Postgre. Anda bisa membuat tabel, memanipulasi tabel, membuat temporary tabel, memberi perintah keamanan seperti GRANT dan REVOKE, serta bisa memberi turunan tabel / inheritance. Dalam database postgreSQL dan MySQL terdapat banyak perbedaan dalam perintah querynya, namun tidak begitu jauh.
Sebaiknya jika mempelajari PostgreSQL dan MySQL harus berkonsentrasi oenuh, agar keduanya tidak saling tertukar. Karena mempelajari dua database sekaligus. Mungkin seharusnya hanya mempelajarri secara fokus salah satu database saja, sedangkan database lain cukup mengerti dan tahu saja agar tidak tercampur querynya satu sama lain.
E. Daftar Pustaka
Kadir Abdul, 2000, Konsep & Tuntutan Praktis Basis Data, Yogyakarta: Andi.
Materi Praktikum Desain Basis Data 2013.pdf
Sholichin, Ahmad. 2010. MySQL Dari Pemula Hingga Mahir. Universitas Budi Luhur : Jakarta.
http://dendieisme.blogspot.com/2010/09/mysql-manajemen-user.html?m=1
http://firmanhidayah.blogspot.com/2012/04/mysql-temporary-tables.html?m=1
http://yasnum.wordpress.com/tutorial/data-base/bab-1-sekilas-tentang-server-database-mysql/
http://www.duniailkom.com/tutorial-belajar-mysql-cara-membuat-dan-menghapus-user-mysql-create-user/
Join The Community