Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

SQL Kecuali

Dalam SQL, kita mungkin menggunakan klausa JOIN untuk menerima hasil gabungan dari satu atau lebih dari satu tabel. Namun terkadang, kita menginginkan hasil yang berisi data dari satu tabel, dan catatan tidak boleh tersedia di tabel lainnya. Dalam hal ini, SQL memiliki nama konsep SQL Kecuali.

Untuk memurnikan data dari lebih dari satu tabel, kami menggunakan SQL Kecuali. SQL Kecuali sama dengan operator minus yang kita lakukan dalam matematika. SQL Kecuali pertama-tama menggabungkan dua atau lebih dari dua pernyataan SELECT dalam kueri dan mengembalikan data dari pernyataan SELECT pertama. Kami tidak tersedia di hasil pernyataan SELECT lainnya.

SQL KECUALI Aturan

Kita harus memahami semua aturan dan regulasi sebelum menggunakan kueri KECUALI dalam SQL:

  • Jumlah dan urutan kolom dalam tabel yang diberikan harus sama di seluruh kueri SELECT.
  • Tipe data kolom harus sama atau kompatibel.

Sintaks untuk SQL KECUALI

SELECT * FROM table1 EXCEPT SELECT * FROM table2;

Tabel1 dan Tabel2 akan menjadi nama tabel.

Contoh:

Asumsikan kita memiliki dua tabel dengan jumlah kolom dan urutan kolom yang sama.

  • Tabel 1:T1, Jumlah Kolom:3, Data:A, B, C, D
  • Tabel 2:T2, Jumlah Kolom:3, Data:B, D, F, G

Setiap kali kita mengeksekusi query KECUALI pada dua tabel ini, kita akan mendapatkan A dan C karena kedua data ini tidak ada di tabel T2, B dan D adalah umum di kedua tabel, yang dibuang.

Mari kita pahami konsep SQL KECUALI dengan contoh. Perhatikan tabel berikut beserta catatan yang diberikan.

Tabel1:Emp

KARYAWAN FIRST_NAME LAST_NAME GAJI KOTA DEPARTEMEN MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORACLE 1
1003 NIKHIL VANI 50.000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50.000 MUMBAI UJI 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA DIMANA 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH BAIK 60500 MUMBAI UJI 4

Tabel2:Karyawan

KARYAWAN FIRST_NAME LAST_NAME GAJI KOTA DEPARTEMEN MANAGERID
1001 Vaibhav Sharma 65000 PUNE ORACLE 1
1002 Nikhil Vani 60000 NOIDA ORACLE 1
1003 Vaibhavi Mishra 50.000 JAIPUR FMW 2
2001 Ruchika Jain 55500 CHANDIGARH ORACLE 1
2002 Prachi Sharma 65500 PUNE FMW 2
2003 Bahagia Jain 50.000 MUMBAI UJI 4
3001 Deepam Jauhari 55500 PUNE JAVA 3
3002 ANUJA DIMANA 50500 JAIPUR FMW 2
3003 Pranoti Shende 58500 MUMBAI JAVA 3
4001 RAJESH BAIK 60500 MUMBAI UJI 4

Tabel3:Manajer

Pengelola nama_manajer manajer_departemen
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra UJI

Tabel4:Manajer1

Pengelola nama_manajer manajer_departemen
1 Ishita Agrawal ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Paul Oakip UJI

Contoh 1: Misalkan kita ingin menggabungkan dua tabel di atas Emp dan Karyawan dalam kueri SELECT kita menggunakan operator KECUALI.

SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, DEPARTMENT MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER ON EMP.MANAGERID = MANAGER.MANAGERID EXCEPT SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, DEPARTMENT, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER1 ON EMPLOYEE.MANAGERID = MANAGER1.MANAGERID;

Kami menggunakan klausa INNER JOIN antara tabel Emp dan Employee dimana kami menampilkan Employee Id, Name, City, Department, Manager Id, dan Manager Name menggunakan operator KECUALI. Kueri di atas hanya akan menampilkan nilai unik di antara kedua tabel.

Query di atas memberikan output berikut:

Jika kita amati data tabel, ada dua data umum antara kedua tabel Emp table dan tabel Employee, yaitu Employee id 3002 dan 4001. Tampilan detail Employee id 4001 kecuali 3002. Karena Employee id 3002 Nama Manager sama di kedua tabel Manager dan Manajer1 tetapi ID Karyawan 4001 Nama manajer berbeda di kedua tabel, detail id karyawan 4002 ditampilkan.

Contoh 2: Misalkan kita ingin menggabungkan dua tabel di atas Emp dan Karyawan dalam kueri SELECT kita menggunakan operator KECUALI dan mengurutkan hasil yang ditetapkan berdasarkan gaji mereka dalam urutan menurun. Kami akan menggunakan klausa ORDER BY untuk mengurutkan hasil yang ditetapkan dalam kueri SQL.

SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, SALARY, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER ON EMP.MANAGERID = MANAGER.MANAGERID EXCEPT SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, SALARY, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER1 ON EMPLOYEE.MANAGERID = MANAGER1.MANAGERID ORDER BY SALARY;

Query di atas menunjukkan output berikut:

Contoh 3: Misalkan kita ingin menggabungkan dua tabel Emp dan Karyawan di atas dalam kueri SELECT kita menggunakan operator KECUALI di mana gaji karyawan lebih besar dari 55000 dari tabel Emp dan kota karyawan termasuk 'Pune', 'Mumbai', 'Jaipur' dari tabel Karyawan.

SELECT * FROM EMP WHERE SALARY > 55000 EXCEPT SELECT * FROM EMPLOYEE WHERE CITY IN ('Pune', 'Mumbai', 'Jaipur');   

Pernyataan SELECT pertama kueri di atas mengambil semua detail karyawan yang gajinya lebih besar dari 55000 dari tabel Emp. Pernyataan SELECT kedua mengambil semua detail karyawan yang kotanya termasuk Pune, Mumbai, Jaipur dari tabel Karyawan. Kemudian, operator KECUALI akan dieksekusi antara tabel Emp dan tabel Karyawan.

Ini memberikan output berikut:


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menginstal WordPress menggunakan WP-CLI

  2. Menggunakan Docker di Azure Container Service dengan Swarm Cluster

  3. Ukuran Sampel dan Durasi STATISTIK PEMBARUAN:Apakah Penting?

  4. Cara Membuat Tabel dari SQL Query

  5. Hasilkan satu set atau urutan tanpa loop – bagian 3