Selasa, 14 Oktober 2014


Yuhuuu.. Hai hai Sobat. Waktunya lapor lagi nih. Laporan Praktikum Desain Basis Data yang ke-4 ini, membahas tentang “Pengenalan Operator Dasar”. Are you redy?? Langsung aja yah, cekidot..

Dasar Teori

Operator AS

Operator ini, biasa digunakan untuk nampilin label kolom dengan nama lain yang kita inginkan sehingga yang akan muncul dalam hasil query bukan nama asli kolom. Berikut sintaksnya: 
SELECT nama­_kolom AS namaKolom_pengganti FROM nama_tabel;

Operator AND

Operator ini dipake buat nampilin data yang lebih akurat . Dengan operator AND, data yang ditampilin Cuma data yang memenuhi kedua syarat yang ditentukan. Nih sintaksnya :
SELECT * FROM nama_tabel WHERE nama_kolom1= kata_kunci1 AND nama_kolom2 = kata_kunci2;

Operator OR

Fungsi operator OR mirip dengan operator AND, kalau operator AND nampilin data yang harus memenuhi kedua syarat yang ditentukan, operator OR bisa nampilin data yang hanya memenuhi salah satu dari kedua syarat yang ditentukan. Sintaksnya:
SELECT * FROM nama_tabel WHERE nama_kolom1= kata_kunci1 OR nama_kolom2 = kata_kunci2;

Operator BETWEEN

Dalam operator ini, terjadi pembatasan pada data yang mau ditampilin. Data diberi batasan pada nilai terendah dan tertinggi. Berikut Sob, sintaksnya :
SELECT * FROM nama_tabel WHERE nama_kolom BETWEEN nilai_awal AND nilai_akhir;

Operator IN 


Operator IN berguna melakukan pencocokan dengan salah satu yang ada pada suatu daftar nilai. Berikut Struktur yang digunakan:
SELECT * FROM nama_tabel WHERE nama_kolom IN (kata_kunci1, kata_kunci2, ....);

Operator LIKE

Operator LIKE menggunakan mode pencarian berdasarkan huruf awal atau huruf akhir atau kombinasi dari keduanya dari data yang ingin ditampilin. Neh sintaksnya:
SELECT * FROM nama_tabel WHERE nama_kolom LIKE ‘operator’;

Operator DISTINCT

Operator DISTINCT ini digunakan buat nampilin data tanpa duplikasi pada suatu kolom. Jika terdapat duplikasi data maka yang ditampilin cuma satu data saja Sob. Sintaknya adalah:
SELECT DISTINCT nama_kolom FROM nama_tabel;

Operator LIMIT

Kegunaan operator LIMIT terletak pada pembatasan jumlah data yang mau ditampilin. Contoh nih, kalau kita cuma pingin nampilin 3 data pada suatu tabel, maka hanya 3 data terataslah yang bakal ditampilin. Sintaksnya seperti ini nih:
SELECT * FROM nama_tabel ORDER BY nama_kolom LIMIT jumlah_data;

Operator OFFSET

Kalau operator LIMIT membatasi jumlah data yang ditampilkan, operator OFFSET ini adalah kebalikannya Sob. Dia akan menghilangkan jumlah data yang akan ditampilkan dan menampilkan sisa dari data yang dihilangkan (hahah.. bingung dah loh). Kayak gini nih sintaksnya:
SELECT * FROM nama_tabel ORDER BY nama_kolom OFFSET jumlah_data;

REGEXP


Regular Expression atau Regex, merupakan sebuah teknik atau cara untuk mencari persamaan-persamaan string atau data dan memanipulasinya. Biasanya lebih sering digunakan untuk string. Didalam PostgreSQL disimbolkan dengan “~”.

Berikut struktur SQL untuk pencarian data menggunakan REGEXP :

SELECT * FROM nama_tabel WHERE nama_kolom ~ ‘operator_regexp dan patern’;


UNION, EXCEPT dan INTERSECT


Hasil dari dua buah query dapat dikombinasikan dengan menggunakan UNION, EXCEPT atau INTERSECT. UNION digunakan untuk menggabungkan hasil dua buah query menjadi satu kolom. Berikut struktur query untuk UNION :

SELECT nama_kolom FROM nama_tabel UNION SELECT nama_kolom FROM nama_tabel;

EXCEPT digunakan untuk menampilkan hanya query pertama saja, sedangkan hasil query kedua dan yang sama dengan hasil query kedua tidak akan ditampilkan. Berikut struktur query penggunaan EXCEPT :

SELECT nama_kolom FROM nama_tabel EXCEPT SELECT nama_kolom FROM nama_tabel;

Perintah INTERSECT hanya akan menampilkan seluruh isi dari data yangmemiliki kesaman diantara hasil kedua query tersebut. Berikut struktur query penggunaan INTERSECT :
SELECT nama_kolom FROM nama_tabel INTERSECT SELECT nama_kolom FROM nama_tabel;
Biar lebih paham lagi, Sobat bisa liat langsung contoh materi ini pada hasil praktikum berikut.

Hasil Praktikum


Berikut Ini hasil praktikum yang pake PostgreSQL Sob. Boleh dicoba..
Server [localhost]:
Database [postgres]: permata13650083
Port [5432]:
Username [postgres]:
Password for user postgres:
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.
permata13650083=# select * from mahasiswa;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp
---------+----------+------------+--------+--------------
      14 | Luki     | Ponorogo   |      2 | 082576568725
(1 row)
permata13650083=# select * from fakultas;
 id_fak | nama_fak
--------+-----------
      2 | PSIKOLOGI
(1 row)
permata13650083=# select * from fakultas;
 id_fak | nama_fak
--------+-----------
      2 | PSIKOLOGI
      1 | SAINTEK
(2 rows)
permata13650083=# alter table mahasiswa add column gender char;
ALTER TABLE
permata13650083=# select * from mahasiswa;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
      14 | Luki     | Ponorogo   |      2 | 082576568725 |
(1 row)
permata13650083=# insert into fakultas values (1, 'SAINTEK');
INSERT 0 1
permata13650083=# update mahasiswa set gender='L', nim_mah=1 where nim_mah=14;
UPDATE 1
permata13650083=# select * from mahasiswa;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       1 | Luki     | Ponorogo   |      2 | 082576568725 | L
(1 row)
permata13650083=# insert into mahasiswa values (2, 'Affan', 'Surabaya', 1, '0856
77854321', 'L'), (3, 'Melly', 'Yogyakarta', 1, '081233476588', 'P'), (4, 'Hari',
 'Solo', 2, '085776889521', 'L'), (5, 'Sinta', 'Jakarta', 1, '085233456789', 'P'
), (6, 'Ana', 'Malang', 2, '082547766543', 'P'), (7, 'Fandi', 'Jombang', 1, '081
234576980', 'L');
INSERT 0 6
permata13650083=# select * from mahasiswa;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       1 | Luki     | Ponorogo   |      2 | 082576568725 | L
       2 | Affan    | Surabaya   |      1 | 085677854321 | L
       3 | Melly    | Yogyakarta |      1 | 081233476588 | P
       4 | Hari     | Solo       |      2 | 085776889521 | L
       5 | Sinta    | Jakarta    |      1 | 085233456789 | P
       6 | Ana      | Malang     |      2 | 082547766543 | P
       7 | Fandi    | Jombang    |      1 | 081234576980 | L
(7 rows)
permata13650083=# select nim_mah as nomor_identitas, nama_mah as nama, alamat_ma
h as alamat, nama_fak as nama_fakultas from mahasiswa, fakultas where mahasiswa.
id_fak=fakultas.id_fak;
 nomor_identitas | nama  |   alamat   | nama_fakultas
-----------------+-------+------------+---------------
               1 | Luki  | Ponorogo   | PSIKOLOGI
               2 | Affan | Surabaya   | SAINTEK
               3 | Melly | Yogyakarta | SAINTEK
               4 | Hari  | Solo       | PSIKOLOGI
               5 | Sinta | Jakarta    | SAINTEK
               6 | Ana   | Malang     | PSIKOLOGI
               7 | Fandi | Jombang    | SAINTEK
(7 rows)
permata13650083=# select * from mahasiswa where id_fak=1 and gender='L';
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       2 | Affan    | Surabaya   |      1 | 085677854321 | L
       7 | Fandi    | Jombang    |      1 | 081234576980 | L
(2 rows)
permata13650083=# select * from mahasiswa where id_fak=1 or gender='L';
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       1 | Luki     | Ponorogo   |      2 | 082576568725 | L
       2 | Affan    | Surabaya   |      1 | 085677854321 | L
       3 | Melly    | Yogyakarta |      1 | 081233476588 | P
       4 | Hari     | Solo       |      2 | 085776889521 | L
       5 | Sinta    | Jakarta    |      1 | 085233456789 | P
       7 | Fandi    | Jombang    |      1 | 081234576980 | L
(6 rows)
permata13650083=# select * from mahasiswa where nim_mah between 3 and 5;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       3 | Melly    | Yogyakarta |      1 | 081233476588 | P
       4 | Hari     | Solo       |      2 | 085776889521 | L
       5 | Sinta    | Jakarta    |      1 | 085233456789 | P
(3 rows)
permata13650083=# select * from mahasiswa where nim_mah>= 3 and nim_mah<=5;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       3 | Melly    | Yogyakarta |      1 | 081233476588 | P
       4 | Hari     | Solo       |      2 | 085776889521 | L
       5 | Sinta    | Jakarta    |      1 | 085233456789 | P
(3 rows)
permata13650083=# select * from mahasiswa where nim_mah not between 3 and 5;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       1 | Luki     | Ponorogo   |      2 | 082576568725 | L
       2 | Affan    | Surabaya   |      1 | 085677854321 | L
       6 | Ana      | Malang     |      2 | 082547766543 | P
       7 | Fandi    | Jombang    |      1 | 081234576980 | L
(4 rows)
permata13650083=# select * from mahasiswa where nim_mah<3 or nim_mah>5;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       1 | Luki     | Ponorogo   |      2 | 082576568725 | L
       2 | Affan    | Surabaya   |      1 | 085677854321 | L
       6 | Ana      | Malang     |      2 | 082547766543 | P
       7 | Fandi    | Jombang    |      1 | 081234576980 | L
(4 rows)
permata13650083=# select * from mahasiswa where nim_mah in (2,3,5);
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       2 | Affan    | Surabaya   |      1 | 085677854321 | L
       3 | Melly    | Yogyakarta |      1 | 081233476588 | P
       5 | Sinta    | Jakarta    |      1 | 085233456789 | P
(3 rows)
permata13650083=# select * from mahasiswa where nama_mah like 'A%';
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       2 | Affan    | Surabaya   |      1 | 085677854321 | L
       6 | Ana      | Malang     |      2 | 082547766543 | P
(2 rows)
permata13650083=# select * from mahasiswa where nama_mah like 'A%' and nama_mah
like '__n';
 nim_mah | nama_mah | alamat_mah | id_fak | no_telp | gender
---------+----------+------------+--------+---------+--------
(0 rows)
permata13650083=# select distinct id_fak from mahasiswa;
 id_fak
--------
      2
      1
(2 rows)
permata13650083=# select * from mahasiswa limit 3;
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       1 | Luki     | Ponorogo   |      2 | 082576568725 | L
       2 | Affan    | Surabaya   |      1 | 085677854321 | L
       3 | Melly    | Yogyakarta |      1 | 081233476588 | P
(3 rows)
permata13650083=# select * from mahasiswa where nama_mah ~ 'A[rtd]';
 nim_mah | nama_mah | alamat_mah | id_fak | no_telp | gender
---------+----------+------------+--------+---------+--------
(0 rows)
permata13650083=# select * from mahasiswa where nama_mah ~ 'A[rfn]';
 nim_mah | nama_mah | alamat_mah | id_fak |   no_telp    | gender
---------+----------+------------+--------+--------------+--------
       2 | Affan    | Surabaya   |      1 | 085677854321 | L
       6 | Ana      | Malang     |      2 | 082547766543 | P
(2 rows)
permata13650083=# create table organ_dalam (nomor integer not null, nama varchar
(20));
CREATE TABLE
permata13650083=# insert into organ_dalam values (1, 'Jantung'), (2, 'Paru-paru'
), (3, 'Tenggorokan');
INSERT 0 3
permata13650083=# select * from organ_dalam;
 nomor |    nama
-------+-------------
     1 | Jantung
     2 | Paru-paru
     3 | Tenggorokan
(3 rows)
permata13650083=# create table organ_luar (nomor integer not null, nama varchar(
20));
CREATE TABLE
permata13650083=# insert into organ_luar values (1, 'Hidung'), (2, 'Mata'), (3,
'Tenggorokan');
INSERT 0 3
permata13650083=# select * from organ_luar;
 nomor |    nama
-------+-------------
     1 | Hidung
     2 | Mata
     3 | Tenggorokan
(3 rows)
permata13650083=# select * from organ_dalam union select * from organ_luar;
 nomor |    nama
-------+-------------
     2 | Paru-paru
     3 | Tenggorokan
     1 | Hidung
     2 | Mata
     1 | Jantung
(5 rows)
permata13650083=# select * from organ_dalam except select * from organ_luar;
 nomor |   nama
-------+-----------
     1 | Jantung
     2 | Paru-paru
(2 rows)
permata13650083=# select * from organ_dalam intersect select * from organ_luar;
 nomor |    nama
-------+-------------
     3 | Tenggorokan
(1 row)
permata13650083=#


Nah, sekarang kita coba pake MySQL.

Persiapan praktek: Gunakan tabel mahasiswa dan fakultas pada pertemuan 3. Tambahkan kolom gender di tabel mahasiswa kemudian update data mahasiswa. Insert data mahasiswa hingga 7 baris.
>> Login dan konek dulu ke database yang akan digunakan.
>> Data tabel mahasiswa (pertemuan 3)

>> Data tabel fakultas (pertemuan 3)


>> Insert tabel fakultasnya dulu
>> Tambahkan kolom gender pada tabel mahasiswa

>> Update tabel mahasiswa
>> Insert tabel mahasiswa

Berdasarkan tabel sebelumnya yaitu bab 3, tampilkan data mahasiswa dengan nama dari kolomnya berubah menjadi nomor_identitas, nama, alamat,nama_fakultas tanpa harus merubah nama kolom secara permanen.
>> Mengubah tampilan nama kolom menggunakan AS
Tampilkan nama mahasiswa fakultas saintek yang berjenis kelamin laki-laki.
>> Menampilkan mahasiswa laki-laki fakultas saintek menggunakan AND
Kemudian nama mahasiswa fakultas saintek atau berjenis kelamin laki-lak
>>Menampilkan mahasiswa fakultas Saintek atau mahasiswa yang berjenis kelamin laki-laki menggunakan OR

Suatu tabel mahasiswa terdapat 7 baris data mahasiswa. Tampilkan 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.
>> Menampilkan data mahasiswa dengan NIM 3 sampai 5 menggunakan BETWEEN dan menggunakan operator biasa.
 >> Menampilkan data mahasiswa selain NIM 3 sampai 5 menggunakan NOT BETWEEN dan menggunakan operator biasa.
Tampilkan mahasiswa dengan nomor 2,3,5 menggunakan operator IN.
>> Menampilkan mahasiswa yang mempunyai NIM 2, 3, dan 5 menggunakan IN
Tampilkan semua data mahasiswa yang namanya mempunyai awalan huruf “A”.
>> Menampilkan mahasiswa yang namanya diawali dengan huruf A menggunakan LIKE
Tampilkan semua data mahasiswa yang namanya mempunyai akhiran “a” dan huruf ke-3 dari nama tersebut terdapat huruf “n”.
>> Menampilkan mahasiswa yang namanya mempunyai akhiran “a” dan huruf ke-3 “n” dengan kombinasi operator AND dan LIKE.
Tampilkan nomor fakultas di tabel mahasiswa dengan nomor harus tidak ada yang sama dari baris pertama sampai akhir.
>> Menampilkan nomor fakultas di tabel mahasiswa tanpa pengulangan data menggunakan DISTINCT.


Tampilkan data mahasiswa 3 baris saja. 
>> Menampilkan data 3 baris mahasiswa dengan menggunakan LIMIT.


Tampilkan data mahasiswa dengan ciri-ciri memiliki nama awalan a kemudian kata selanjutnya boleh r atau boleh t atau boleh d. misalkan yang memenuhi kriteria ciri tersebut seperti adi, atik, arif, adam dll.

*Boleh dengan awalan dan ciri yang lain namun karakteristiknya harus sesuai soal 
>> Menampilkan data mahasiswa dengan yang namanya memilki awalan "A" dan huruf selanjutnya r, n, atau f menggunakan REGEXP.

Buatlah tabel dengan nama organ_dalam dan organ_luar sebagai berikut :

Tabel organ_dalam

Nomor
Nama
1
Jantung
2
Paru-paru
3
Tenggorokan

Tabel organ_luar

Nomor
Nama
1
Hidung
2
Mata
3
Tenggorokan
Tampilkan data dari kedua tabel tersebut menggunakan UNION, EXCEPT dan INTERSECT
>> Membuat tabel organ_dalam
>> Membuat tabel organ_luar
>> Menampilkan data (UNION)

>> Menampilkan data (INTERSECT)

>> Menampilkan data (EXCEPT)

Evaluasi Perbedaan DBMS PostgreSQL dan MySQL



Dari praktikum ini, didapatkan beberapa perbedaan dalam penggunaan DBMS PostgreSQL dan MySQL. Diantaranya adalah sebagai berikut:

Kategori Perbedaan
PostgreSQL
MySQL
REGEXP
SELECT * FROM nama_tabel WHERE nama_kolom ~ ‘operator_regexp dan patern’;
SELECT * FROM nama_tabel WHERE nama_kolom REGEXP ‘operator_regexp dan patern’;
Except
select nama_kolom from nama_tabel except select nama_kolom from nama_tabel;
Pada MySQL tidak terdapat operator EXCEPT namun sebagai gantinya dapat menggunakan operator NOT IN seperti contoh 2 pada bagian Nested Queries.
Intersect
select nama_kolom from nama_tabel intersect select nama_kolom from nama_tabel;
Tidak terdapat operator INTERSECT namun sebagai gantinya dapat menggunakan operator IN

Pekerjaan Rumah


Tugas rumah kali ini adalah menjelaskan evaluasi dari DBMS MySQL dan PostgreSQL berdasarkan tugas praktikum yang meliputi perbedaan atau kesamaan, kelebihan atau kekurangan.

Oke.. Ternyata ada beberapa perbedaan Sob, antara operator PostgreSQL dan MySQL, seperti yang udah dijelaskan diatas. Biar lebih jelas lagi, simak nih yang berikut:

REGEXP

Tampilkan data mahasiswa dengan ciri-ciri memiliki nama awalan A kemudian kata selanjutnya boleh r atau boleh t atau boleh d. misalkan yang memenuhi kriteria ciri tersebut seperti adi, atik, arif, adam dll.

*Boleh dengan awalan dan ciri yang lain namun karakteristiknya harus sesuai soal

REGEXP pada PostgreSQL
REGEXP padaMySQL
REGEXP pada PostgreSQL menggunakan simbol “~”, sedangkan pada MySQL tetap menggunakan istilah “REGEXP”. Selain itu, untuk mencari nama mahasiswa yang awalnya A, pada MySQL harus diawali dengan tanda “^” sedangkan pada PostgeSQL tidak.

Except

Tampilkan data dari dua tabel menggunakan EXCEPT.

EXCEPT pada PostgreSQL
EXCEPT pada MySQL

Except pada PostgreSQL menggunakan istilah “EXCEPT”, sedangkan pada MySQL tidak terdapat operator EXCEPT, tetapi dapat diganti dengan menggunakan “NOT IN”.

Intersect

Tampilkan data dari dua tabel menggunakan INTERSECT
INTERSECT pada PostgreSQL
INTERSECT pada MySQL
Intersect pada PostgreSQL menggunakan istilah “INTERSECT”, sedangkan pada MySQL tidak terdapat operator INTERSECT, tetapi dapat diganti dengan menggunakan “IN”.
Itu tadi adalah perbedaannya. Untuk selebihnya, sama. Mengenai kelebihan dan kekurangannya, ana rasa sama saja, bergantung si pemakai lebih suka pake PostgreSQL atau MySQL.

Kesimpulan

Dari hasil praktikum “Pengenalan Operator Dasar” ini dapa disimpulkan bahwa penggunaan operator pada SQL dapat mempermudah pengaksesan dan pencarian data. Berikut adalah macamnya:
AS
SELECT nama_kolom AS namaKolom_pengganti FROM nama_tabel;
AND
SELECT * FROM nama_tabel WHERE nama_kolom1= kata_kunci1 AND nama_kolom2 = kata_kunci2;
OR
SELECT * FROM nama_tabel WHERE nama_kolom1= kata_kunci1 OR nama_kolom2 = kata_kunci2;
BETWEEN
SELECT * FROM nama_tabel WHERE nama_kolom BETWEEN nilai_awal AND nilai_akhir;
IN
Select * from nama_tabel where nama_kolom in (kata_kunci1, kata_kunci2, kata_kunci13, kata_kunci14);
LIKE
SELECT * FROM nama_tabel WHERE nama_kolom LIKE ‘operator’;
DISTINCT
SELECT DISTINCT nama_kolom FROM nama_tabel;
LIMIT
SELECT * FROM nama_tabel ORDER BY nama_kolom LIMIT jumlah_data;
OFFSET
SELECT * FROM nama_tabel ORDER BY nama_kolom OFFSET jumlah_data;
REGEXP
SELECT * FROM nama_tabel WHERE nama_kolom ~ ‘operator_regexp dan patern’;
UNION
SELECT nama_kolom FROM nama_tabel UNION SELECT nama_kolom FROM nama_tabel;
EXCEPT
SELECT nama_kolom FROM nama_tabel EXCEPT SELECT nama_kolom FROM nama_tabel;
INTERSECT
SELECT nama_kolom FROM nama_tabel INTERSECT SELECT nama_kolom FROM nama_tabel;

Sekian dulu yaa, laporan praktikum Desain Basis Datanya. Semoga bermanfaat Sob.


Referensi:

Utami, Ema, Sukrisno. 2008. “Mengoptimalkan Query pada MYSQL Server: Creating Report Without Programing. Yogyakarta: ANDI.

Modul Praktikum Desain Basis Data.

http://lukluulmarjan.blogspot.com/2013/05/operator-dasar-sql.html.

http://uyunoshigoto.wordpress.com/2012/12/29/pengenalan-sql/html.

0 komentar:

Posting Komentar

Teman

Popular Posts

Text Widget