日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

第31章 MySQL 处理重复数据教程

發布時間:2024/3/13 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第31章 MySQL 处理重复数据教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有些 MySQL 數據表中可能存在重復的記錄,有些情況咱們允許重復數據的存在,但有時候咱們也需要刪除這些重復的數據。

本章節咱們將為大家介紹如何防止數據表出現重復數據及如何刪除數據表中的重復數據。


防止表中出現重復數據

足下可以在 MySQL 數據表中設置指定的字段為 PRIMARY KEY(主鍵) 或者 UNIQUE(唯一) 索引來保證數據的唯一性。

讓咱們嘗試一個實例:下表中無索引及主鍵,所以該表允許出現多條重復記錄。

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

如果足下想設置表中字段 first_name,last_name 數據不能重復,足下可以設置雙主鍵模式來設置數據的唯一性, 如果足下設置了雙主鍵,那么那個鍵的默認值不能為 NULL,可設置為 NOT NULL。如下所示:

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));

如果咱們設置了唯一索引,那么在插入重復數據時,SQL 語句將無法執行成功,并拋出錯。

INSERT IGNORE INTO 與 INSERT INTO 的區別就是 INSERT IGNORE INTO 會忽略database中已經存在的數據,如果database沒有數據,就插入新的數據,如果有數據的話就跳過這條數據。這樣就可以保留database中已經存在數據,達到在間隙中插入數據的目的。

以下實例使用了 INSERT IGNORE INTO,執行后不會出錯,也不會向數據表中插入重復數據:

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 當插入數據時,在設置了記錄的唯一性后,如果插入重復數據,將不return 錯誤,只以警告形式return 。 而 REPLACE INTO 如果存在 primary 或 unique 相同的記錄,則先刪除掉。再插入新記錄。

另一種設置數據的唯一性方法是添加一個 UNIQUE 索引,如下所示:

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

統計重復數據

以下咱們將統計表中 first_name 和 last_name的重復記錄數:

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

以上查詢語句將return person_tbl 表中重復的記錄數。 一般情況下,查詢重復的值,請執行以下操作:

  • 確定哪一列包含的值可能會重復。
  • 在列選擇列表使用COUNT(*)列出的那些列。
  • 在GROUP BY子句中列出的列。
  • HAVING子句設置重復數大于1。

過濾重復數據

如果足下需要讀取不重復的數據可以在 SELECT 語句中使用 DISTINCT 關鍵字來過濾重復數據。

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

足下也可以使用 GROUP BY 來讀取數據表中不重復的數據:

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

刪除重復數據

如果足下想刪除數據表中的重復數據,足下可以使用以下的SQL語句:

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;

當然足下也可以在數據表中添加 INDEX(索引) 和 PRIMAY KEY(主鍵)這種簡單的方法來刪除表中的重復記錄。方法如下:

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

本專欄所有文章

第1章 MySQL 教程第2章 MySQL 安裝教程
第3章 MySQL 管理教程第4章 MySQL PHP 語法教程
第5章 MySQL 連接教程第6章 MySQL 創建數據庫教程
第7章 MySQL 刪除數據庫教程第8章 MySQL 選擇數據庫教程
第9章 MySQL 數據類型教程第10章 MySQL 創建數據表教程
第11章 MySQL 刪除數據表教程第12章 MySQL 插入數據教程
第13章 MySQL 查詢數據教程第14章 MySQL WHERE 子句教程
第15章 MySQL UPDATE 更新教程第16章 MySQL DELETE 語句教程
第17章 MySQL LIKE 子句教程第18章 MySQL UNION教程
第19章 MySQL 排序教程第20章 MySQL 分組教程
第21章 MySQL 連接的使用教程第22章 MySQL NULL 值處理教程
第23章 MySQL 正則表達式教程第24章 MySQL 事務教程
第25章 MySQL ALTER命令教程第26章 MySQL 索引教程
第27章 MySQL 臨時表教程第28章 MySQL 復制表教程
第29章 MySQL 元數據教程第30章 MySQL 序列使用教程
第31章 MySQL 處理重復數據教程第32章 MySQL 及 SQL 注入教程
第33章 MySQL 導出數據教程第34章 MySQL 導入數據教程
第35章 MySQL 函數教程第36章 MySQL 運算符教程

寄語

本文有榴蓮醬CSDN原創,歡迎點贊、轉載,博客地址:https://blog.csdn.net/qq441540598

  • 不要感嘆人生苦短。拾起夢想的種子,用生命的時間的每一分鐘去耕耘,你會發現,你的生活,其實很精彩、很充實。
  • 佛說,苦非苦,樂非樂,只是一時的執念而已。執于一念,將受困于一念;一念放下,會自在于心間。物隨心轉,境由心造,煩惱皆由心生。有些人,有些事,是可遇不可求的,強求只有痛苦。既然這樣,就放寬心態,順其自然。無論何時何地,都要擁有一顆安閑自在的心,不讓自己活得累。
  • 薦能舉賢精選良材擔重任,擇優拔萃廣開學路育英才。
  • 這個世界上沒有一個人的成功,成功都是與人分享的;這個世界上沒有兩個人的病痛,病痛是無法與人分享的。
  • 一個人從出生,她的背景就已經決定了她一半的命運。在青春年少的時候我們都掙扎過,認為生命會賜予你輝煌的未來,可最終還是被現實打敗了。

總結

以上是生活随笔為你收集整理的第31章 MySQL 处理重复数据教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。