最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用 MySQL 進(jìn)行數(shù)據(jù)清洗的操作方法

 更新時(shí)間:2025年07月14日 15:56:04   作者:passion_up  
本文給大家介紹利用MySQL進(jìn)行數(shù)據(jù)清洗的操作方法,下面給大家分享常見的數(shù)據(jù)清洗操作及對應(yīng)SQL示例,感興趣的朋友一起看看吧

利用 MySQL 進(jìn)行數(shù)據(jù)清洗是數(shù)據(jù)預(yù)處理的重要環(huán)節(jié),以下是常見的數(shù)據(jù)清洗操作及對應(yīng) SQL 示例:

1. 去除重復(fù)數(shù)據(jù)

使用 ROW_NUMBER() 或 GROUP BY 識別并刪除重復(fù)記錄。

-- 查找重復(fù)記錄(以 user_id 和 email 為例)
WITH Duplicates AS (
  SELECT 
    user_id, 
    email, 
    ROW_NUMBER() OVER (PARTITION BY email ORDER BY user_id) AS rn
  FROM users
)
SELECT * FROM Duplicates WHERE rn > 1;
-- 刪除重復(fù)記錄(保留最新的一條)
DELETE FROM users
WHERE user_id NOT IN (
  SELECT MAX(user_id) 
  FROM users 
  GROUP BY email
);

2. 處理缺失值

  • 填充默認(rèn)值:使用 COALESCE() 或 IFNULL()。
  • 刪除缺失值:使用 WHERE 過濾。
-- 填充缺失值(將 NULL 替換為默認(rèn)值)
UPDATE products
SET price = COALESCE(price, 0),  -- 價(jià)格為 NULL 時(shí)填充 0
    category = IFNULL(category, '未知')  -- 分類為 NULL 時(shí)填充 '未知'
WHERE price IS NULL OR category IS NULL;
-- 刪除包含缺失值的記錄
DELETE FROM orders
WHERE customer_id IS NULL;

3. 數(shù)據(jù)標(biāo)準(zhǔn)化(大小寫、格式統(tǒng)一)

  • 轉(zhuǎn)換大小寫:使用 UPPER() 或 LOWER()。
  • 去除空格:使用 TRIM()。
  • 日期格式化:使用 STR_TO_DATE() 或 DATE_FORMAT()
-- 統(tǒng)一郵箱為小寫
UPDATE users
SET email = LOWER(TRIM(email));
-- 標(biāo)準(zhǔn)化日期格式(將 '2023-12-31' 轉(zhuǎn)為 '31-12-2023')
UPDATE orders
SET order_date = DATE_FORMAT(STR_TO_DATE(order_date, '%Y-%m-%d'), '%d-%m-%Y');

4. 處理無效數(shù)據(jù)

  • 范圍過濾:檢查數(shù)值是否在合理區(qū)間。
  • 正則匹配:驗(yàn)證格式(如郵箱、手機(jī)號)。
-- 刪除年齡小于 0 或大于 120 的記錄
DELETE FROM users
WHERE age < 0 OR age > 120;
-- 查找不符合郵箱格式的記錄
SELECT * FROM users
WHERE email NOT REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';

5. 數(shù)據(jù)類型轉(zhuǎn)換

使用 CAST() 或 CONVERT() 轉(zhuǎn)換字段類型。

-- 將字符串類型的價(jià)格轉(zhuǎn)為數(shù)值類型
ALTER TABLE products
MODIFY price DECIMAL(10, 2) AFTER CAST(price AS DECIMAL(10, 2));

6. 合并 / 拆分字段

  • 合并字段:使用 CONCAT()。
  • 拆分字段:使用 SUBSTRING() 或 SUBSTRING_INDEX()。
-- 合并姓名(first_name 和 last_name)
UPDATE users
SET full_name = CONCAT(first_name, ' ', last_name);
-- 拆分地址(以逗號分隔)
ALTER TABLE customers
ADD street VARCHAR(100),
ADD city VARCHAR(50);
UPDATE customers
SET 
  street = SUBSTRING_INDEX(address, ',', 1),
  city = SUBSTRING_INDEX(address, ',', -1);

7. 異常值處理

通過統(tǒng)計(jì)方法(如 Z-score)識別并處理異常值。

-- 計(jì)算平均價(jià)格和標(biāo)準(zhǔn)差
WITH Stats AS (
  SELECT 
    AVG(price) AS avg_price,
    STDDEV(price) AS std_price
  FROM products
)
-- 刪除價(jià)格超過 3 個(gè)標(biāo)準(zhǔn)差的異常值
DELETE FROM products
WHERE ABS(price - (SELECT avg_price FROM Stats)) > 3 * (SELECT std_price FROM Stats);

執(zhí)行建議

  1. 備份數(shù)據(jù):清洗前先備份,避免誤操作。
  2. 測試邏輯:先用 SELECT 驗(yàn)證清洗邏輯,再執(zhí)行 UPDATE 或 DELETE
  3. 分批處理:大數(shù)據(jù)量時(shí)使用 LIMIT 分批更新,避免鎖表。
-- 示例:分批刪除重復(fù)記錄
DELETE FROM users
WHERE user_id IN (
  SELECT user_id FROM (
    SELECT user_id, 
           ROW_NUMBER() OVER (PARTITION BY email ORDER BY user_id) AS rn
    FROM users
  ) t
  WHERE rn > 1
)
LIMIT 1000;  -- 每次處理 1000 條

索引:

索引是數(shù)據(jù)庫中用于提高查詢效率的關(guān)鍵工具,它類似書籍的目錄,可以快速定位到數(shù)據(jù)的位置。

1. 索引的作用

  • 加速查詢:通過索引,數(shù)據(jù)庫無需掃描全量數(shù)據(jù),直接定位到符合條件的記錄。

  • 優(yōu)化排序:索引通常已排序,可避免額外的排序操作。

  • 強(qiáng)制唯一性:唯一索引(如主鍵)可防止重復(fù)數(shù)據(jù)。

2. 索引的原理

  • 數(shù)據(jù)結(jié)構(gòu):常見的索引使用 B-Tree(MySQL InnoDB)或哈希表(Memory 引擎)。

  • 存儲方式:索引單獨(dú)存儲,包含鍵值和指向數(shù)據(jù)行的物理地址。

到此這篇關(guān)于利用 MySQL 進(jìn)行數(shù)據(jù)清洗的操作方法的文章就介紹到這了,更多相關(guān)mysql數(shù)據(jù)清洗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解MySQL中的NULL值

    詳解MySQL中的NULL值

    這篇文章主要介紹了MySQL中的NULL值的相關(guān)知識,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • mysql設(shè)置值timestamp獲取當(dāng)前時(shí)間并自動(dòng)更新方式

    mysql設(shè)置值timestamp獲取當(dāng)前時(shí)間并自動(dòng)更新方式

    這篇文章主要介紹了mysql設(shè)置值timestamp獲取當(dāng)前時(shí)間并自動(dòng)更新方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 基于sql語句的一些常用語法積累總結(jié)

    基于sql語句的一些常用語法積累總結(jié)

    本篇文章是對一些常用的sql語句進(jìn)行了總結(jié)與分析,需要的朋友參考下
    2013-06-06
  • MySQL隱式類型轉(zhuǎn)換導(dǎo)致索引失效的解決

    MySQL隱式類型轉(zhuǎn)換導(dǎo)致索引失效的解決

    本文主要介紹了MySQL隱式類型轉(zhuǎn)換導(dǎo)致索引失效的解決,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 一次MySQL慢查詢導(dǎo)致的故障

    一次MySQL慢查詢導(dǎo)致的故障

    這篇文章主要介紹了如何對MySQL慢查詢導(dǎo)致的故障進(jìn)行處理,慢查詢是我們在mysql中經(jīng)常需要使用到的一個(gè)很方便的功能,慢查詢對于跟蹤有問題的查詢很有用,需要的朋友可以參考下
    2015-08-08
  • PHP版Mysql爆破小腳本

    PHP版Mysql爆破小腳本

    本文給大家分享的是使用php實(shí)現(xiàn)暴力破解mysql的小腳本代碼,非常的好用,有需要的小伙伴可以參考下
    2016-10-10
  • window環(huán)境下使用VScode連接虛擬機(jī)MySQL方法

    window環(huán)境下使用VScode連接虛擬機(jī)MySQL方法

    這篇文章主要介紹了window環(huán)境下使用VScode連接虛擬機(jī)MySQL方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • mysql索引失效的幾種情況分析

    mysql索引失效的幾種情況分析

    這篇文章主要給大家介紹了關(guān)于mysql索引失效的情況,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL問答系列之什么情況下會(huì)用到臨時(shí)表

    MySQL問答系列之什么情況下會(huì)用到臨時(shí)表

    MySQL在很多情況下都會(huì)用到臨時(shí)表,下面這篇文章主要給大家介紹了關(guān)于MySQL在什么情況下會(huì)用到臨時(shí)表的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • k8s搭建mysql集群實(shí)現(xiàn)主從復(fù)制的方法步驟

    k8s搭建mysql集群實(shí)現(xiàn)主從復(fù)制的方法步驟

    本文是基于已有k8s環(huán)境下,介紹在k8s環(huán)境中部署mysql主從集群的實(shí)現(xiàn)步驟,對mysql學(xué)習(xí)有一定的幫助,感興趣的可以學(xué)習(xí)一下
    2023-01-01

最新評論

衡阳县| 邓州市| 南昌市| 北安市| 沙雅县| 五峰| 巴彦县| 麻城市| 得荣县| 定日县| 玉屏| 昌邑市| 林甸县| 和静县| 和硕县| 西华县| 兰坪| 林州市| 通榆县| 津市市| 万全县| 阿城市| 赤城县| 罗源县| 香港 | 庆安县| 新竹县| 中牟县| 郓城县| 易门县| 武鸣县| 遂昌县| 深州市| 共和县| 内江市| 邓州市| 萍乡市| 报价| 民乐县| 西充县| 诸城市|