Prasyarat untuk penampilan operator JOIN

Apabila jumlah data dalam jadual bertambah, nilai pendua sering muncul di dalamnya. Sebagai contoh, jadual produk mempunyai nama jenama. yang kadangkala berulang. Adalah berguna untuk mempunyai jadual jenama yang berasingan untuk mereka, yang akan mengandungi, sebagai contoh, data sedemikian:

  • id - id jenama;
  • nama – nama jenama;
  • company_owner - nama pemilik syarikat jenama;
  • company_contacts - kenalan syarikat pemilik jenama.

Kemudian kami ingin membuat jadual alamat di mana kami boleh meletakkan semua alamat:

  • id – id-alamat;
  • negara;
  • wilayah;
  • bandar;
  • jalan;
  • rumah;
  • zip.

Selain itu, dalam jadual ini adalah mungkin untuk menyimpan alamat bukan sahaja syarikat pemilik jenama, tetapi juga alamat pelanggan dan pekerja. Dan pendekatan ini hanyalah akibat daripada pertumbuhan jumlah data (bilangan baris dalam jadual). Ini memudahkan untuk memanipulasi data dalam jadual dan mengekalkan integritinya.

Apabila anda mempunyai 5 pekerja, anda hanya boleh memasukkan pekerjaan mereka dalam lajur pekerjaan . Jika anda mempunyai 5 ribu pekerja dalam syarikat anda, maka anda memerlukan jadual dengan senarai x profesion dan tanggungjawab mereka.

Dalam bahasa Jawa, ada yang serupa. Jika anda mempunyai banyak kod dalam sesuatu kaedah, maka ada keinginan untuk memecahkannya kepada beberapa kaedah. Jika terdapat banyak kaedah dalam kelas, maka saya ingin memecahkannya kepada beberapa kelas.

Itulah sebabnya pangkalan data yang besar mempunyai beribu-ribu jadual. Dan hampir semua pertanyaan dilaksanakan pada beberapa jadual sekaligus. Dan hasil darab Cartesian bagi baris tiga jadual yang setiap satunya mempunyai seribu rekod sudah menjadi satu bilion baris.

Tetapi hanya menapis satu bilion baris menggunakan WHERE boleh mengambil masa berjam-jam. Oleh itu, pencipta bahasa SQL menawarkan penyelesaian mereka - operator JOIN.

Pengenalan kepada operator JOIN

Operator JOIN digunakan untuk memberitahu pelayan SQL secara eksplisit bahawa kami tidak memerlukan produk Cartesian bagi semua baris jadual untuk semua, tetapi pelekatan pintar baris jadual berbeza yang merujuk antara satu sama lain menggunakan ID (atau dengan cara lain) . Pelayan mempunyai algoritma yang berasingan untuk pemprosesan gabungan jadual menggunakan operator JOIN, yang membolehkan operasi sedemikian dilakukan dengan lebih pantas. Bentuk umum operator JOIN adalah seperti berikut:

table 1 JOIN table 2 ON condition

Ia mengatakan di sini bahawa anda perlu menggabungkan jadual table1 dan table2 ke dalam satu jadual, dan menggunakan syarat sebagai kriteria gabungan .

Mari kita ambil contoh lama kita:

SELECT * FROM employee, task WHERE emploee.id = task.emploee_id

Dan tulis semula menggunakan operator JOIN:

SELECT * FROM employee JOIN task ON emploee.id = task.emploee_id

Kedua-dua pertanyaan akan memberikan hasil yang sama dalam kes kami, tetapi ini hanya kerana pertanyaan itu sangat mudah. Pada masa hadapan, WHERE membolehkan anda membina penapis baris dengan tepat dan penapis yang dinyatakan selepas ON membolehkan anda menulis skrip kompleks untuk memautkan jadual. Anda juga boleh menggunakan alias (alias jadual) apabila menggunakan pernyataan JOIN. Contoh:

SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id