Masukkan MySQL Abaikan Kekunci Pendua

Mysql Insert Ignore Duplicate Key



Selalunya terdapat data yang bertentangan dalam jadual atau set hasil. Ia juga memakan masa untuk membetulkannya, dan catatan yang sering diulang perlu dielakkan. Perlu mengenal pasti catatan pendua dan menghapusnya dari salah satu jadual. Bahagian ini akan menghuraikan bagaimana untuk mengelakkan data pendua muncul di dalam jadual dan cara menghilangkan rekod pendua semasa. Dalam panduan ini, anda akan belajar bagaimana menggunakan klausa INSERT IGNORE untuk mengelakkan kesilapan.

Sintaks:

Berikut adalah sintaks untuk pertanyaan INSERT IGNORE.







>>MASUKKAN DENGAN NAMA jadual_nama(col1, col2, col3)NILAI(senarai nilai),(senarai nilai),(senarai nilai);

MASUKKAN IGNORE melalui Workbench:

Buka MySQL Workbench 8.0 dari sistem anda dan sambungkan ke contoh pangkalan data.





Di kawasan arahan, anda harus membuat jadual Karyawan dengan empat lajur di mana salah satu daripadanya mesti dinyatakan sebagai UNIK. Cuba pertanyaan di bawah di kawasan pertanyaan navigator untuk membuat jadual ini. Pilih keseluruhan pertanyaan dan klik tanda kilat untuk melaksanakannya.





>>BUAT JADUAL Pekerja(ID int KATA UTAMA TIDAK NULL, Nama varchar(lima puluh)BUKAN NULL, Age Varchar(lima puluh), Gaji varchar(lima puluh), UNIK(ID));

Setelah dibuat, anda dapat mencari pekerja meja dalam senarai di bawah pilihan Jadual di bawah data pangkalan data.



Dalam paparan grid, anda boleh memasukkan rekod tanpa mengetik pertanyaan. Oleh itu, buka paparan grid pekerja meja dan tambahkan beberapa rekod di dalamnya seperti gambar di bawah. Kami telah memasukkan semua rekod unik tanpa pendua. Tekan butang ‘Terapkan’ untuk menerapkan perubahan.

Tetingkap baru akan dibuka dengan pertanyaan yang berkaitan dengan rekod yang telah kita masukkan di atas. Skrin ini dapat disebut layar Ulasan. Sekiranya anda ingin menukar sesuatu, anda boleh melakukannya di sini. Jika tidak, tekan butang Terapkan untuk melaksanakan pertanyaan.

Seperti yang anda lihat, pertanyaan telah berjaya dilaksanakan dan rekod disimpan ke dalam pangkalan data dan jadualnya Karyawan. Ini akan menghasilkan ralat jika kita menambahkan nilai pendua dalam ID lajur. Ketik butang Selesai.

Ini semua mengenai pandangan grid. Sekarang, kami akan memasukkan rekod melalui kawasan pertanyaan. Sementara itu, kami telah memasukkan catatan pendua kali ini untuk memeriksa hasilnya. Oleh itu, kami telah mencuba pertanyaan INSERT di bawah, di mana kami mempunyai dua senarai nilai. Kedua-dua senarai nilai mempunyai nilai yang sama pada lajur 'ID'. Pilih pertanyaan dan tekan tanda kilat untuk melaksanakan pertanyaan.

Pertanyaan tidak akan berfungsi dengan betul, dan akan menghasilkan ralat kerana nilai pendua dalam perintah INSERT seperti yang ditunjukkan dalam gambar.

Sekarang cuba pertanyaan yang sama di atas dengan klausa INSERT IGNORE dan jalankan seperti yang dibentangkan.

Anda dapat melihat bahawa ia tidak menghasilkan ralat di kawasan keluaran, tetapi memberi amaran bahawa perintah tersebut mengandungi nilai pendua.

Muat semula paparan grid jadual Kakitangan. Pertanyaan INSERT IGNORE telah berfungsi separuh. Ia memasukkan senarai nilai pertama ke dalam jadual, tetapi senarai nilai kedua telah diabaikan kerana nilai berulang 13.

MASUKKAN IGNORE melalui Command-Line Shell:

Untuk memahami konsep ini, mari buka shell pelanggan baris perintah MySQL di sistem anda. Setelah bertanya, taipkan kata laluan MySQL anda untuk mula menggunakannya.

Sekarang masanya untuk membuat jadual. Cuba arahan di bawah untuk melakukannya. Kami telah membuat jadual bernama 'menteri' sementara salah satu lajurnya mempunyai kekangan UNIK. Sudah jelas bahawa ID lajur hanya akan menerima nilai unik dan bukan nilai pendua.

>>BUAT JADUAL data.minister(KUNCI PERTENGAHAN PENGGAL PERTAMA TIDAK BENAR, Namakan VARCHAR(Empat lima), VARCHAR Bandar(Empat lima));

Pertanyaan berfungsi dengan betul, dan jadual telah dibuat. Untuk memahami klausa INSERT IGNORE, anda harus terlebih dahulu melihat arahan INSERT yang mudah. Sekiranya anda menggunakan perintah INSERT untuk memasukkan beberapa data maklumat ke meja, MySQL menangguhkan transaksi dan menghasilkan pengecualian jika kesalahan berlaku sepanjang pemprosesan. Akibatnya, jadual tidak mempunyai baris yang ditambahkan padanya. Mari kita masukkan rekod pertama dalam menteri jadual menggunakan pertanyaan yang ditunjukkan di bawah. Pertanyaan akan berjaya dijalankan kerana jadualnya kosong dan tidak ada rekod untuk disekat.

Oleh kerana ID lajur TIDAK ADA, apabila kita mencuba arahan di bawah pada baris perintah, ia akan menghasilkan ralat. Ini kerana kami telah menambahkan nilai 11 dalam pertanyaan sebelumnya, dan kerana kunci UNIK, ia tidak membenarkan kami menambahkan nilai berulang lagi.

Oleh itu, semasa memeriksa jadual, kita dapat melihat bahawa jadual hanya mempunyai 1 rekod yang ditambahkan oleh pertanyaan INSERT pertama.

>>PILIH*DARI data.minister;

Sebaliknya, jika anda menggunakan klausa INSERT IGNORE, baris data yang salah yang mencetuskan ralat akan diabaikan dan hanya akan memasukkan yang tepat. Dalam arahan di bawah, kami telah menggunakan perintah INSERT IGNORE untuk mengelakkan penambahan nilai berulang ke dalam jadual dan mengabaikan ralat. Seperti yang anda lihat, senarai nilai pertama mempunyai nilai pendua 11 seperti pada pertanyaan sebelumnya. Walaupun senarai nilai kedua unik, ia akan menunjukkan 1 rekod yang dimasukkan dalam jadual, yang merupakan senarai nilai kedua. MySQL juga menunjukkan bahawa hanya 1 rekod yang dimasukkan, dan 1 amaran dihasilkan dalam mesej. Anda kemudian boleh menganggap bahawa jika kami menggunakan klausa INSERT IGNORE, MySQL memberikan amaran.

Seperti yang anda lihat dari output di bawah, kami hanya mempunyai dua rekod dalam jadual ini - senarai nilai pertama yang disediakan dalam pertanyaan di atas, yang diabaikan.

>>PILIH*DARI data.minister;

Kesimpulan:

Kami telah melakukan semua contoh yang diperlukan INSERT IGNORE pada nilai pendua melalui MySQL Workbench dan shell pelanggan baris perintah MySQL.