MySQL MariaDB

Masukkan MySQL Abaikan Kekunci Pendua

Masukkan MySQL Abaikan Kekunci Pendua
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 kedua-dua jadual. Bahagian ini akan menghuraikan bagaimana untuk mengelakkan data pendua muncul di dalam jadual dan bagaimana menghilangkan rekod pendua semasa. Dalam panduan ini, anda akan belajar menggunakan klausa INSERT IGNORE untuk mengelakkan kesilapan.

Sintaks:

Berikut adalah sintaks untuk pertanyaan INSERT IGNORE.

>> INSERT IGNORE INTO table_name (col1, col2, col3) NILAI (value_list), (value_list), (value_list);

MASUKKAN IGNORE melalui Workbench:

Buka MySQL Workbench 8 anda.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 ini di kawasan pertanyaan navigator untuk membuat jadual ini. Pilih keseluruhan pertanyaan dan klik tanda kilat untuk melaksanakannya.

>> BUAT JADUAL Pekerja (ID int KUNCI TIDAK NULL, Nama varchar (50) BUKAN NULL, Umur Varchar (50), Gaji varchar (50), UNIK (ID));

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

Dalam paparan grid, anda boleh memasukkan rekod tanpa mengetik pertanyaan. Oleh itu, buka paparan grid jadual "pekerja" dan tambahkan beberapa rekod di dalamnya seperti yang ditunjukkan 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. Layar 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 catatan disimpan ke dalam pangkalan data dan jadualnya "Karyawan". Ini akan menghasilkan ralat jika kita menambahkan nilai pendua di lajur "ID". 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 memberikan peringatan bahawa perintah tersebut mengandungi nilai pendua.

Muat semula paparan grid jadual "Pekerja". Pertanyaan INSERT IGNORE telah berfungsi separuh. Ini 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, ketik kata laluan MySQL anda untuk mula menggunakannya.

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

>> BUAT data JADUAL.menteri (KUNCI UTAMA PRIMARY INT TIDAK NULL, Nama VARCHAR (45), VARCHAR Bandar (45));

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 masukkan catatan pertama dalam jadual "menteri" menggunakan pertanyaan yang ditunjukkan di bawah. Pertanyaan akan berjaya kerana jadual pada masa ini kosong, dan tidak ada rekod untuk disekat.

Oleh kerana lajur "ID" TIDAK ADA, ketika kita mencuba arahan di bawah pada baris perintah, maka 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.Menteri;

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 ini, 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” sama seperti 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 mungkin menganggap bahawa jika kita 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.Menteri;

Kesimpulan:

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

Tutorial OpenTTD
OpenTTD adalah salah satu permainan simulasi perniagaan yang paling popular di luar sana. Dalam permainan ini, anda perlu membuat perniagaan pengangku...
SuperTuxKart untuk Linux
SuperTuxKart adalah tajuk hebat yang direka untuk membawa anda pengalaman Mario Kart secara percuma pada sistem Linux anda. Ia cukup mencabar dan meny...
Tutorial Battle for Wesnoth
The Battle for Wesnoth adalah salah satu permainan strategi sumber terbuka paling popular yang boleh anda mainkan pada masa ini. Bukan hanya permainan...