欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL獲取數(shù)據(jù)庫(kù)內(nèi)所有表格數(shù)據(jù)總數(shù)的示例代碼

 更新時(shí)間:2024年11月28日 11:38:17   作者:蠟筆小新星  
在 MySQL 中,要獲取數(shù)據(jù)庫(kù)內(nèi)所有表格的數(shù)據(jù)總數(shù),可以編寫(xiě)一個(gè)查詢(xún)腳本來(lái)遍歷每個(gè)表并計(jì)算其行數(shù),所以本文給大家介紹了MySQL獲取數(shù)據(jù)庫(kù)內(nèi)所有表格數(shù)據(jù)總數(shù)的示例,需要的朋友可以參考下

在 MySQL 中,要獲取數(shù)據(jù)庫(kù)內(nèi)所有表格的數(shù)據(jù)總數(shù),可以編寫(xiě)一個(gè)查詢(xún)腳本來(lái)遍歷每個(gè)表并計(jì)算其行數(shù)。你可以使用 INFORMATION_SCHEMA 數(shù)據(jù)庫(kù),它包含了關(guān)于數(shù)據(jù)庫(kù)元數(shù)據(jù)的表格,如 TABLES 和 COLUMNS。

以下是一個(gè)示例腳本,展示了如何使用 SQL 查詢(xún)和存儲(chǔ)過(guò)程來(lái)獲取所有表格的數(shù)據(jù)總數(shù):

使用 SQL 查詢(xún)和腳本

  • 查詢(xún)所有表的行數(shù)(直接方法,適合命令行工具)

如果你只是臨時(shí)需要這些信息,并且你的數(shù)據(jù)庫(kù)表數(shù)量不多,可以直接在命令行工具中運(yùn)行以下查詢(xún):

SELECT 
    table_name AS 'Table',
    table_rows AS 'Rows'
FROM 
    information_schema.tables
WHERE 
    table_schema = 'your_database_name'
    AND table_type = 'BASE TABLE';

將 your_database_name 替換為你的實(shí)際數(shù)據(jù)庫(kù)名稱(chēng)。table_rows 列提供了每個(gè)表的行數(shù)估算值(對(duì)于 InnoDB 表,這可能是一個(gè)估算值,而不是精確值)。

  1. 使用存儲(chǔ)過(guò)程(適合更復(fù)雜的場(chǎng)景)

如果你只想獲取所有表的總行數(shù),可以使用以下查詢(xún):

SELECT SUM(table_rows) 
FROM information_schema.tables 
WHERE table_schema = 'your_database_name';

這將返回?cái)?shù)據(jù)庫(kù)中所有表的行數(shù)總和。

  • 使用存儲(chǔ)過(guò)程(適合更復(fù)雜的場(chǎng)景)

如果你需要更靈活或者更復(fù)雜的處理,可以創(chuàng)建一個(gè)存儲(chǔ)過(guò)程來(lái)遍歷所有表并計(jì)算其行數(shù)。以下是一個(gè)示例存儲(chǔ)過(guò)程:

DELIMITER //  -- 設(shè)置新的語(yǔ)句結(jié)束符為"http://",以便在存儲(chǔ)過(guò)程中使用";"而不結(jié)束整個(gè)存儲(chǔ)過(guò)程的定義。
 
CREATE PROCEDURE CountAllTableRows()  -- 創(chuàng)建一個(gè)名為CountAllTableRows的存儲(chǔ)過(guò)程。
BEGIN
    -- 變量聲明部分
    DECLARE done INT DEFAULT FALSE;  -- 聲明一個(gè)名為done的整型變量,用于標(biāo)記游標(biāo)是否讀取完畢,初始值為FALSE。
    DECLARE tbl_name VARCHAR(255);    -- 聲明一個(gè)名為tbl_name的字符串變量,用于存儲(chǔ)當(dāng)前處理的表名。
    DECLARE row_count INT DEFAULT 0;  -- 聲明一個(gè)名為row_count的整型變量,用于臨時(shí)存儲(chǔ)行數(shù)(但在這個(gè)過(guò)程中并未使用到)。
    
    -- 游標(biāo)聲明部分
    DECLARE cur CURSOR FOR  -- 聲明一個(gè)名為cur的游標(biāo)。
        SELECT table_name   -- 游標(biāo)查詢(xún)的SQL語(yǔ)句,從information_schema.tables中選擇表名。
        FROM information_schema.tables 
        WHERE table_schema = 'your_database_name'  -- 限定查詢(xún)的數(shù)據(jù)庫(kù)名(需要替換為實(shí)際的數(shù)據(jù)庫(kù)名)。
          AND table_type = 'BASE TABLE';  -- 只選擇基本表(排除視圖等)。
 
    -- 繼續(xù)處理游標(biāo)結(jié)束時(shí)的處理器
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;  -- 當(dāng)游標(biāo)讀取不到數(shù)據(jù)時(shí),設(shè)置done為T(mén)RUE。
 
    -- 臨時(shí)表聲明部分
    CREATE TEMPORARY TABLE IF NOT EXISTS temp_row_counts (  -- 創(chuàng)建一個(gè)名為temp_row_counts的臨時(shí)表(如果不存在)。
        table_name VARCHAR(255),  -- 存儲(chǔ)表名。
        row_count BIGINT  -- 存儲(chǔ)行數(shù),使用BIGINT以支持大表。
    );
 
    -- 打開(kāi)游標(biāo)
    OPEN cur;
 
    -- 讀取循環(huán)
    read_loop: LOOP  -- 定義一個(gè)名為read_loop的循環(huán)。
        FETCH cur INTO tbl_name;  -- 從游標(biāo)中讀取一個(gè)表名到tbl_name變量。
        IF done THEN  -- 判斷是否讀取完畢。
            LEAVE read_loop;  -- 如果讀取完畢,則離開(kāi)循環(huán)。
        END IF;
 
        -- 獲取當(dāng)前表的行數(shù)
        SET @s = CONCAT('SELECT COUNT(*) INTO @cnt FROM ', tbl_name);  -- 拼接動(dòng)態(tài)SQL語(yǔ)句。
        PREPARE stmt FROM @s;  -- 準(zhǔn)備執(zhí)行動(dòng)態(tài)SQL語(yǔ)句。
        EXECUTE stmt;  -- 執(zhí)行動(dòng)態(tài)SQL語(yǔ)句,結(jié)果存儲(chǔ)在@cnt變量中。
        DEALLOCATE PREPARE stmt;  -- 釋放動(dòng)態(tài)SQL語(yǔ)句。
 
        -- 將行數(shù)插入臨時(shí)表
        INSERT INTO temp_row_counts (table_name, row_count) VALUES (tbl_name, @cnt);  -- 將表名和行數(shù)插入臨時(shí)表。
    END LOOP;
 
    -- 關(guān)閉游標(biāo)
    CLOSE cur;
 
    -- 從臨時(shí)表中選擇結(jié)果
    SELECT * FROM temp_row_counts;  -- 查詢(xún)并顯示臨時(shí)表中的所有記錄。
 
    -- 刪除臨時(shí)表
    DROP TEMPORARY TABLE IF EXISTS temp_row_counts;  -- 刪除臨時(shí)表(如果存在)。
END //  -- 存儲(chǔ)過(guò)程定義結(jié)束。
 
DELIMITER ;  -- 將語(yǔ)句結(jié)束符重置為默認(rèn)的";"。

然后,你可以通過(guò)調(diào)用存儲(chǔ)過(guò)程來(lái)獲取所有表的行數(shù):

CALL CountAllTableRows();

注意事項(xiàng):

  1. 在實(shí)際使用存儲(chǔ)過(guò)程之前,需要將 ‘your_database_name’ 替換為實(shí)際的數(shù)據(jù)庫(kù)名稱(chēng)。
  2. 存儲(chǔ)過(guò)程中使用了動(dòng)態(tài)SQL(通過(guò) PREPARE 和 EXECUTE 語(yǔ)句),這是因?yàn)樵诖鎯?chǔ)過(guò)程中直接執(zhí)行包含變量作為表名的SQL語(yǔ)句是不被允許的。
  3. 臨時(shí)表 temp_row_counts 用于存儲(chǔ)每個(gè)表的行數(shù),以便在存儲(chǔ)過(guò)程結(jié)束時(shí)能夠一次性查詢(xún)并顯示所有結(jié)果。
  4. 使用 BIGINT 類(lèi)型來(lái)存儲(chǔ)行數(shù),以支持可能非常大的表。

敲黑板

  1. 性能:對(duì)于非常大的數(shù)據(jù)庫(kù),這些方法可能非常耗時(shí)和占用資源。
  2. 估算值:對(duì)于 InnoDB 表,table_rows 列可能是一個(gè)估算值,而不是精確值。如果需要精確值,必須執(zhí)行 COUNT(*) 查詢(xún)。
  3. 權(quán)限:確保你的數(shù)據(jù)庫(kù)用戶(hù)有足夠的權(quán)限訪問(wèn) INFORMATION_SCHEMA 并執(zhí)行所需的查詢(xún)。

通過(guò)上述方法,你可以輕松獲取 MySQL 數(shù)據(jù)庫(kù)中所有表格的數(shù)據(jù)總數(shù)。

到此這篇關(guān)于MySQL獲取數(shù)據(jù)庫(kù)內(nèi)所有表格數(shù)據(jù)總數(shù)的示例代碼的文章就介紹到這了,更多相關(guān)MySQL獲取表格數(shù)據(jù)總數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysqldump命令導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)方法與實(shí)例匯總

    mysqldump命令導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)方法與實(shí)例匯總

    這篇文章主要介紹了mysqldump命令導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)方法與實(shí)例匯總的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • 使用logrotete定時(shí)切割mysql的慢日志操作

    使用logrotete定時(shí)切割mysql的慢日志操作

    本文介紹了如何在Linux系統(tǒng)中使用logrotate工具對(duì)MySQL慢查詢(xún)?nèi)罩具M(jìn)行自動(dòng)輪轉(zhuǎn)和管理配置,包括創(chuàng)建配置文件、設(shè)置輪轉(zhuǎn)頻率、文件命名、權(quán)限、執(zhí)行腳本以及測(cè)試配置的方法,感興趣的朋友一起看看吧
    2025-03-03
  • linux mysql 找回密碼

    linux mysql 找回密碼

    linux下mysql忘記密碼的解決方法。
    2009-07-07
  • 解析mysql數(shù)據(jù)庫(kù)還原錯(cuò)誤:(mysql Error Code: 1005 errno 121)

    解析mysql數(shù)據(jù)庫(kù)還原錯(cuò)誤:(mysql Error Code: 1005 errno 121)

    本篇文章是對(duì)mysql數(shù)據(jù)庫(kù)還原錯(cuò)誤:(mysql Error Code: 1005 errno 121)的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 詳解MySQL多版本并發(fā)控制機(jī)制(MVCC)源碼

    詳解MySQL多版本并發(fā)控制機(jī)制(MVCC)源碼

    MVCC,即多版本并發(fā)控制(Multi-Version Concurrency Control)指的是,通過(guò)版本鏈維護(hù)一個(gè)數(shù)據(jù)的多個(gè)版本,使得讀寫(xiě)操作沒(méi)有沖突,可保證不同事務(wù)讀寫(xiě)、寫(xiě)讀操作并發(fā)執(zhí)行,提高系統(tǒng)性能
    2021-06-06
  • 詳解mysql基本操作詳細(xì)(二)

    詳解mysql基本操作詳細(xì)(二)

    這篇文章主要介紹了mysql基本操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 一步步帶你學(xué)習(xí)設(shè)計(jì)MySQL索引數(shù)據(jù)結(jié)構(gòu)

    一步步帶你學(xué)習(xí)設(shè)計(jì)MySQL索引數(shù)據(jù)結(jié)構(gòu)

    索引是存儲(chǔ)索引用于快速找到數(shù)據(jù)記錄的一種數(shù)據(jù)結(jié)構(gòu),就好比一本書(shū)的目錄部分,通過(guò)目錄中對(duì)應(yīng)的文章的頁(yè)碼,便可以快速定位到需要的文章,下面這篇文章主要給大家介紹了關(guān)于MySQL索引數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 詳解MySql存儲(chǔ)過(guò)程參數(shù)的入門(mén)使用

    詳解MySql存儲(chǔ)過(guò)程參數(shù)的入門(mén)使用

    這篇文章主要介紹了MySql存儲(chǔ)過(guò)程參數(shù)的入門(mén)使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • mysql查詢(xún)表是否被鎖的方法

    mysql查詢(xún)表是否被鎖的方法

    在本篇文章里小編給大家分享的是關(guān)于mysql查詢(xún)表是否被鎖的方法,有需要的朋友們可以參考下。
    2020-10-10
  • 在Mac系統(tǒng)上配置MySQL以及Squel Pro

    在Mac系統(tǒng)上配置MySQL以及Squel Pro

    給大家講述一下如何在MAC蘋(píng)果系統(tǒng)上配置MYSQL數(shù)據(jù)庫(kù)以及Squel Pro的方法。
    2017-11-11

最新評(píng)論