Assalamu'alaikum , pada post kali ini saya akan membahas tentang perintah Dasar SQL. Oke teman-teman kita mulai.
   A.  Dasar Teori
Apa itu SQL? SQL merupakan singkatan dari Structured Query Language. SQL atau juga sering disebut sebagai query merupakan suatu bahasa (language) yang digunakan untuk mengakses database. SQL dikenalkan pertama kali dalam IBM pada tahun 1970 dan sebuah standar ISO dan ANSII ditetapkan untuk SQL. Standar ini tidak tergantung pada mesin yang digunakan (IBM, Microsoft atau Oracle). Hampir semua software database mengenal atau mengerti SQL. Jadi, perintah SQL pada semua software database hampir sama.
Terdapat 3 (tiga) jenis perintah SQL, yaitu :
1.      DDL atau Data Definition Language
DDL merupakan perintah SQL yang berhubungan dengan pendefinisian suatu struktur database, dalam hal ini database dan table. Beberapa perintah dasar yang termasuk DDL ini antara lain :
·         CREATE
·         ALTER
·         RENAME
·          DROP
2.      DML atau Data Manipulation Language
DML merupakan perintah SQL yang berhubungan dengan manipulasi atapengolahan data atau record dalam table. Perintah SQL yang termasuk dalam DML antara lain :
·         SELECT
·         INSERT
·         UPDATE
·         DELETE
Nah, yang akan banyak kita pelajari kali ini adalah DML ini, karena DDL dan DCL sudah kita pelajar di post sebelumnya.
3.      DCL atau Data Control Language
DCL merupakan perintah SQL yang berhubungan dengan manipulasi user dan hak akses (priviledges). Perintah SQL yang termasuk dalam DCL antara lain :
·         GRANT
·         REVOKE
Karena yang akan dibahas di tugas praktikum saya kali ini adalah tentang perintah dasar SQL bagian DML, berikut ini adalah struktur querynya.
1.      Menambah Record dengan INSERT
Bentuk umum perintah SQL untuk menambahkan record atau data ke dalam suatu tabel adalah sebagai berikut :
INSERT INTO nama_tabel VALUES (‘nilai1’,’nilai2’,...);
atau dapat dengan bentuk sebagai berikut :
INSERT INTO nama_tabel(field1,field2,...) VALUES (‘nilai1’,’nilai2’,...);
atau dapat juga dengan bentuk sebagai berikut :
INSERT INTO nama_tabel SET field1=’nilai1’, field2=’nilai2’,...;
2.      Mengedit Record dengan UPDATE
Proses update bisa sewaktu-waktu dilakukan jika terdapat data atau record dalam suatu tabel yang perlu diperbaiki. Proses update ini tidak menambahkan data (record) baru, tetapi memperbaiki data yang lama. Perubahan yang terjadi dalam proses update bersifat permanen, artinya setelah perintah dijalankan tidak dapat di-cancel (undo). Bentuk umum perintah SQL untuk mengedit suatu record atau data dari suatu tabel adalah sebagai berikut :
UPDATE nama_tabel SET field1=’nilaibaru’[WHERE kondisi];
Pada perintah untuk update di atas :
·         UPDATE merupakan perintah dasar untuk mengubah record tabel.
·         nama_tabel merupakan nama tabel yang akan diubah recordnya.
·         Perintah SET diikuti dengan field-field yang akan diubah yang mana diikuti juga dengan perubahan isi dari masing-masing field. Untuk mengubah nilai dari beberapa field sekaligus, gunakan koma (,) untuk memisahkan masingmasing field.
·         Perintah WHERE diikuti oleh kondisi tertentu yang menentukan record mana yang akan diedit (diubah). Perintah WHERE ini boleh ada boleh juga tidak. Jika WHERE tidak ditambahkan pada perintah update maka semua record dalam tabel bersangkutan akan berubah.
3.      Menghapus Record dengan DELETE
Proses delete dilakukan jika terdapat data atau record dalam suatu tabel yang perlu dihapus atau dihilangkan. Perubahan yang terjadi dalam proses delete bersifat permanen, artinya setelah perintah dijalankan tidak dapat di-cancel (undo). Jadi berhati-hatilah dengan perintah delete ! Bentuk umum perintah SQL untuk menghapus suatu record atau data dari tabel adalah sebagai berikut :
DELETE FROM nama_tabel [WHERE kondisi];
Pada perintah untuk delete di atas :
·         DELETE FROM merupakan perintah dasar untuk menghapus suatu record dari tabel.
·         nama_tabel merupakan nama tabel yang akan dihapus recordnya.
·         Perintah WHERE diikuti oleh kondisi tertentu yang menentukan record mana yang akan dihapus (didelete). Perintah WHERE ini boleh ada boleh juga tidak. Namun demikian, jika WHERE tidak ditambahkan pada perintah delete maka emua record dalam tabel bersangkutan akan terhapus. Jadi jangan lupa menambahkan WHERE jika kita tidak bermaksud mengosongkan tabel.
4.      Menampilkan Record dengan SELECT
Perintah SELECT digunakan untuk menampilkan sesuatu. Sesuatu di sini bisa berupa sejumlah data dari tabel dan bisa juga berupa suatu ekspresi. Dengan SELECT kita bisa mengatur tampilan atau keluaran sesuai tampilan yang diinginkan.
Bentuk dasar perintah SELECT data dari tabel adalah sebagai berikut :
SELECT [field | *] FROM nama_tabel [WHERE kondisi];
            Sumber: http://achmatim.net
                            http://www.duniailkom.com
  B. Hasil Praktikum
Dalam bagian ini, saya akan menjawab soal praktikum di kelas praktikum saya di praktikum desain basis data.
Berikut ini adalah tugas praktikum saya.
 

   



        1.   Gunakan tabel mahasiswa, tambahkan kolom yang diperlukan kemudian masukkan 3 data mahasiswa sebagai berikut :
             Nim : 12
Nama : edi
Alamat : malang
No.telp : 0856453428
Fakultas : SAINTEK
Nim : 13

Nama : sinta
Alamat : jogja
No.telp : 0813347565675
Fakultas : SAINTEK
Nim : 14
Nama : luki
Alamat : ponorogo
No.telp : 082576568798
Fakultas : PSIKOLOGI
           2.  Tampilkan data mahasiswa berupa nim dan nama.
           3.  Tampilkan data mahasiswa berdasarkan nim salah satu mahasiswa. Sehingga yang muncul hanya salah satu data mahasiswa.
          4.  Tampilkan data mahasiswa dan fakultas. Ambil berdasarkan nim, nama mahasiswa, nama fakultas.
          5.   Hapus data mahasiswa yang memiliki nim : 13.
          6.  Ubah data berupa alamat : solo dan no.telp : 0857688788 yang memiliki nim 12
         7. Tampilkan data mahasiswa dan urutkan dari besar ke kecil berdasarkan nim mahasiswa. Kemudian tampilkan data fakultas urutkan secara ascending berdasarkan kolom ke-2.
  8.  Tampilkan seluruh data mahasiswa beserta seluruh data fakultasnya. 
  9. Tampilkan seluruh mahasiswa yang berada di fakultas “SAINTEK”. 
  10. Tampilkan seluruh mahasiswa yang tidak berada di fakultas “SAINTEK”.  
  11. Hapus data fakultas “SAINTEK”. 


  •          Menggunakan SQL Shell (psql) dari PostgreSQL
Pertama, kita harus masuk ke SQL Shell seperti biasanya.
1.      Untuk menjawab soal nomor 1, kita harus membuat tabel fakultas dan tabel mahasiswa. Kita membuat tabel fakultas dulu karena kita harus menggunakan tabel fakultas sebagai reference untuk membuat tabel mahasiswa. Berikut ini adalah query nya.  Create table fakultas (id_fak integer not null, nama_fak varchar(25), primary key(id_fak)); seperti di bawah ini.
Lalu untuk membuat tabel mahasiswa, querynya adalah create table mahasiswa (nim_mah integer nit null, nama_mah varchar(30), alamat_mah varchar(35), no_telp varchar(15), id fak integer not null references fakultas, primary key(nim_mah, id_fak)); seperti gambar di atas.
Kemudian kita dapan memasukkan data ke tabel fakultas dan tabel mahasiswa menggunakan perintah query insert. Untuk memasukkan data pada tabel fakultas, ketikkan insert into fakultas values (1, ‘Saintek’), (2, ‘Psikologi’); dan cek di tabel dengan mengetik select*from fakultas;. Kemudian masukkan data-data mahasiswa yang ada pada soal nomor 1 menggunakan perintah insert seperti tabel fakultas tersebut seperti gambar di bawah ini.

 

2.      Untuk menampilkan data mahasiswa berupa nim dan nama, ketikkan query select nim_mah, nama_msh from mahasiswa; sehingga akan muncul tampilan seperti di bawah ini.

3.      Untuk mahasiswa berdasarkan nim salah satu mahasiswa, misalnya nim 12,  querynya yaitu select*from mahasiswa where nim_mah=12;


4.      Untuk menampilkan data mahasiswa dan fakultas berdasarkan nim, nama mahasiswa, nama fakultas querynya yaitu selesct nim_mah, nama_mah, nama_fak from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak;
5.      Untuk menghapus data mahasiswa yang memiliki nim : 13, ketikkan delete from mahasiswa where nim_mah=13; kemudian cek di tabel mahasiswa dengan mengetik select*from mahasiswa;
6.      Untuk mengubah berupa alamat : solo dan no.telp : 0857688788 yang memiliki nim 12, ketikkan query update mahasiswa set alamat_mah=’solo’ where nim_mah=12; dan update mahasiswa set no_telp=’0857688788’ where nim_mah=12; atau kita juga bisa mengetikkan update mahasiswa set alamat_mah=’solo’, no_telp=’0857688788’ where nim_mah=12;
7.      Untuk menampilkan data mahasiswa dan urutkan dari besar ke kecil berdasarkan nim mahasiswa, ketikkan select*from mahasiswa order by nim_mah desc; dan untuk menampilkan data fakultas urutkan secara ascending berdasarkan kolom ke-2 yaitu nama fakultas ketikkan select*from fakultas order by nama_fak; yang akan secara otomatis urut secara ascending karena default nya adalah ascending.
8.      Untuk menampilkan seluruh data mahasiswa beserta seluruh data fakultasnya, querynya yaitu select nim_mah, nama_mah, alamat-mah, no_telp, nama_fak from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak;
9.      Untuk menampilkan seluruh mahasiswa yang berada di fakultas “SAINTEK” yang mempunyai id_fak=1, maka querynya adalah select*from mahasiswa where id_fak=1;

10.      Untuk menampilkan seluruh mahasiswa yang tidak berada di fakultas “SAINTEK”, maka querynya adalah select*from mahasiswa where id_fak!=1;
11.      Untuk menghapus data fakultas “SAINTEK”, kita juga harus menghapus data-data yang berelasi dengannya, yaitu mahasiswa “SAINTEK” di tabel mahasiswa. Ketikkan delete from mahasiswa where id_fak=1; kemudian ketikkan delete from fakultas where id_fak=1;. Untuk mengeceknya, ketik select*from fakultas;

  • Menggunakan XAMPP Shell dari MySQL

Pertama, kita harus masuk dulu di XAMPP Shell. Di sini saya menggunakan user saya yaitu baiti, dan menggunakan database baiti13650070.
1.      Untuk menjawab soal nomor 1, kita harus membuat tabel fakultas dan tabel mahasiswa. Kita membuat tabel fakultas dulu karena kita harus menggunakan tabel fakultas sebagai reference untuk membuat tabel mahasiswa. Berikut ini adalah query nya.  Create table fakultas (id_fak integer not null, nama_fak varchar(25), primary key(id_fak)); seperti di bawah ini.



Lalu untuk membuat tabel mahasiswa, querynya adalah create table mahasiswa (nim_mah integer nit null, nama_mah varchar(30), alamat_mah varchar(35), no_telp varchar(15), id fak integer not null references fakultas, primary key(nim_mah, id_fak)); seperti gambar di atas.
Kemudian kita dapan memasukkan data ke tabel fakultas dan tabel mahasiswa menggunakan perintah query insert. Untuk memasukkan data pada tabel fakultas, ketikkan insert into fakultas values (1, ‘Saintek’), (2, ‘Psikologi’); dan cek di tabel dengan mengetik select*from fakultas;. Kemudian masukkan data-data mahasiswa yang ada pada soal nomor 1 menggunakan perintah insert seperti tabel fakultas tersebut seperti gambar di bawah ini.

2.      Untuk menampilkan data mahasiswa berupa nim dan nama, ketikkan query select nim_mah, nama_msh from mahasiswa; sehingga akan muncul tampilan seperti di bawah ini.
3.      Untuk mahasiswa berdasarkan nim salah satu mahasiswa, misalnya nim 14,  querynya yaitu select*from mahasiswa where nim_mah=14;
4.      Untuk menampilkan data mahasiswa dan fakultas berdasarkan nim, nama mahasiswa, nama fakultas querynya yaitu selesct nim_mah, nama_mah, nama_fak from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak;



5.      Untuk menghapus data mahasiswa yang memiliki nim : 13, ketikkan delete from mahasiswa where nim_mah=13; kemudian cek di tabel mahasiswa dengan mengetik select*from mahasiswa;


6.      Untuk mengubah berupa alamat : solo dan no.telp : 0857688788 yang memiliki nim 12, ketikkan query update mahasiswa set alamat_mah=’solo’, no_telp=’0857688788’ where nim_mah=12;
 7.  Untuk menampilkan data mahasiswa dan urutkan dari besar ke kecil berdasarkan nim mahasiswa, ketikkan select*from mahasiswa order by nim_mah desc; 
    Lalu untuk menampilkan data fakultas urutkan secara ascending berdasarkan kolom ke-2 yaitu nama fakultas ketikkan select*from fakultas order by nama_fak; yang akan secara otomatis urut secara ascending karena default nya adalah ascending.
8.      Untuk menampilkan seluruh data mahasiswa beserta seluruh data fakultasnya, querynya yaitu select nim_mah, nama_mah, alamat-mah, no_telp, nama_fak from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak;
9.      Untuk menampilkan seluruh mahasiswa yang berada di fakultas “SAINTEK” yang mempunyai id_fak=1, maka querynya adalah select*from mahasiswa where id_fak=1;
10.      Untuk menampilkan seluruh mahasiswa yang tidak berada di fakultas “SAINTEK”, maka querynya adalah select*from mahasiswa where id_fak!=1;
11.      Untuk menghapus data fakultas “SAINTEK”, kita juga harus menghapus data-data yang berelasi dengannya, yaitu mahasiswa “SAINTEK” di tabel mahasiswa. Ketikkan delete from mahasiswa where id_fak=1; kemudian ketikkan delete from fakultas where id_fak=1;. Untuk mengeceknya, ketik select*from fakultas;

          C. Tugas Rumah
Tugas rumah dari praktikum saya adalah : Jelaskan evaluasi dari DBMS MySQL dan PostgreSQL dalam blog anda berdasarkan tugas praktikum 1-11. (evaluasi meliputi perbedaan atau kesamaan, kelebihan atau kekurangan, tambahan dari penulis).
Persamaan : Dalam praktikum kali ini, setelah saya mengerjakan nomor 1 sampai nomor 11, semua query yang dipakai sama. Alasannya, karena bahasa yang dipakai oleh kedua DBMS yaitu MySQL maupun PostgreSQL adalah bahasa SQL, yaitu suatu bahasa (language) yang digunakan untuk mengakses database yang sudah memiliki standar ISO dan ANSII ditetapkan untuk SQL. Standar ini tidak tergantung pada mesin yang digunakan (IBM, Microsoft atau Oracle). Jadi teman-teman, hampir semua software database baik MySQL maupu PostgreSQL mengenal atau mengerti SQL. Jadi, perintah SQL pada semua software database hampir sama, termasuk pada praktikum kali ini. 



A.    Evaluasi Perbandingan DBMS MySQL dan DBMS PostgreSQL
Pada bagian ini, saya tidak akan meng-capture satu-satu setiap nomor yang akan saya bandingkan, karena sudah terjawab di bagian tugas rumah tadi, bahwa dalam praktikum kali ini, setelah saya mengerjakan nomor 1 sampai nomor 11, semua query yang dipakai sama. Alasannya, karena bahasa yang dipakai oleh kedua DBMS yaitu MySQL maupun PostgreSQL adalah bahasa SQL, yaitu suatu bahasa (language) yang digunakan untuk mengakses database yang sudah memiliki standar ISO dan ANSII ditetapkan untuk SQL. Standar ini tidak tergantung pada mesin yang digunakan (IBM, Microsoft atau Oracle). Jadi teman-teman, hampir semua software database baik MySQL maupu PostgreSQL mengenal atau mengerti SQL. Jadi, perintah SQL pada semua software database hampir sama, termasuk pada praktikum kali ini.
Apabila kita membicarakan kelebihan dan kekurangan dari DBMS tersebut, menurut saya hampir sama, selama praktikum ini. Karena seperti yang telah kita ketahui persamaan dari keduanya.

E.    . Kesimpulan, Saran, Kritik dan Manfaat bagi Pembaca
1.      Kesimpulan
Setelah melakukan praktikum ini, saya dapat mengambil kesimpulan bahwa hampir semua software termasuk MySQL dan PostgreSQL memiliki perintah-perintah dasar SQL yang sama. Karena seperti sudah saya sebutkan di bagian sebelumnya bahwa SQL adalah bahasa standar yang digunakan oleh kedua DBMS tersebut. Pada praktikum kali ini juga dapat disimpulkan bahwa kita dapat memanipulasi data dalam database seperti menambah, mnampilkan, mengubah serta menghaus data dalam database menggunakan perintah-perintah dasar SQL.
2.      Saran
Diperlukan pembelajaran lebih lanjut mengenai perintah-perintah dasar SQL dalam database menggunakan PostgreSQL maupu MySQL agar praktikan dapat menguasai kedua DBMS tersebut dalam membuat database yang lebih baik.

3.      Kritik
Dalam laporan ini, masih banyak terdapat kekurangan karena terbatasnya pengetahuan saya dalam menguasai 2 DBMS yang digunakan dalam praktikum ini.        
4.      Manfaat
Manfaat yang akan didapat pembaca dalam laporan ini antara lain dapat mengetahui perintah-perintah dasar SQL secara umum, serta dapat mengetahui proses menambah, merubah, menghapus dan menampilkan data menggunakan 2 DBMS yang berbeda. Pembaca juga dapat mengetahui persamaan dari kedua DBMS tersebut.