mysql資料庫計算,資料庫的計算公式

本文目錄一覽:

如何計算mysql資料庫大小

查看mysql資料庫大小的四種辦法,分別有以下四種:

第一種:進去指定schema 資料庫(存放了其他的資料庫的信息)

use information_schema

第二種:查詢所有數據的大小

select concat(round(sum(DATA_LENGTH/1024/1024),2),’MB’) as data from TABLES()

第三種:查看指定資料庫的大小,比如說:資料庫apoyl

select concat(round(sum(DATA_LENGTH/1024/1024),2),’MB’) as data from TABLES where table_schema=’apoyl’;

第四種:查看指定資料庫的表的大小,比如說:資料庫apoyl 中apoyl_test表

select concat(round(sum(DATA_LENGTH/1024/1024),2),’MB’) as data from TABLES where table_schema=’apoyl’ and table_name=’apoyl_test’;

求MySQL資料庫語句 計算某一列的和

MySQL資料庫語句,計算某一列的和用select sum(b) from a就可以了。

下面來補充一些MySql的基本操作命令。

註: 表示參數、[]表示可選項

連接資料庫:mysql mysql -uusername -ppassword;

顯示所有資料庫:mysql show databases;

選擇資料庫:mysql use database name;

創建一個資料庫:mysql create database database name [charset charset];

刪除一個資料庫:mysql drop database database name;

修改資料庫名:mysql無法直接修改資料庫名!

顯示所有表:mysql show tables;

刪除一張表:mysql drop table table name;

修改表名:mysql rename table table name to new table name;

清空表:mysql truncate table name;

truncate和delete的區別:truncate相當於刪表再重建一張相同結構的表,操作後得到一張全新表;delete只是刪除數據,而且是按照行來刪除,如果表中有自增型欄位,其影響還在。

查看錶結構:mysql desc table name;

快速建一張相似的表:mysql create table table name like another table;

MySQL資料庫必會技能,虛擬列的用法

對於想要將自動生成的數據添加到表中的任何人來說, MySQL 虛擬列 是一個強大、易於使用和高級的功能。

INSERT 生成的列允許您在不使用and UPDATE 子句的情況下將自動生成的數據存儲在表中。 這個有用的特性自 5.7 版 起就已成為 MySQL 的一部分,它代表了在生成數據時觸發器的另一種方法。此外,生成的列可以幫助您更輕鬆、更高效地查詢。

虛擬列 列類似於普通列,但您不能手動更改其值。這是因為表達式定義了如何根據從同一行的其他列中讀取的其他值來生成生成列的值。因此,生成的列在表的域內工作,其定義不能涉及 JOIN 語句。

換句話說,您可以將生成的列視為一種視圖,但僅限於列。請注意,生成的列與 SQL 觸發器 不同,您只能在使用 CREATE TABLE or語句時定義它們,語法如下: ALTER TABLE

該 AS (generated_column_expression) 子句指定要添加或更新到表中的列是生成的列。定義 MySQL 將用於計算列值的 generation_expression 表達式,它不能引用另一個生成的列或除當前表的列之外的任何內容。另外,請注意生成表達式只能涉及不可變函數。例如,您不能在生成的列表達式定義中使用返回當前日期的函數,因為它是一個可變函數。

您還可以在關鍵字前面 AS 加上 GENERATED ALWAYS 關鍵字以使生成的列的性質更加明確,但這是可選的。然後,您可以指示生成列的類型是 VIRTUAL 還是 STORED 。您將在下面的章節中了解這兩種類型之間的區別。默認情況下,如果沒有在查詢中明確指定,MySQL 會將生成的列標記為 VIRTUAL .

現在讓我們看看生成的列語法在 CREATE TABLE 查詢中的作用:

在此示例中,該 full_name 列將自動存儲 first_name 和 last_name 列的連接。

如前所述,您可以將生成的列定義為 VIRTUAL 或 STORED。現在讓我們仔細看看這兩種類型。

MySQL 不存儲標記為 VIRTUAL 的 虛擬列 。這意味著 MySQL 在需要時動態評估其值。 BEFORE 這通常在觸發任何查詢後立即發生。換句話說,虛擬生成的列不佔用存儲空間。

MySQL 存儲任何生成的標記為 STORED 的列。這意味著每次插入或更新行時,MySQL 都會評估其值並將其存儲在磁碟上。換句話說,存儲列需要存儲空間,就好像它是普通列一樣。

現在讓我們進一步了解虛擬列和存儲生成列的優缺點。

優點

缺點

優點

缺點

採用生成的列有幾個原因,但以下三個是最重要的。

如您所見,您可以通過將四列與以下生成的列聚合來輕鬆生成此數據欄位:

這將產生:

在這種情況下,生成的列使您能夠直接在資料庫級別標準化數據欄位格式。此外,存儲生成的列避免了每次需要時都構造此欄位的不可避免的開銷。

通常,您使用網站 URL 中的資源 ID 或REST API來檢索您需要的數據。但是公開暴露您的 ID 可能會帶來安全問題。當您發現自己使用自動增量 ID 時尤其如此,這很容易預測並使抓取或機器人攻擊更容易。

為避免這種情況,您可以考慮通過使用自動生成的、隨機的、更安全的公共 ID 來隱藏您的原始 ID。您可以通過對您的 ID 進行散列處理,使用虛擬生成的列來實現這一點,如下所示:

請注意,為避免生成已知的哈希值,您可以將您的 ID 與特殊關鍵字連接起來。 在此處了解有關 MySQL 加密和壓縮功能的更多信息。

過濾數據時,有些列比其他列更有用。此外,您通常必須更改存儲在列中的值的表示形式,以使過濾更簡單或更直觀。您可以定義一個有用的生成列來存儲以所需格式執行過濾所需的信息,而不是在每個過濾器查詢中執行此操作。

例如,您可以定義一個生成的列,以便更輕鬆地找到籃球隊中的球員,如下所示:

這樣的列將產生:

如前所述,您只能在表中使用生成的列。此外,它們只能涉及不可變函數,並且MySQL 生成它們的值以響應 INSERT or UPDATE 查詢。另一方面,觸發器是 MySQL 自動執行的存儲程序,每當與特定表關聯的 或 事件發生 INSERT 時 UPDATE 。 DELETE 換句話說,觸發器可以涉及多個表和所有 MySQL 函數。與生成的列相比,這使它們成為更完整的解決方案。同時,MySQL 觸發器本質上使用和定義更複雜,也比生成的列慢。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/157262.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 19:59
下一篇 2024-11-18 19:59

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入資料庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的資料庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL資料庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28

發表回復

登錄後才能評論