Laporan Praktikum Desain Basis Data IV : Pengenalan Operator

Sunday, October 12, 2014


Teori

1. AS
   Dipakai untuk menampilkan kolom dengan nama alias (nama lain) dari kolom yang asli untuk tujuan kemudahan. Struktur querynya :SELECT [NAMA KOLOM] AS [NAMA KOLOM PENGGANTI] FROM [NAMA TABEL];

2. AND & OR
   Ini merupakan kelanjuan yang lebih kompleks dari penggunaan WHERE untuk menampilkan data yang akurat. Strukur querynya :SELECT * FROM [NAMA TABEL] WHERE [NAMA KOLOM] = ‘[PENCARIAN 1]’ AND [NAMA KOLOM] = ‘[PENCARIAN 2]’;
atau
SELECT * FROM [NAMA TABEL] WHERE [NAMA KOLOM] = ‘[PENCARIAN 1]’ OR [NAMA KOLOM] = ‘[PENCARIAN 2]’;


3. BETWEEN
   Berfungsi untuk menentukan lebar nilai dari nilai terendah dan tertinggi. struktur querynya : SELECT * FROM [NAMA TABEL] WHERE [NAMA KOLOM] BETWEEN ‘[NILAI AWAL]’ AND/OR ‘[NILAI AKHIR]’;


4. LIKE
   Digunakan untuk mencari data yang hanya diwakili satu atau beberapa huruf saja. struktur querynya :
SELECT * FROM [NAMA TABEL] WHERE [NAMA KOLOM] LIKE ‘[OPERATOR]’;


5. LIMIT & OFFSET
   Limit : untuk menentukan jumlah baris yang akan ditampilkan yang dihitung dari baris pertama
Offset : untuk menghilangkan baris sesuai dengan jumlah yang diberikan pada OFFSET
Struktur querynya :
SELECT * FROM [NAMA TABEL] ORDER BY [NAMA KOLOM] LIMIT 2;
dan
SELECT * FROM [NAMA TABEL] ORDER BY [NAMA KOLOM] OFFSET 2;

6. CASE
   Membentuk output tersendiri berupa sebuah kolom baru dengan data dari operasi yang di dalamnya.
contoh : menampilkan nim_mhs, ttl dimana nim_mhs yang memenuhi syarat >=10650005, termasuk anak TI, selain itu tidak yang akan ditampung dalam kolom baru dengan nama status.
SELECT NIM_MHS,TTL, CASE WHEN NIM_MHS>=10650005 THEN 'ANAK TI' ELSE 'BUKAN ANAK TI' END AS STATUS FROM MAHASISWA;

>> Source: http://muizalba.blogspot.com/2011/10/pengenalan-operator-dasar_29.html

7. UNION, INTERSECT dan EXCEPT
  • UNION
UNION merupakan operator yang digunakan untuk menggabungkan hasil query, dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya harus sama.

  • INTERSECT
INTERSECT merupakan operator yang digunakan untuk memperoleh data dari dua buah query dimana data yang ditampilkan adalah yang memenuhi kedua querytersebut dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya harus sama.

Syntax : SELECT * FROM namatabel1 INTERSECT SELECT * FROM namatabel2.

Pada MySQL tidak terdapat operator INTERSECT namun sebagai gantinya dapat menggunakan operator IN (SELECT * FROM namatabel WHERE kolom IN (SELECT kolom FROM namatabel2);)
  • EXCEPT / Set Difference
EXCEPT merupakan operator yang digunakan untuk memperoleh data dari dua buahquery dimana data yang ditampilkan adalah data yang ada pada hasil query 1 dan tidak terdapat pada data dari hasil query 2 dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya harus sama.

Syntax : SELECT * FROM namatabel1 EXCEPT SELECT * FROM namatabel2

Pada MySQL tidak terdapat operator EXCEPT namun sebagai gantinya dapat menggunakan operator NOT IN (SELECT * FROM namatabel WHERE kolom NOT IN (SELECT kolom FROM namatabel2);)

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

Hasil Praktikum & Tugas



Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]:
Password for user postgres:
psql (9.3.5)
WARNING: Console code page (850) 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=# \l
                                                   List of databases
      Name       |  Owner   | Encoding |          Collate          |           C
type           |   Access privileges
-----------------+----------+----------+---------------------------+------------
---------------+-----------------------
 innamul13650019 | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_
Indonesia.1252 |
 postgres        | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_
Indonesia.1252 |
 template0       | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_
Indonesia.1252 | =c/postgres          +
                 |          |          |                           |
               | postgres=CTc/postgres
 template1       | postgres | UTF8     | Indonesian_Indonesia.1252 | Indonesian_
Indonesia.1252 | =c/postgres          +
                 |          |          |                           |
               | postgres=CTc/postgres
(4 rows)


postgres=# \c innamul13650019;
WARNING: Console code page (850) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
You are now connected to database "innamul13650019" as user "postgres".
innamul13650019=# \z
                              Access privileges
 Schema |     Name     | Type  | Access privileges | Column access privileges
--------+--------------+-------+-------------------+--------------------------
 public | fakultas     | table |                   |
 public | identitasnim | table |                   |
 public | mahasiswa    | table |                   |
 public | pekerjanim   | table |                   |
(4 rows)


innamul13650019=# \d mahasiswa;
            Table "public.mahasiswa"
   Column   |         Type          | Modifiers
------------+-----------------------+-----------
 nim_mah    | integer               | not null
 nama_mah   | character varying(20) |
 alamat_mah | text                  |
 id_fak     | integer               | not null
 gender     | character(1)          |
Indexes:
    "mahasiswa_pkey" PRIMARY KEY, btree (nim_mah, id_fak)
Foreign-key constraints:
    "mahasiswa_id_fak_fkey" FOREIGN KEY (id_fak) REFERENCES fakultas(id_fak)


innamul13650019=# select * from mahasiswa;
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
(0 rows)


innamul13650019=# insert into mahasiswa values (1, 'innamul', 'aceh', 1, 'L');
INSERT 0 1
innamul13650019=# insert into mahasiswa values (2, 'suci', 'riau', 2, 'P');
INSERT 0 1
innamul13650019=# insert into mahasiswa values (3, 'jarjit', 'melayu', 1, 'L');
INSERT 0 1
innamul13650019=# insert into mahasiswa values (4, 'upin', 'serawak', 2, 'L');
INSERT 0 1
innamul13650019=# insert into mahasiswa values (5, 'ipin', 'serawak', 2, 'L');
INSERT 0 1
innamul13650019=# insert into mahasiswa values (6, 'mei-mei', 'hongkong', 1, 'P'
);
INSERT 0 1
innamul13650019=# insert into mahasiswa values (7, 'ihsan', 'brunei', 1, 'L');
INSERT 0 1
innamul13650019=#
innamul13650019=#
innamul13650019=# select * from mahasiswa;
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       2 | suci     | riau       |      2 | P
       3 | jarjit   | melayu     |      1 | L
       4 | upin     | serawak    |      2 | L
       5 | ipin     | serawak    |      2 | L
       6 | mei-mei  | hongkong   |      1 | P
       7 | ihsan    | brunei     |      1 | L
(7 rows)


innamul13650019=# select nim_mah as nomor_identitas, nama_mah as nama, alamat_ma
h as alamat, id_fak as nama_fakultas from mahasiswa;
 nomor_identitas |  nama   |  alamat  | nama_fakultas
-----------------+---------+----------+---------------
               1 | innamul | aceh     |             1
               2 | suci    | riau     |             2
               3 | jarjit  | melayu   |             1
               4 | upin    | serawak  |             2
               5 | ipin    | serawak  |             2
               6 | mei-mei | hongkong |             1
               7 | ihsan   | brunei   |             1
(7 rows)


innamul13650019=# select nim_mah as nomor_identitas, nama_mah as nama, alamat_ma
h as alamat, id_fak as nama_fakultas from mahasiswa, fakultas where mahasiswa.id
_fak=fakultas.id_fak;
ERROR:  column reference "id_fak" is ambiguous
LINE 1: ...dentitas, nama_mah as nama, alamat_mah as alamat, id_fak as ...
                                                             ^
innamul13650019=# select * from fakultas
innamul13650019-# ;
 id_fak | nama_fak
--------+-----------
      1 | SAINTEK
      2 | PSIKOLOGI
(2 rows)


innamul13650019=# 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 | innamul | aceh     | SAINTEK
               2 | suci    | riau     | PSIKOLOGI
               3 | jarjit  | melayu   | SAINTEK
               4 | upin    | serawak  | PSIKOLOGI
               5 | ipin    | serawak  | PSIKOLOGI
               6 | mei-mei | hongkong | SAINTEK
               7 | ihsan   | brunei   | SAINTEK
(7 rows)


innamul13650019=# select * from mahasiswa, fakultas.nama_fak where id_fak=1 and
gender='L';
ERROR:  relation "fakultas.nama_fak" does not exist
LINE 1: select * from mahasiswa, fakultas.nama_fak where id_fak=1 an...
                                 ^
innamul13650019=# select * from mahasiswa, where id_fak=1 and gender='L';
ERROR:  syntax error at or near "where"
LINE 1: select * from mahasiswa, where id_fak=1 and gender='L';
                                 ^
innamul13650019=# select * from mahasiswa where id_fak=1 and gender='L';
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       3 | jarjit   | melayu     |      1 | L
       7 | ihsan    | brunei     |      1 | L
(3 rows)


innamul13650019=# select * from mahasiswa where id_fak=1 or gender='L';
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       3 | jarjit   | melayu     |      1 | L
       4 | upin     | serawak    |      2 | L
       5 | ipin     | serawak    |      2 | L
       6 | mei-mei  | hongkong   |      1 | P
       7 | ihsan    | brunei     |      1 | L
(6 rows)


innamul13650019=# select * from mahasiswa where nim_mah between 3 and 5;
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       3 | jarjit   | melayu     |      1 | L
       4 | upin     | serawak    |      2 | L
       5 | ipin     | serawak    |      2 | L
(3 rows)


innamul13650019=# select * from mahasiswa where nim_mah not between 3 and 5;
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       2 | suci     | riau       |      2 | P
       6 | mei-mei  | hongkong   |      1 | P
       7 | ihsan    | brunei     |      1 | L
(4 rows)

innamul13650019=# select * from mahasiswa where nim_mah <= 3 or nim_mah >= 5;
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       2 | suci     | riau       |      2 | P
       3 | jarjit   | melayu     |      1 | L
       5 | ipin     | serawak    |      2 | L
       6 | mei-mei  | hongkong   |      1 | P
       7 | ihsan    | brunei     |      1 | L
(6 rows)


innamul13650019=# select * from mahasiswa where nim_mah between 3 and 5;
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       3 | jarjit   | melayu     |      1 | L
       4 | upin     | serawak    |      2 | L
       5 | ipin     | serawak    |      2 | L
(3 rows)


innamul13650019=# select * from mahasiswa where nim_mah not between 3 and 5;
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       2 | suci     | riau       |      2 | P
       6 | mei-mei  | hongkong   |      1 | P
       7 | ihsan    | brunei     |      1 | L
(4 rows)


innamul13650019=# select * from mahasiswa where nim_mah in (1,2,3);
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       2 | suci     | riau       |      2 | P
       3 | jarjit   | melayu     |      1 | L
(3 rows)


innamul13650019=# select * from mahasiswa where nim_mah in (2,3,5);
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       2 | suci     | riau       |      2 | P
       3 | jarjit   | melayu     |      1 | L
       5 | ipin     | serawak    |      2 | L
(3 rows)


innamul13650019=# select * from mahasiswa where nim_mah in (2,5,3);
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       2 | suci     | riau       |      2 | P
       3 | jarjit   | melayu     |      1 | L
       5 | ipin     | serawak    |      2 | L
(3 rows)


innamul13650019=# select * from mahasiswa like 'a%';
ERROR:  syntax error at or near "like"
LINE 1: select * from mahasiswa like 'a%';
                                ^
innamul13650019=# select * from mahasiswa where nama_mah like 'a%';
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
(0 rows)


innamul13650019=# select * from mahasiswa where nama_mah like 'i%';
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       5 | ipin     | serawak    |      2 | L
       7 | ihsan    | brunei     |      1 | L
(3 rows)


innamul13650019=# select * from mahasiswa where nama_mah like '%a' and like '__n
%;
innamul13650019'# '
innamul13650019-# l
innamul13650019-# ;
ERROR:  syntax error at or near "l"
LINE 3: l
        ^
innamul13650019=# select * from mahasiswa where nama_mah like '%a' and like '__n
%';
ERROR:  type "like" does not exist
LINE 1: ...ect * from mahasiswa where nama_mah like '%a' and like '__n%...
                                                             ^
innamul13650019=# select * from mahasiswa where nama_mah like '__n%a';
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
(0 rows)


innamul13650019=# select * from mahasiswa where nama_mah like '__n%l';
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
(1 row)


innamul13650019=# select * from mahasiswa where nama_mah like '_p%n';
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       4 | upin     | serawak    |      2 | L
       5 | ipin     | serawak    |      2 | L
(2 rows)


innamul13650019=# select id_fak from mahasiswa;
 id_fak
--------
      1
      2
      1
      2
      2
      1
      1
(7 rows)


innamul13650019=# select distinc id_fak from mahasiswa;
ERROR:  column "distinc" does not exist
LINE 1: select distinc id_fak from mahasiswa;
               ^
innamul13650019=# select distinct id_fak from mahasiswa;
 id_fak
--------
      1
      2
(2 rows)


innamul13650019=# select distinct nim_mah from mahasiswa;
 nim_mah
---------
       4
       1
       5
       3
       6
       2
       7
(7 rows)


innamul13650019=# select distinct alamat from mahasiswa;
ERROR:  column "alamat" does not exist
LINE 1: select distinct alamat from mahasiswa;
                        ^
innamul13650019=# select distinct alamat_mah from mahasiswa;
 alamat_mah
------------
 aceh
 riau
 serawak
 hongkong
 melayu
 brunei
(6 rows)


innamul13650019=# select * from mahasiswa limit 3;
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       2 | suci     | riau       |      2 | P
       3 | jarjit   | melayu     |      1 | L
(3 rows)


innamul13650019=# select * from mahasiswa where nama_mah ~ 'i[npsd]';
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       4 | upin     | serawak    |      2 | L
       5 | ipin     | serawak    |      2 | L
(3 rows)


innamul13650019=# select * from mahasiswa;
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       2 | suci     | riau       |      2 | P
       3 | jarjit   | melayu     |      1 | L
       4 | upin     | serawak    |      2 | L
       5 | ipin     | serawak    |      2 | L
       6 | mei-mei  | hongkong   |      1 | P
       7 | ihsan    | brunei     |      1 | L
(7 rows)


innamul13650019=# select * from mahasiswa where nama_mah ~ 'i[nph]';
 nim_mah | nama_mah | alamat_mah | id_fak | gender
---------+----------+------------+--------+--------
       1 | innamul  | aceh       |      1 | L
       4 | upin     | serawak    |      2 | L
       5 | ipin     | serawak    |      2 | L
       7 | ihsan    | brunei     |      1 | L
(4 rows)


innamul13650019=# create table organ_dalam (nomor integer not null, nama varchar
 (20), primary key (nomor));
CREATE TABLE
innamul13650019=# create table organ_luar (nomor integer not null, nama varchar
(20), primary key (nomor));
CREATE TABLE
innamul13650019=# \d
            List of relations
 Schema |     Name     | Type  |  Owner
--------+--------------+-------+----------
 public | fakultas     | table | postgres
 public | identitasnim | table | postgres
 public | mahasiswa    | table | postgres
 public | organ_dalam  | table | postgres
 public | organ_luar   | table | postgres
(5 rows)


innamul13650019=# insert into organ_dalam values (1, Jantung);
ERROR:  column "jantung" does not exist
LINE 1: insert into organ_dalam values (1, Jantung);
                                           ^
innamul13650019=# insert into organ_dalam values (1, 'Jantung');
INSERT 0 1
innamul13650019=# insert into organ_dalam values (2, 'Paru-paru');
INSERT 0 1
innamul13650019=# insert into organ_dalam values (3, 'Tenggorokan');
INSERT 0 1
innamul13650019=# select * from organ_dalam;
 nomor |    nama
-------+-------------
     1 | Jantung
     2 | Paru-paru
     3 | Tenggorokan
(3 rows)


innamul13650019=# insert into organ_luar values (1, 'Hidung');
INSERT 0 1
innamul13650019=# insert into organ_luar values (2, 'Mata');
INSERT 0 1
innamul13650019=# insert into organ_luar values (3, 'Tenggorokan');
INSERT 0 1
innamul13650019=# select * from organ_luar
innamul13650019-# ;
 nomor |    nama
-------+-------------
     1 | Hidung
     2 | Mata
     3 | Tenggorokan
(3 rows)


innamul13650019=# select * from organ_dalam;
 nomor |    nama
-------+-------------
     1 | Jantung
     2 | Paru-paru
     3 | Tenggorokan
(3 rows)


innamul13650019=# select * from organ_dalam union select * from organ_luar;;
 nomor |    nama
-------+-------------
     2 | Paru-paru
     3 | Tenggorokan
     1 | Hidung
     2 | Mata
     1 | Jantung
(5 rows)


innamul13650019=# select * from organ_dalam except select * from organ_luar;;
 nomor |   nama
-------+-----------
     2 | Paru-paru
     1 | Jantung
(2 rows)


innamul13650019=# select * from organ_dalam intersect select * from organ_luar;;

 nomor |    nama
-------+-------------
     3 | Tenggorokan
(1 row)


innamul13650019=#




















Evaluasi Perbandingan DBMS


   Aku kira semua query yang digunakan baik dalam PostgreSQL maupun MySQL (SQLyog) sama persis, cuma terdapat sedikit perbedaan pada penggunaan EXCEPT dan INTERSECT.


No
Perintah
PostgreSQL
MySQL
1
Intersect
SELECT kolom FROM namatabel1 INTERSECT SELECT kolom FROM namatabel2;
SELECT * FROM namatabel1 WHERE kolom IN (SELECT kolom FROM namatabel2);
2
Except
SELECT kolom FROM namatabel1 EXCEPT SELECT kolom FROM namatabel2;
SELECT * FROM namatabel1 WHERE kolom NOT IN (SELECT kolom FROM namatabel2);

Kesimpulan

   Operator SQL sangat dibutuhkan untuk dapat lebih mengerti tentang bahasa yang satu ini, karena SQL juga ingin dimengerti, cieilee kayak cewe aja hahaha. Dan operator ini tentu akan sangat berperan dalam setiap database yang akan kita buat nanti, So tetap ikutin postingan edisi 'belajar' ini yang akan selalu terbit hari minggu setiap minggunya. See you next weekend.