Kamis, 09 Oktober 2014

Pengenalan Operator Dasar

PRAKTIKUM IV
PENGENALAN OPERAOR DASAR

Kembali lagi kita membahas tentang materi desain basis data dalam praktikum tahap ke-IV kali ini. Pembahasannya tentang “Pengenalan Operator Dasar” . sebelum memasuki lebih lanjut, telisik dulu ke teorinya yuk.

A. Landasan Teori


Setiap data yang ada di dalam SQL bisa diatur sesuai dengan kebutuhan kalian, guys. Bahasa SQL tersusun dari bermacam-macam key words (kata kunci). Berikut ini  adalah beberapa operator dasar SQL yang musti kita tahu dan pelajari :

AS 

Apa sih AS ?? bukan singkatan dari AliaS loh. Label ini biasanya dipakai sebagai nama lain dari sebuah kolom yang dipilih, selain itu kita juga bisa mengontrol teks sebuah atribut yang digunakan untuk memanggil suatu kolom dengan menggunakan AS. AS digunakan untuk menampilkan label kolom dengan nama lain sehingga yang akan muncul dalam hasil query bukan nama asli kolom, tetapi nama yang mungkin lebih sesuai dan mudah dimengerti. AS digunakan setelah nama kolom yang akan diganti yang kemudian diikuti dengan nama penggantinya.

AND dan OR

AND biasanya dipakai untuk nampilin data dengan dua atau kondisi yang musti dipenuhi, kalo salah satu tidak terpenuhi maka pencarian tidak akan ada hasilnya, dong. Contohnya kalo kita mau mencari data yang nama depannya  ‘Dewi’ dan pekerjaanya ‘programmer’. Kedua kondisi tersebut harus dipenuhi, sehingga apabila dalam tabel terdapat nama rofiq tetapi pekerjaanya konsultan, maka hasil pencarian akan kosong. Sedangkan OR dipakai untuk menampilkan data dengan dua atau lebih kondisi, tetapi pencarian ini bakalan ada hasilnya  meskipun salah satu kondisi saja yang terpenuhi. Contohnya , kalo kita mau  mencari data yang nama depan ‘Dewi’ atau orang lain dengan pekerjaan ‘programmer’. Kedua kondisi tersebut harus dipenuhi minimal salah satu, sehingga apabila dalam tabel tidak ada nama rofiq tetapi ada  pekerjaan konsultan, maka hasil pencarian tetap diperoleh.

BETWEEN

Between dipakai untuk menentukan lebar nilai yang mau di seleksi, penentuan lebar ini dilakukan dengan menentukan nilai terendah dan nilai tertingginya, ya.

LIKE

LIKE digunakan untuk melakukan seleksi atau pemilihan tetapi tidak seperti halnya sama dengan (=) yang cuma mau menampilkan data yang benar-benar sesuai (suitable/match) dengan parameternya, LIKE bakalan menampilkan data yang mengandung string parameter yang dimasukan, meskipun cuma satu karakter saja yang sama.

REGEXP

Regexp disini bukan genre musicnya orang-orang yang khas sama warna merah, hijau, sama kuning loh..(nah loh, itu REGE kalee),  tapi Regexp di sini adalah singkatan dari Reguler Expression yaitu teknik atau cara untuk nyari persamaan-persamaan data dan memanipulasinya. Biasanya lebih sering dipake untuk string. Simbolnya seperti ini “~”. 

DISTINCT

Bisanya digunakan untuk mencegah terjadinya duplikasi pada output sebuah tabel. DISTINCT sering kali diperlukan untuk mengembalikan hasil dari sebuah query dengan tidak terdapat duplikasi, artinya pada hasil outputnya tidak terjadi kesamaan data sedikitpun meskipun pada data sesungguhnya sangat mungkin banyak duplikasi.

SET, SHOW dan RESET

SET itu digunakan untuk melakukan perubahan parameter PostgreSQL, guys. Penggantian dengan menggunakan perintah SET hanya berlaku untuk sekali session saja dimana perintah SET dilakukan. Misalnya perintah SET DATESTYLE  dipakai untuk mengontrol penampilan sebuah data ketika terlihat dalam psql.

LIMIT dan OFFSET

LIMIT dan OFFSET itu untuk membatasi jumlah output dari query berdasarkan jumlah row bukan karena kondisi seperti WHERE.  Bisa dibilang LIMIT itu untuk menentukan jumlah baris yang akan ditampilkan yang dihitung dari baris pertama, sedangkan OFFSET itu sendiri  digunakan untuk menghilangkan row sesuai dengan jumlah yang diberikan pada OFFSET.

UNION, EXCEPT, dan INTERSECT

Hasil dari dua buah query dapat dikombinasikan dengan menggunakan UNION, EXCEPT atau INTERSECT. Kita jelaskan dulu yang UNION. UNION digunakan untuk menggabungkan hasil dua buah query menjadi satu kolom. Untuk dapat melihat atau menampilkan semua duplikat yang ada pada tabel-tabel  maka gunakan perintah UNION ALL. EXCEPT itu kalo dibahasa inggris artinya pengecualian, ini biasanya digunakan untuk menampilkan hanya query pertama saja, sedangkan hasil query kedua tidak akan ditampilkan. Sedangkan INTERSECT ,  hanya akan menampilkan seluruh isi dari data yang memiliki kesaman diantara hasil kedua query tersebut

B. Hasil Praktikum


PostgreSQL


Pertama, nyiapin tabel mahasiswa dan fakultas yang di praktikum sebelumnya yaitu tentang perintah dasar SQL. Trus, tambahin kolom “gender” di tabel Mahasiswa, syntaknya :  
alter table Mahasiswa add column “gender”  varchar(1);
Kali ini saya tidak printscreen karena kebanyakan gambar jadi loading lama alias “lola”. :D


Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]: shinta
Password for user shinta:
psql (9.3.5)
WARNING: Console code page (437) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

postgres=> select*from Mahasiswa;
 nim_mah | nama_mah | alamat_mah | id_fak | no_telp | gender
---------+----------+------------+--------+---------+--------
(0 rows)

postgres=> select*from fakultas;
 id_fak | nama_fak
--------+----------
      1 | SAINTEK
      2 | EKONOMI
(2 rows)

nah ,sudah muncul table mhs dan fakultasnya, tapi saya mau menambahkan fakultas lagi yaitu fakultas “kedokteran”


postgres=> insert into Fakultas values(3,'KEDOKTERAN');
INSERT 0 1
postgres=> select*from fakultas;
 id_fak |  nama_fak
--------+------------
      1 | SAINTEK
      2 | EKONOMI
      3 | KEDOKTERAN
(3 rows)

Abis ntu, kita insert table mhs sampai 7 baris. Kaya begini ..

postgres=> select*from Mahasiswa;
 nim_mah | nama_mah | alamat_mah | id_fak | no_telp | gender
---------+----------+------------+--------+---------+--------
(0 rows)


postgres=> insert into Mahasiswa values (11,'dia','bandung',1,'085725888000','L'
);
INSERT 0 1
postgres=> insert into Mahasiswa values (12,'adit','jogja',2,'085725788000','L')
;
INSERT 0 1
postgres=> insert into Mahasiswa values (13,'paris','jakarta',2,'085725788600','
L');
INSERT 0 1
postgres=> insert into Mahasiswa values (14,'Iqbal','jakarta',3,'085725780990','
L');
INSERT 0 1
postgres=> insert into Mahasiswa values (15,'Dewi','semarang',1,'085725787890','
P');
INSERT 0 1
postgres=> insert into Mahasiswa values (16,'vani','Cimahi',2,'085725781234','P'
);
INSERT 0 1
postgres=> insert into Mahasiswa values (17,'binta','solo',3,'085725781156','P')
;
INSERT 0 1

Kita check pake  select * from Mahasiswa;

postgres=> select*from Mahasiswa;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
      11 | dia      | bandung    |      1 | 085725888000 | L
      12 | adit     | jogja      |      2 | 085725788000 | L
      13 | paris    | jakarta    |      2 | 085725788600 | L
      14 | Iqbal    | jakarta    |      3 | 085725780990 | L
      15 | Dewi     | semarang   |      1 | 085725787890 | P
      16 | vani     | Cimahi     |      2 | 085725781234 | P
      17 | binta    | solo       |      3 | 085725781156 | P
(7 rows)

Kita mulai dengan soal yang pertama, menampilkan data mhs dengan nama dari kolomnya berubah jadi nomor_identitas, nama, alamat, nama_fakultas tanpa harus merubah nama kolom secara permanen.

postgres=> select nim_mah as nomor_identitas, nama_mah as nama, alamat_mah as al
amat, nama_fak as nama_fakultas from Mahasiswa , Fakultas where Mahasiswa.id_fak
=fakultas.id_fak;
 nomor_identitas | nama  |  alamat  | nama_fakultas
-----------------+-------+----------+---------------
              11 | dia   | bandung  | SAINTEK
              12 | adit  | jogja    | EKONOMI
              13 | paris | jakarta  | EKONOMI
              14 | Iqbal | jakarta  | KEDOKTERAN
              15 | Dewi  | semarang | SAINTEK
              16 | vani  | Cimahi   | EKONOMI
              17 | binta | solo     | KEDOKTERAN
(7 rows)

Lanjut ke soal kedua yaitu,  menampilkan nama mahasiswa fakultas saintek yang berjenis kelamin “L” lalu nama mhs fakultas saintek atauberjenis kelamin “L”


postgres=> select*from Mahasiswa where id_fak=1 and gender='L';
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
      11 | dia      | bandung    |      1 | 085725888000 | L
(1 row)

postgres=> select*from Mahasiswa where id_fak=1 or gender='L';
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
      11 | dia      | bandung    |      1 | 085725888000 | L
      15 | Dewi     | semarang   |      1 | 085725787890 | P
 (2 rows)

Lanjut ke soal ketiga, menampilkan data mahasiswa dari nomor 3 – 5, trus tampilkan juga data mhs yang bukan dari nomor 3 – 5 menggunakan between dan tanpa between.

Ini struktur PostgreSQL data mahasiswa dari no. 3 – 5 pake between :

postgres=> select*from Mahasiswa where nim_mah between 13 and 15;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
      13 | paris    | jakarta    |      2 | 085725788600 | L
      14 | Iqbal    | jakarta    |      3 | 085725780990 | L
      15 | Dewi     | semarang   |      1 | 085725787890 | P
(3 rows)


Ini struktur PostgreSQL data mahasiswa dari no. 3 – 5 TANPA between :


postgres=> select*from Mahasiswa where nim_mah >= 13 AND nim_mah<=15;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
      13 | paris    | jakarta    |      2 | 085725788600 | L
      14 | Iqbal    | jakarta    |      3 | 085725780990 | L
      15 | Dewi     | semarang   |      1 | 085725787890 | P
(3 rows)


Ini struktur PostgreSQL data mahasiswa BUKAN dari no. 3 – 5 pake between :

postgres=> select*from Mahasiswa where nim_mah not between 13 and 15;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------           
      11 | dia      | bandung    |      1 | 085725888000 | L
      12 | adit     | jogja      |      2 | 085725788000 | L
      16 | vani     | Cimahi     |      2 | 085725781234 | P
      17 | binta    | solo       |      3 | 085725781156 | P
 (4 rows)                                            

Ini struktur PostgreSQL data mahasiswa BUKAN dari no. 3 – 5 TANPA between :


postgres=> select*from Mahasiswa where nim_mah<13 OR nim_mah>15;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
      11 | dia      | bandung    |      1 | 085725888000 | L
      12 | adit     | jogja      |      2 | 085725788000 | L
      16 | vani     | Cimahi     |      2 | 085725781234 | P
      17 | binta    | solo       |      3 | 085725781156 | P
 (4 rows)

Next, ke soal 4, kita disuruh nampilkan mahasiswa dengan nomor 2, 3, 5 pake operator IN. Maksud dari soal ini yaitu data mhs yang ada di urutan ke 2, 3, 5. Nah dari data mhs di sini urutan ke 2,3,5 ada di id_mah 12, 13, 15.


postgres=> select*from Mahasiswa where nim_mah in (12,13,15);
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
      12 | adit     | jogja      |      2 | 085725788000 | L
      13 | paris    | jakarta    |      2 | 085725788600 | L
      15 | Dewi     | semarang   |      1 | 085725787890 | P
(3 rows)

           
Selanjutnya kita menuju ke soal 5, menampilkan semua data mhs yang namanya berawal dari huruf “a”.(berarti pake LIKE ‘A%’)
postgres=> select*from Mahasiswa where nama_mah like 'A%';
 nim_mah | nama_mah | alamat_mah | id_fak | no_telp      | gender
---------+----------+------------+--------+---------------+-------
      12 | adit     | jogja      |      2 | 085725788000 | L
 (0 rows)     

Setelah itu, nampilin semua data mhs yang punya akhiran “a” dan huruf ke-3 dari nama tsb ada huruf “n”.

postgres=> select*from Mahasiswa where nama_mah like '_n%a';
nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
     17 | binta    | solo       |      3 | 085725781156 | P
(0 rows)


Lanjut ke soal ke – 7,menampilkan nomor fakultas dari table mhs dengan nomor harus tidak ada yang sama dari awal sampai akhir
Seperti ini !!!!

 postgres=> select distinct id_fak from Mahasiswa;

 id_fak

--------

      2

      1

      3

(3 rows)


Buru ke soal 8, menampilkan data mhs 3 baris aja. Pake LIMIT nih..

postgres=> select * from fakultas limit 3;

 id_fak |  nama_fak

--------+------------

      1 | SAINTEK

      2 | EKONOMI

      3 | KEDOKTERAN

(3 rows)


postgres=> select * from Mahasiswa limit 3;

 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender

---------+----------+------------+--------+--------------+--------

      12 | adit     | jogja      |      2 | 085725788000 | L

      13 | paris    | jakarta    |      2 | 085725788600 | L

      14 | Iqbal    | jakarta    |      3 | 085725780990 | L

(3 rows)


Ke soal 9. Kita disuruh nampilin data mhs dengan ciri-ciri : nama awalan a trus kata selanjutnya boleh r atau d pokoknya terserah yang penting memenuhi syarat semisal adik. Karena di table mhs ini, yang nama nya berawalan A Cuma satu yaitu si “adit” So, aditlah yang kita masukki.

postgres=> select * from Mahasiswa where nama_mah ~ 'a..t';

 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender

---------+----------+------------+--------+--------------+--------

      12 | adit     | jogja      |      2 | 085725788000 | L

(1 row)

Terakhir ini,... kita ke soal tentang pembuatan table organ dalam dan organ luar ,seperti ini !!!!


postgres=> create table organ_dalam (nomor integer ,nama varchar(21));

CREATE TABLE

postgres=> create table organ_luar (nomor integer ,nama varchar(21));

CREATE TABLE

postgres=> insert into organ_dalam values (1, 'jantung');

INSERT 0 1

postgres=> insert into organ_dalam values (2, 'paru-paru');

INSERT 0 1

postgres=> insert into organ_dalam values (3, 'tenggorokan');

INSERT 0 1

postgres=> insert into organ_luar values (1, 'hidung');

INSERT 0 1

postgres=> insert into organ_luar values (2, 'mata');

INSERT 0 1

postgres=> insert into organ_luar values (3, 'tenggorokan');

INSERT 0 1

postgres=> select*from organ_dalam;

 nomor |    nama

-------+-------------

     1 | jantung

     2 | paru-paru

     3 | tenggorokan

(3 rows)





postgres=> select*from organ_luar;

 nomor |    nama

-------+-------------

     1 | hidung

     2 | mata

     3 | tenggorokan

(3 rows)





postgres=# select nama from organ_dalam union select nama from organ_luar;
    nama
-------------
 tenggorokan
 paru-paru
 mata
 hidung
 jantung
(5 rows)





postgres=> select nama from organ_dalam except select nama from organ_luar;
 nama
-----------
 jantung
 paru-paru
(2 rows)



postgres=> select nama from organ_dalam intersect select nama from organ_luar;
    nama
-------------
 tenggorokan
(1 row)

postgres=>




Akhirnyaa..... postgreSQL nya udah rampung alias selesai...
Tinggal yang pake Mysql nih..
  


phpmyAdmin

Pertama, nyiapin tabel mahasiswa dan fakultas yang di praktikum sebelumnya yaitu tentang perintah dasar SQL. 


Trus, tambahin kolom “gender” di tabel Mahasiswa.
syntaknya : alter table Mahasiswa add column “gender”  varchar(1);
setelah itu kita masukin 7 data ke dalam table mahasiswa itu.



nih hasilnya..



Sudah terbuat datanya...
Lanjut dengan soal-soal dalam praktikum
1.
Menampilkan data mahasiswa dengan nama dari kolomnya berubah menjadi nomor_identitas, nama, alamat,nama_fakultas tanpa harus merubah nama kolom secara permanen 


Hasilnya..



2. Menampilkan nama mahasiswa fakultas saintek yang berjenis kelamin laki-laki. Kemudian nama mahasiswa fakultas saintek atau berjenis kelamin laki-laki
Ini yang “AND”   :


Hasilnya..


 ini yang "OR" :




3. Menampilkan data mahasiswa dari nomor 3 sampai dengan 5, kemudian tampilkan juga data mahasiswa yang bukan dari nomor 3 sampai dengan 5 menggunakan between dan tanpa menggunakan between.

Data Mhs yang ada di urutan 3 - 5 (13-15) pakai Between



Data mhs yang ada diurutan 3 – 5 tanpa between


Data mhs yang bukan dari urutan 3 – 5 pakai between



Data mhs yang bukan dari urutan 3 – 5 TANPA  between



4. Menampilkan mahasiswa dengan nomor 2,3,5 menggunakan operator IN 


5.  Menampilkan semua data mahasiswa yang namanya mempunyai awalan huruf “a”.  



6.  Menampilkan semua data mahasiswa yang namanya mempunyai akhiran “a” dan huruf  ke-3 dari nama tersebut terdapat huruf “n”.



7. Menampilkan nomor fakultas di tabel mahasiswa dengan nomor harus tidak ada yang sama dari baris pertama sampai akhir.  



8.  Menampilkan data mahasiswa 3 baris saja. 


9. Menampilkan data mahasiswa dengan ciri-ciri memiliki nama awalan a kmdn kata selanjutnya boleh r atau boleh d, atau t.


10. Membuat table dengan nama organ_dalam dan organ_luar sebagai berikut :
      Organ_dalam  :





Ini yang organ_luar

 
 

Menampilkan data dengan UNION

 
Menampilkan data dengan EXCEPT 






Menampilkan data dengan INTERSECT



 

 SELESAI...
 



      C.    Tugas Rumah (Evaluasi Perbandingan DBMS MySQL dan PostgreSQL)

MySQL :

1.   Sintak menampilkan gender laki-laki musti pake petik (select*from Mahasiswa where id_fak=1 and 'gender'='L') . kata gender musti di beri tanda petik satu (‘gender’).
2.   Sintak pada soal nomer 9 => select*from Mahasiswa where nama_mah regexp ‘d[aie]’; (dalam phpmyAdmin : tidak bisa memakai simbol regexp (~))
3.   Sintak pada soal nomer 10 yang “except” : select nama from organ_dalam where nama not in (select nama from organ_luar);
4.   Sintak pada soal nomer 10 yang “intersect” : select nama from organ_dalam where nama in (select nama from organ_luar);
5.   MYSQL lebih diperhatikan tanda-tanda bacanya, kaya tanda petik (‘ .. ‘) dsb. Sangat sensitif dengan tanda-tanda ataupun simbol-simbol

PostgreSQL :

1.   Sintak menampilkan gender laki-laki nggak perlu memakai tanda petik satu (‘..’) :
select*from Mahasiswa where id_fak=1 and gender='L';
2.   Sintak pada soal nomer 9 (REGEXP) => kita bisa pakai simbolnya (~). select*from Mahasiswa where nama_mah ~ ‘d[aie]’;
3.   Sintak pada soal nomer 10 yang “except” : select nama from organ_dalam except select nama from organ_luar;
4.   Sintak pada soal nomer 10 yang “intersect” : select nama from organ_dalam intersect select nama from organ_luar);
  

 D.    Kesimpulan

AS
Untuk menampilkan label kolom dengan nama lain (tidak permanen)
AND OR
Untuk memakai standar boolean .kalo AND = nampilin data dari kedua data yang dipilih, OR = nampilin data dari salah satu dari kedua data yang dipilih
BETWEEN
Untuk menentukan lebar nilai dari yang terendah dan tertinggi
LIKE
Untuk mencari sebuah data yang cuma diwakili oleh salah satu atau lebih hurufnya saja
DISTINCT
Untuk mengembalikan hasil dari query yang tidak terdapat duplikasinya
LIMIT dan OFFSET
Untuk membatasi jumlah output berdasarkan jumlah row

UNION, EXCEPT, INTERSECT
Untuk mengkombinasi dua query

      E.     Saran dan Kritik

Dalam praktikum ini, praktikan menemukan kebingungan dari salah satu soal. Meskipun seperti itu, urutan soal dengan materi dari tiap operator dasar itu terurut sesuai dengan soal-soalnya.

      F.     Manfaat

Ini sangat membantu para pembaca, memahami dan mengenal secara lebih jauh tentang operator dasar dalam standar query sql, serta yang berhubungan dengan manipulasi data.

      G.    Sumber-sumber
 
Mustafa, aziz. Modul Praktikum Desain Basis Data.pdf
Kadir, Abdul. 2002. Penuntun Praktis Belajar SQL. Yogyakarta: Andi
Subekti, Muhammad.2004.Manajemen Basis Data.Bogor:Ghalia Indonesia

0 komentar:

Posting Komentar