MySQL sorğusu dublikat məlumatları necə idarə edir?Dublikat məlumat bəyanatını silmək üçün filtr edin

MySQLSorğular dublikat məlumatları necə idarə edir?Dublikat məlumat bəyanatını silmək üçün filtr edin

MySQL Dublikat məlumatların idarə edilməsi

Bəzi MySQL verilənlər cədvəllərində dublikat qeydlər ola bilər.Bəzi hallarda biz dublikat məlumatların olmasına icazə veririk, lakin bəzən bu dublikat məlumatları da silmək lazımdır.

Bu fəsildə biz verilənlər cədvəlində dublikat məlumatların qarşısını necə alacağımızı və verilənlər cədvəlindəki dublikat məlumatların necə silinəcəyini təqdim edəcəyik.


Cədvəllərdə təkrarlanan məlumatların qarşısının alınması

MySQL verilənlər cədvəlində göstərilən sahəni olaraq təyin edə bilərsiniz İLKİN AÇAR və ya UNİKAL (unikal) Məlumatların unikallığını təmin etmək üçün indeks.

Nümunəyə cəhd edək: Aşağıdakı cədvəldə heç bir indeks və əsas açar yoxdur, ona görə də cədvəl çoxlu dublikat qeydlərə imkan verir.

CREATE TABLE person_tbl
(
    first_name CHAR(20),
    last_name CHAR(20),
    sex CHAR(10)
);

Cədvəldə ad və soyad sahələrini təyin etmək istəyirsinizsə, verilənlər təkrarlana bilməz, verilənlərin unikallığını təyin etmək üçün ikiqat əsas açar rejimini təyin edə bilərsiniz. Əgər ikiqat əsas açarı təyin etsəniz, həmin açarın standart dəyəri NULL ola bilməz, lakin NOT NULL olaraq təyin edilə bilər.Göstərildiyi kimi:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);

Unikal bir indeks təyin etsək, dublikat məlumatları daxil edərkən, SQL ifadəsi uğurla icra edilməyəcək və xəta verəcəkdir.

INSERT IGNORE INTO ilə INSERT INTO arasında fərq ondan ibarətdir ki, INSERT IGNORE verilənlər bazasında artıq mövcud olan məlumatları nəzərə almır.Verilənlər bazasında heç bir məlumat yoxdursa, o, yeni məlumatlar daxil edəcək, məlumat varsa, bu məlumatları atlayacaq.Bu yolla verilənlər bazasında mövcud olan məlumatlar qorunub saxlanıla bilər və boşluğa verilənlərin daxil edilməsi məqsədinə nail olmaq olar.

Aşağıdakı nümunə səhvsiz və dublikat məlumatları verilənlər cədvəlinə daxil etmədən icra edən INSERT IGNORE INTO-dan istifadə edir:

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

INSERT IGNORE INTO Məlumat daxil edilərkən, qeydin unikallığı təyin edildikdən sonra, dublikat məlumat daxil edilərsə, heç bir xəta qaytarılmayacaq, ancaq xəbərdarlıq qaytarılacaq.Və REPLACE INTO-ya əsas və ya unikal qeyd varsa, əvvəlcə o silinəcək.Yeni qeyd daxil edin.

Məlumatlarınızın unikallığını təyin etməyin başqa bir yolu belə UNİKAL indeks əlavə etməkdir:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

Statistik məlumatlar dublikatdır

Aşağıda cədvəldə ad_ad və soyadın dublikat qeydlərinin sayını sayacağıq:

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;

Yuxarıdakı sorğu ifadəsi person_tbl cədvəlindəki dublikat qeydlərin sayını qaytaracaq.Ümumiyyətlə, dublikat dəyərləri sorğulamaq üçün aşağıdakıları edin:

  • Hansı sütunun mümkün dublikat dəyərləri ehtiva etdiyini müəyyənləşdirin.
  • Həmin sütunları sadalamaq üçün sütun seçim siyahısında COUNT(*) işarəsindən istifadə edin.
  • GROUP BY bəndində verilmiş sütunlar.
  • HAVING bəndi təkrarların sayını 1-dən çox təyin edir.

dublikat məlumatları süzün

Unikal məlumatları oxumaq lazımdırsa, dublikat məlumatları filtrləmək üçün SELECT ifadəsindəki DISTINCT açar sözündən istifadə edə bilərsiniz.

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl;

Cədvəldən unikal məlumatları oxumaq üçün GROUP BY istifadə edə bilərsiniz:

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

məlumatların təkrarlanması

Məlumat cədvəlindəki dublikat məlumatları silmək istəyirsinizsə, aşağıdakı SQL ifadəsindən istifadə edə bilərsiniz:

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
    ->                  FROM person_tbl;
    ->                  GROUP BY (last_name, first_name, sex);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

Əlbəttə ki, cədvəldəki dublikat qeydləri silmək üçün verilənlər cədvəlinə INDEX (indeks) və PRIMAY KEY (əsas açar) da əlavə edə bilərsiniz.Aşağıdakı üsullar:

mysql> ALTER IGNORE TABLE person_tbl
    -> ADD PRIMARY KEY (last_name, first_name);

Hope Chen Weiliang Blogu ( https://www.chenweiliang.com/ ) paylaşdı "MySQL dublikat məlumatları necə sorğulayır və idarə edir?Filtrləmə və Təkmilləşdirmə Hesabatları" sizə kömək edəcək.

Bu məqalənin linkini paylaşmağa xoş gəlmisiniz:https://www.chenweiliang.com/cwl-499.html

Ən son yenilikləri əldə etmək üçün Chen Weiliang bloqunun Telegram kanalına xoş gəlmisiniz!

🔔 Kanalın ən yaxşı kataloqunda dəyərli "ChatGPT Məzmun Marketinq AI Aləti İstifadə Bələdçisi"ni ilk əldə edən siz olun! 🌟
📚 Bu təlimatda böyük dəyər var, 🌟Bu nadir fürsətdir, qaçırmayın! ⏰⌛💨
Bəyəndinizsə paylaşın və bəyənin!
Paylaşımlarınız və bəyənmələriniz davamlı motivasiyamızdır!

 

发表 评论

Elektron poçtunuz dərc olunmayacaq. Zəruri sahələrdən istifadə olunur * Etiket

yuxarıya sürüşdürün