


Bagaimanakah saya menggunakan Union, Intersect, dan kecuali pengendali dalam SQL?
Bagaimanakah saya menggunakan Union, Intersect, dan kecuali pengendali dalam SQL?
Dalam SQL, UNION
, INTERSECT
, dan EXCEPT
pengendali digunakan untuk menggabungkan hasil dua atau lebih pernyataan pilih. Setiap pengendali mempunyai fungsi yang unik dan menggunakan kes:
-
Kesatuan : Pengendali ini digunakan untuk menggabungkan set keputusan dua atau lebih pernyataan pilih ke dalam satu set keputusan. Ia menghilangkan baris pendua dari hasil akhir melainkan jika
UNION ALL
digunakan, yang termasuk pendua. Struktur pernyataan pilih mestilah sama, bermakna mereka perlu mempunyai bilangan lajur yang sama, dan lajur yang sepadan mesti mempunyai jenis data yang serasi.Sintaks :
<code class="sql">SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2;</code>
Salin selepas log masuk -
Intersect : Operator ini hanya mengembalikan baris yang biasa dengan set keputusan kedua -dua pernyataan pilih. Seperti
UNION
, pernyataan pilih mesti mempunyai struktur yang sama.Sintaks :
<code class="sql">SELECT column1, column2 FROM table1 INTERSECT SELECT column1, column2 FROM table2;</code>
Salin selepas log masuk -
Kecuali : Juga dikenali sebagai
MINUS
dalam beberapa sistem pangkalan data, pengendali ini mengembalikan semua baris dari pernyataan pilih pertama yang tidak hadir dalam pernyataan Pilih kedua. Sekali lagi, pernyataan pilih mestilah bersesuaian secara struktur.Sintaks :
<code class="sql">SELECT column1, column2 FROM table1 EXCEPT SELECT column1, column2 FROM table2;</code>
Salin selepas log masuk
Apakah perbezaan utama antara kesatuan, bersilang, dan kecuali dalam operasi SQL?
Perbezaan utama antara pengendali ini adalah berdasarkan cara mereka mengendalikan data dari pelbagai penyataan pilih:
- Kesatuan menggabungkan set keputusan penyata pilih dan membuang baris pendua (kecuali
UNION ALL
digunakan). Ia digunakan apabila anda ingin mengagregat data dari sumber yang berbeza di mana penyertaan pendua harus dihapuskan. - Intersect mengembalikan hanya baris yang muncul dalam kedua -dua set hasil pernyataan pilih. Ini berguna apabila anda perlu mencari data biasa antara dua set rekod.
- Kecuali mengembalikan semua baris unik dari pernyataan pilih pertama yang tidak dijumpai dalam set hasil pernyataan pilih kedua. Pengendali ini berguna untuk mencari rekod unik dalam satu set yang tidak wujud di tempat lain.
Ringkasnya, UNION
menggabungkan dan berpotensi de-duplikasi data, INTERSECT
mencari data biasa, dan EXCEPT
mengasingkan data unik dari satu set yang tidak dijumpai di pihak yang lain.
Bolehkah anda memberikan contoh apabila menggunakan kesatuan, bersilang, atau kecuali dalam pertanyaan SQL?
Contoh Kesatuan : Katakan anda menguruskan pangkalan data dengan dua jadual, employees
dan contractors
, kedua -duanya mengandungi nama dan jabatan. Jika anda mahukan senarai lengkap semua kakitangan di syarikat tanpa pendua, anda boleh menggunakan UNION
:
<code class="sql">SELECT name, department FROM employees UNION SELECT name, department FROM contractors;</code>
Contoh Intersect : Bayangkan anda menjejaki kehadiran di dua acara yang berbeza, disimpan dalam event1_attendees
dan event2_attendees
. Untuk mengetahui siapa yang menghadiri kedua -dua acara, anda boleh menggunakan INTERSECT
:
<code class="sql">SELECT attendee_id FROM event1_attendees INTERSECT SELECT attendee_id FROM event2_attendees;</code>
Kecuali Contoh : Jika anda ingin mencari pelanggan yang mempunyai akaun tetapi tidak pernah membuat pesanan, dan ini disimpan dalam jadual customers
dan orders
masing -masing, anda boleh menggunakan EXCEPT
:
<code class="sql">SELECT customer_id FROM customers EXCEPT SELECT customer_id FROM orders;</code>
Bagaimanakah saya dapat mengoptimumkan pertanyaan SQL saya yang menggunakan kesatuan, bersilang, atau kecuali pengendali?
Mengoptimumkan pertanyaan yang menggunakan UNION
, INTERSECT
, atau EXCEPT
dapat meningkatkan prestasi dengan ketara. Berikut adalah beberapa petua:
- Gunakan kesatuan semua bukan kesatuan jika mungkin : Jika anda tahu bahawa set hasil gabungan tidak mengandungi pendua, gunakan
UNION ALL
bukannyaUNION
.UNION ALL
lebih cepat kerana ia tidak perlu menyemak dan mengeluarkan pendua. - Kurangkan bilangan lajur dalam pernyataan pilih : Hanya pilih lajur yang anda perlukan. Lajur yang lebih sedikit bermakna kurang data untuk memproses dan memindahkan.
- Sapukan di mana klausa sebelum menggunakan pengendali : Sapukan apa -apa penapisan atau
WHERE
klausa dalam pernyataanSELECT
individu sebelum menggunakanUNION
,INTERSECT
, atauEXCEPT
. Ini mengurangkan jumlah data yang diproses oleh pengendali ini. - Gunakan indeks : Pastikan lajur yang digunakan dalam pernyataan
SELECT
diindeks dengan betul. Indeks boleh mempercepatkan pengambilan data dengan ketara, terutamanya dalam jadual besar. - Elakkan menggunakan yang berbeza tidak perlu : Jika anda menggunakan
UNION
dan bukannyaUNION ALL
apabila anda tidak perlu mengeluarkan pendua, ia tidak boleh melambatkan pertanyaan anda. Sentiasa menilai sama adaDISTINCT
diperlukan. - Mengoptimumkan setiap pernyataan pilih secara berasingan : Oleh kerana kecekapan hasil gabungan bergantung kepada kecekapan setiap pernyataan
SELECT
komponen, mengoptimumkan setiap bahagian pertanyaan secara individu.
Dengan mengikuti strategi pengoptimuman ini, anda dapat meningkatkan prestasi pertanyaan SQL anda yang menggunakan UNION
, INTERSECT
, atau EXCEPT
pengendali.
Atas ialah kandungan terperinci Bagaimanakah saya menggunakan Union, Intersect, dan kecuali pengendali dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Jenis data DateTime digunakan untuk menyimpan maklumat tarikh dan masa ketepatan tinggi, dari 0001-01-01 00:00:00 hingga 9999-12-31 23: 59: 59.99999999, dan sintetik adalah. Fungsi penukaran zon, tetapi perlu menyedari isu -isu yang berpotensi apabila menukarkan ketepatan, pelbagai dan zon masa.

Cara membuat jadual menggunakan penyataan SQL di SQL Server: Buka SQL Server Management Studio dan sambungkan ke pelayan pangkalan data. Pilih pangkalan data untuk membuat jadual. Masukkan pernyataan Buat Jadual untuk menentukan nama jadual, nama lajur, jenis data, dan kekangan. Klik butang Jalankan untuk membuat jadual.

SQL Jika pernyataan digunakan untuk melaksanakan pernyataan SQL secara kondusif, dengan sintaks sebagai: jika (keadaan) maka {pernyataan} else {statement} end if;. Keadaan ini boleh menjadi ungkapan SQL yang sah, dan jika keadaan itu benar, laksanakan klausa kemudian; Sekiranya keadaan itu palsu, laksanakan klausa lain. Jika pernyataan boleh bersarang, membolehkan pemeriksaan bersyarat yang lebih kompleks.

Terdapat dua cara untuk deduplicate menggunakan berbeza dalam SQL: Pilih berbeza: Hanya nilai unik lajur yang ditentukan dipelihara, dan perintah jadual asal dikekalkan. Kumpulan oleh: Simpan nilai unik kunci pengelompokan dan menyusun semula baris dalam jadual.

Kekangan utama asing menyatakan bahawa mesti ada hubungan rujukan antara jadual untuk memastikan integriti data, konsistensi, dan integriti rujukan. Fungsi khusus termasuk: Integriti data: Nilai utama asing mesti wujud dalam jadual utama untuk mengelakkan penyisipan atau kemas kini data haram. Konsistensi Data: Apabila perubahan data jadual utama, kekangan utama asing secara automatik mengemas kini atau memadam data yang berkaitan untuk memastikannya disegerakkan. Rujukan Data: Mewujudkan hubungan antara jadual, mengekalkan integriti rujukan, dan memudahkan penjejakan dan mendapatkan data yang berkaitan.

Kaedah pengoptimuman SQL biasa termasuk: Pengoptimuman Indeks: Buat pertanyaan yang diperolehi indeks yang sesuai. Pengoptimuman pertanyaan: Gunakan jenis pertanyaan yang betul, syarat gabungan yang sesuai, dan subqueries dan bukannya gabungan berbilang meja. Pengoptimuman Struktur Data: Pilih struktur jadual yang sesuai, jenis medan dan cuba mengelakkan menggunakan nilai null. Cache pertanyaan: Dayakan cache pertanyaan untuk menyimpan hasil pertanyaan yang sering dilaksanakan. Pengoptimuman Kolam Sambungan: Gunakan kolam sambungan ke sambungan pangkalan data multiplex. Pengoptimuman Transaksi: Elakkan transaksi bersarang, gunakan tahap pengasingan yang sesuai, dan operasi batch. Pengoptimuman Perkakasan: Meningkatkan perkakasan dan gunakan penyimpanan SSD atau NVME. Penyelenggaraan Pangkalan Data: Jalankan tugas penyelenggaraan indeks secara teratur, mengoptimumkan statistik, dan objek yang tidak digunakan. Pertanyaan

Fungsi pusingan SQL () pusingan nombor ke nombor digit yang ditentukan. Ia mempunyai dua kegunaan: 1. Num_digits & gt; 0: bulat ke tempat perpuluhan; 2. Num_digits & lt; 0: bulat ke tempat integer.

Kenyataan pengisytiharan dalam SQL digunakan untuk mengisytiharkan pembolehubah, iaitu, ruang letak yang menyimpan nilai pembolehubah. Sintaks adalah: mengisytiharkan & lt; nama pembolehubah & gt; & lt; jenis data & gt; [Lalai & lt; nilai lalai & gt;]; di mana & lt; nama pembolehubah & gt; adalah nama pembolehubah, & lt; jenis data & gt; adalah jenis datanya (seperti varchar atau integer), dan [lalai & lt; nilai lalai & gt;] adalah nilai permulaan pilihan. Mengisytiharkan pernyataan boleh digunakan untuk menyimpan perantaraan
