Apa yang dimaksud dengan except pada mysql


The SQL EXCEPT clause/operator is used to combine two SELECT statements and returns rows from the first SELECT statement that are not returned by the second SELECT statement. This means EXCEPT returns only rows, which are not available in the second SELECT statement.

Just as with the UNION operator, the same rules apply when using the EXCEPT operator. MySQL does not support the EXCEPT operator.

Syntax

The basic syntax of EXCEPT is as follows.

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

EXCEPT

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

Here, the given condition could be any given expression based on your requirement.

Example

Consider the following two tables.

Table 1 − CUSTOMERS Table is as follows.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Table 2 − ORDERS table is as follows.

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

Now, let us join these two tables in our SELECT statement as shown below.

SQL> SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   LEFT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
EXCEPT
   SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   RIGHT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

This would produce the following result.

+----+---------+--------+---------------------+
| ID | NAME    | AMOUNT | DATE                |
+----+---------+--------+---------------------+
|  1 | Ramesh  |   NULL | NULL                |
|  5 | Hardik  |   NULL | NULL                |
|  6 | Komal   |   NULL | NULL                |
|  7 | Muffy   |   NULL | NULL                |
+----+---------+--------+---------------------+

sql-unions-clause.htm

A. DASAR TEORI

Seperti halnya pemrograman java, C++ dll, SQL juga memiliki operator dasar. Operator dalam SQL adalah simbol yang digunakan untuk menginstruksi program untuk melakukan sesuatu. Akan berbeda definisi ketika kita membicarakan operator dalam kehidupan sehari-hari. Banyak sekali operator yang bisa digunakan ketika kita ingin menuliskan query. Disini kita akan membahas satu persatu operator dasar yang bisa kitra gunakan dalam menuliskan query.

1. AS (Alias)

Seperti halnya DBMS lain, MySQL juga menyediakan perintah tambahan AS untuk mengganti sementara nama tabel atau kolom. Disebut sementara karena pada dasarnya nama tabel tersebut tidak berubah, hanya di ganti untuk 1 kali penulisan query. Di dalam bahasa SQL, query AS  ini lebih dikenal sebagai alias dari nama tabel yang sebenarnya. Alias ini ditujukan untuk mempermudah penulisan query atau mempercantik tampilan hasil query. Selain itu alias ini juga di gunakan untuk mengganti nama dari kolom tertentu agar di mengerti oleh orang lain ketika kita menampilkannya. Berikut query yang bisa kita gunakan untuk menampilkan tabel atau kolom menggunakan alias.

#  Alias Untuk Tabel

Perintah AS bukanlah query SQL yang dapat berdiri sendiri seperti SELECT, UPDATE, maupun DELETE. AS digunakan sebagai tambahan untuk query SQL lainnya seperti SELECT, UPDATE, dan DELETE.

Format dasar penulisan alias tabel:

  • SELECT aliastabel.namakolom1, aliastabel.namakolom2 . . . FROM namatabel AS namaaliastabel;

#  Alias Untuk Kolom

Selain untuk nama tabel, ada juga alias yang digunakan untuk menampilkan nama kolom. Salah satu kegunaan alias kolom ini adalah untuk merubah sementara nama kolom agar lebih sesuai dengan yang kita maksudkan ketika di tampilkan. Sama seperti alias untuk nama tabel, alias pada nama kolom juga merupakan perintah tambahan dari query inti seperti SELECT.

Format dasar penulisan alias kolom:

  • SELECT namakolom1 AS namaalias, namakolom2 AS namaalias, namakolom3 AS namaalias FROM namatabel;

2. AND dan OR

Pada artikel sebelumnya telah di jelaskan tentang penggunaan SELECT yaitu untuk menampilkan data. Penggunaan SELECT tidak bisa berdiri harus ada inisialisasi lainnya seperti SELECT . . . FROM. Telah di jelaskan juga penggunaan syarat ketika menampilkan data yaitu dengan SELECT . . . FROM . . . WHERE tapi pada artikel sebelumnya masih terbatas pada satu syarat (Baca : Perintah Dasar SQL). Pada bahasan kali ini akan di jelaskan penggunaan WHERE dengan lebih dari satu syarat, dengan menambakan operator logika AND dan OR.

#  Logika AND

Logika AND digunakan untuk menspesifikasikan syarat yang di ajukan untuk di penuhi. Jadi ketika kita menambahkan logika AND ke dalam syarat yang kita ajukan, maka akan di tampilkan data yang memenuhi semua syarat yang diberikan. Karenan semua syarat yang diberikan tersebut saling terkait.

  • SELECT * FROM namatabel WHERE syarat1 AND syarat2 AND syarat3 . . . ;

#  Logika OR

logika OR digunakan untuk memberikan pilihan syarat untuk di penuhi. Jadi ketika kita menambahkan logika OR maka data yang akan di tampilkan adalah data yang memenuhi semua syarat atau satu persatu syarat.

  • SELECT * FROM namatabel WHERE syarat1 OR syarat2 OR syarat3 . . . ;

3. BETWEEN

Sama dengan AND dan OR, BETWEEN juga salah satu operasi perbandingan pada perintah SELECT. BETWEEN ini digunakan untuk menentukan lebar dari data yang akan di tampilkan. Dimulai dati data terendah yang akan di tampilkan sampai data yang paling tinggi untuk di tampilkan. Pada operator between terdapat beberapa operasi pembanding yang digunakan, berikut beberapa operasi pembanding yang bisa di gunakan

Apa yang dimaksud dengan except pada mysql

MySQL, Query SELECT, Operator BETWEEN

Logika operator BETWEEN sebagai berikut :

Untuk menampilkan data diantara operator BETWEEN menggunakan query sebagai berikut :

  • SELECT * FROM nama_tabel WHERE nama_kolom BETWEEN ‘nilai_awal’ AND ‘nilai_akhir’;
  • SELECT * FROM nama_tabel WHERE nama_kolom ‘nilai_awal’>= AND <=‘nilai_akhir’;

Untuk menampilkan data diantara di luar operator BETWEEN menggunakan query sebagai berikut :

  • SELECT * FROM nama_tabel WHERE nama_kolom NOT BETWEEN ‘nilai_awal’ AND ‘nilai_akhir’;
  • SELECT * FROM nama_tabel WHERE nama_kolom ‘nilai_awal’>= OR <=‘nilai_akhir’;

4. IN dan NOT IN

Operator IN juga merupakan salah satu operator yang bisa di gunakan pada perintah SELECT. Operator IN ini berguna melakukan pencocokan dengan salah satu yang ada pada suatu daftar nilai. Berikut Struktur yang digunakan

  • SELECT * FROM namatabel WHERE namakolom IN (katakunci1, katakunci2, katakunci13, katakunci14);

5. LIKE

MySQL menyediakan struktur SELECT . . . LIKE untuk pencarian sebuah data dengan diwakili karakter tertentu. Berikut macam macam operator LIKE yng bisa digunakan

  • S%’ : Cocok dengan kata yang diawali dengan S, dan diikuti dengan karakter apa saja, contoh: ‘S’, ‘Sa’, ‘Si’, ‘Saaaaaa’, ‘Susi’, dan ‘Sabrina Sari’.
  • S_’: Cocok dengan kata yang diawali dengan S, dan diikuti dengan satu karakter apa saja, contoh: ‘Si’, ‘Sa’, ‘Su’, ‘Se’, dan ‘St’.
  • A__i’: Cocok dengan kata yang diawali dengan ‘A’, diikuti oleh 2 karakter bebas, namun diakhiri dengan i, contoh: ‘Andi’, ‘ardi’, ‘aaai’.
  • %e’: Cocok dengan seluruh kata dengan panjang berapapun yang diakhiri dengan huruf ‘e’, contoh: ‘Kece’, ‘Kue’, dan ‘mie’.
  • %dia%’: Cocok dengan seluruh kata yang mengandung kata ‘dia’, contoh: ‘media’, ‘kemudian’, ‘dia’, dan  ‘diaaaa’.

Berikut struktur query dasar untuk pencarian data menggunakan LIKE :

  • SELECT * FROM namatabel WHERE namakolom LIKE ‘operator’;

6. REGEXP (Regular Expression)

Regular Expression atau REGEXP adalah kumpulan huruf atau karakter yang digunakan untuk pencocokan pola (pattern matching). Pola disini contohnya ‘pola untuk kata yang diawali dengan huruf a dan diakhiri dengan huruf j’, atau yang sedikit rumit seperti ‘pola untuk kata yang diawali huruf a,b, c dengan panjang maksimal 5 huruf, mengandung minimal sebuah angka’. Cakupan REGEXP cukup luas, masih banyak sekali operator REGEXP yang bisa digunakan. Berikut ini sedikit operator REGEXP yang sering digunakan

  • . : tanda titik dalam RegExp berarti sebuah karakter apa saja
  • [ … ]: tanda kurung siku ini berarti kumpulan karakter. Misalkan [abc] akan cocok dengan ‘a’, ‘b’, atau ‘c’. kita bisa juga menggunakan jangkauan (range), contohnya [a-z] akan cocok dengan seluruh huruf, [0-9] akan cocok dengan seluruh angka.
  • *: tanda bintang ini akan cocok dengan 0 atau lebih karakter sebelumnya. Misalkan ‘a*’ berarti akan cocok dengan seluruh kata yang mengandung 0 atau lebih a.
  • ^: tanda pangkat atau topi ini menandakan berada di awal kata.
  • $: tanda dollar ini berarti bahwa pola berada di akhir kata.

Mari kita contohkan penggunakan pola RegExp:

  • ab*’: Pola ini berarti akan cocok dengan seluruh kata yang mengandung a dan diikuti oleh b atau tidak sama sekali. Contohnya: ‘a’, ‘ab’, ‘abbbbbb’, dan juga ‘kebab’, karena untuk RegExp, kita harus menyatakan dimana karakter itu muncul.
  • ^ab*’: Pola ini sama artinya dengan ‘ab*’ seperti diatas, namun tanda ^ menyatakan bahwa pola ini harus berada di awal kata, sehingga ‘kebab’ tidak akan cocok.
  • ^s..i$’: Pola ini akan cocok dengan seluruh kata yang diawali dengan s, dan diakhiri dengan i, terdiri dari 4 huruf. Contohnya: susi, sapi, dan siti.

Berikut struktur query dasar untuk pencarian data menggunakan REGEXP :

  • SELECT * FROM namatabel WHERE namakolom REGEXP ‘keywordREGEXP’ ;

7. DISTINCT

Query DISTINCT digunakan untuk memanipulasi tampilan hasil dari tabel. Denagn menggunakan query DISTINCT duplikasi akan dihapus untuk ditampilkan datanya, ini bukan tabel asli dari MySQL. adi DISTINCT ini digunakan untuk menampilkan data tunggal yang tidak ada duplikasinya. Query dasar yang digunakan adalah

  • SELECT DISTINCT namakolom FROM namatabel ;

8. LIMIT

LIMIT digunakan untuk membatasi data yang ingin di tampilkan. Berikut Query dasar yang bisa digunakan

SELECT * FROM namatabel LIMIT jumlahbaris;

9. UNION, INTERSECT, EXCEPT

Perintah UNION dalam MySQL di gunakan untuk menggabungkan/mengkombinasikan isi dari dua tabel menjadi satu. Sama seperti artinya INTERSECT ini di gunakan untuk mencari irisan pada dua atau lebih tabel. Kemudian perintah yang terakhir yaitu EXCEPT, EXCEPT ini di vgunakan untuk memunculkan isi tabel yang berada di luar irisan tabel. Berikut query dasar yang bisa di gunakan untuk menggunakan perintah tersebut.

UNION

  • SELECT * FROM namatabel1 UNION SELECT * FROM namatabel2 ;

INTERSECT

  • SELECT * FROM namatabel1 WHERE syarat1 IN (SELECT * FROM namatabel2) ;

EXCEPT

  • SELECT * FROM namatabel1 WHERE syarat1 NOT IN (SELECT * FROM namatabel2) ;

B. PRAKTIKUM

Pembahasan kali ini akan di praktekan query query yang telah kita pelajari dari dasar teori di atas.

Persiapan praktek : Gunakan tabel mahasiswa dan fakultas pada. Isi kolom sama dengan tabel mahasiswa dan fakultas pada artikel sebelumnya, tambahkan kolom gender di tabel mahasiswa kemudian update data mahasiswa. Insert data mahasiswa hingga 7 baris dengan salah satu nama adalah ‘binta’ dan insert data fakultas hingga 3 baris.

1. Menampilkan Data Menggunakan AS

Berdasarkan tabel yang telah kita buat sebelumnya, menampilkan data mahasiswa dengan nama dari kolomnya berubah menjadi nomor_identitas, nama, alamat,nama_fakultas tanpa harus merubah nama kolom secara permanen. Berikut querynya

  • select nim_mah as nomor_identitas, nama_mah as nama, alamat_mah as alamat, nama_fak as nama_fakultas from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak;

Apa yang dimaksud dengan except pada mysql

 2. Menampilkan Data Menggunakan Operator AND dan OR

Menampilkan nama mahasiswa fakultas saintek yang berjenis kelamin laki-laki. Kemudian nama mahasiswa fakultas saintek atau berjenis kelamin laki-laki. Berikut query dari soal di atas.

  • select*from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak and gender=’L’;

Apa yang dimaksud dengan except pada mysql

  • select*from mahasiswa where id_fak=1 or gender=’L’;

Apa yang dimaksud dengan except pada mysql

3. Menampilkan Data Menggunakan Operator BETWEEN

Berikut soal untuk menampilkan data menggunakan BETWEEN. Suatu tabel mahasiswa terdapat 7 baris data mahasiswa. 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.

Disini kita akan menggunakan perintah BETWEEN dan NOT BETWEEN, baik itu menggunakan BETWEEN atau menggunakan simbol atau keyword untuk betwee. Berikut query yang bisa di gunakan

  • select*from mahasiswa where nim_mah>=3 and Nim_mah<=5;
  • select*from mahasiswa where nim_mah between 3 and 5;
  • select*from mahasiswa where nim_mah not between 3 dan 5;
  • select*from mahasiswa where nim_mah<3 or nim_mah>5;

Apa yang dimaksud dengan except pada mysql

4. Menampilkan Data menggunakan Operator IN

Menampilkan mahasiswa dengan nomor 2,3,5 menggunakan operator IN. Berikut query yang bisa digunakan

  • select*from mahasiswa where nim_mah in (2, 3, 5);

Apa yang dimaksud dengan except pada mysql

5. Menampilkan Data Menggunakan Operator LIKE

Menampilkan semua data mahasiswa yang namanya mempunyai awalan huruf “a”. Dan Menampilkan semua data mahasiswa yang namanya mempunyai akhiran “a” dan huruf ke-3 dari nama tersebut terdapat huruf “n”. Berikut query dari soal berikut

  • select*from mahasiswa where nama_mah like ‘a%’;
  • select*from mahasiswa where nama_mah like ‘__%n%a’;

Apa yang dimaksud dengan except pada mysql

6. Menampilkan Data Menggunakan Operator DISTINCT

Menampilkan nomor fakultas di tabel mahasiswa dengan nomor harus tidak ada yang sama dari baris pertama sampai akhir. Berikut query dari operator DISTINCT

  • select distinct id_fak from mahasiswa;

Apa yang dimaksud dengan except pada mysql

7. Menampilkan Data Menggunakan OperatorLIMIT

Menampilkan data mahasiswa 3 baris saja, menggunakan operator LIMIT. Berikut query yang bisa digunakan

  • select*from mahasiswa limit 3;

Apa yang dimaksud dengan except pada mysql

8. Menampilkan Data Menggunakan Operator REGEXP

Menampilkan data mahasiswa dengan ciri-ciri memiliki nama awalan a kemudian kata selanjutnya boleh b atau boleh m atau boleh d. misalkan yang memenuhi kriteria ciri tersebut seperti abi, amik, adik, adam dll. Gunakan operator RGEXP untuk menyelesaikan soal tersebut. Berikut query yang bisa digunakan

  • select*from mahasiswa where nama_mah regexp ‘^k[aid]’;

Apa yang dimaksud dengan except pada mysql

9. UNION, INTERSECT dan EXCEPT

Sebelum menjalankan perintah UNION, INTERSECT dan EXCEPT, buat dulu tabel baru dengan nama organ_dalam dan organ_luar. Dengan nama kolom nomor dan nama, kemudian pada organ_dalam isi tabel dengan (1, jantung), (2, paru-paru), (3, tenggorokan) kemudian pada tabel organ luar isi tabel dengan (1, hidung), (2, mata), (3, tenggorokan). Setelah modifikasi tabel tersebut dengan perintah UNION, INTERSECT dan EXCEPT

  • select nama from organ_dalam union select nama from organ_luar;
  • select*from organ_dalam where nama in (select nama from organ_luar);
  • select*from organ_dalam where nama not in (select nama from organ_luar);

Apa yang dimaksud dengan except pada mysql

C. Perbedaan, Kesamaan, Kelebihan dan Kekurangan Pada DBMS PostgreSQL dan MySQL

Sebenarnya PostgreSQL maupun MySQL merupan DBMS andalan yang banyak dan mudah digunakan oleh banyak orang. Mulai dari struktur query yang digunakan tidaklah serumit DBMS lain. Oleh sebab itu banyak sekali kesamaan dari kedua DBMS ini, dari artikel Pengenalan Operator Dasar Pada MySQL penulis melihat bahwa banyak sekali kesamaan antara PostgreSQL dan MySQL pada penulisan operatorquery  yang digunakan. Hanya terdapat sedikit sekali perbedaan yang ada, antara lain :

#  Pada Operator REGEXP

Pada operator REGEXP terdapat sedikit perbedaan antara kedua DBMS ini, pada PostgreSQL operator REGEXP dituliskan dalam bentuk simbol ( ), tapi apabila dalam MySQL operator REGEXP tidak di tulis dalam simbol tetapi ditulis operatornya langsung yaitu dengan menuliskan (regexp) saat penulisan querynya. Berikut perbedaan query dasar dari dua DBMS tersebut

PostgreSQL

  • SELECT * FROM namatabel WHERE namakolom ~ ‘keywordREGEXP’;

MySQL

  • SELECT * FROM namatabel WHERE namakolom REGEXP ‘keywordREGEXP’ ;

#  Pada Perintah INTERSECT dan EXCEPT

Pada perintah INTERSECT dan EXCEPT terdapat perbedaan yang sangat mencolok, apabila pada PostgreSQL disediakan sendiri perintah INTERSECT dan EXCEPT, tetapi jika di MySQL perintah INTERSECT dan EXCEPT tidak di sediakan. Jadi untuk mendapatkan perintah ini kita bisa menggunakan operatop IN untuk INTERSECT dan NOT IN untuk EXCEPT.

PostgreSQL

  • SELECT namakolom FROM namatabel EXCEPT SELECT namakolom FROM namatabel; //EXCEPT
  • SELECT namakolom FROM namatabel INTERSECT SELECT namakolom FROM namatabel; //INTERSECT

MySQL

  • SELECT * FROM namatabel1 WHERE syarat1 IN (SELECT * FROM namatabel2) ; //INTERSECT
  • SELECT * FROM namatabel1 WHERE syarat1 NOT IN (SELECT * FROM namatabel2) ; //EXCEPT

D. KESIMPULAN

Pada MySQL terdapat banyak sekali variasi penggunaan operator SELECT untuk menampilkan data. Kita bisa menggunakan alias, operator logika, limit dll. Operator ini tidak hanya ada pada MySQL saja tetapi juga terdapat pada PostgreSQL. Tetapi terdapat sedikit perbedaan penulisan query pada kedua DBMS ini, yaitu pada penggunaan operator REGEXP dan perintah INTERSECT dan EXCEPT. Jadi bagi para pembaca kalian mungkin bisa menggunakan kedua DBMS ini agar mengetahui variasi yang ada dan dapat meningkatkan kemampuan anda dalam menulis query.

E. DAFTAR PUSTAKA

  • SQL SERVER 2008 EXPRESS, Andi dan Wahana Computer, Yogyakarta
  • http://www.duniailkom.com