當前位置:首頁 » 數據倉庫 » mysql資料庫數字類型
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql資料庫數字類型

發布時間: 2022-11-03 03:30:31

❶ Mysql支持的數據類型有哪些

Mysql支持的多種數據類型主要有:數值數據類型、日期/時間類型、字元串類型。

blog——-二進制大對象,用來存儲可變數量的數據。

數據類型

存儲范圍(位元組)

tinyblog 最多255=2^8-1 位元組

bolg 最多65535=2^16-1 位元組

mediumblog 最多16777215=2^24-1 位元組

longblog 最多4294967295=4GB=2^32-1 位元組

❷ mysql中有數量用什麼數據類型

MySQL 數據類型細分下來,大概有以下幾類:

  • 數值,典型代表為 tinyint,int,bigint
  • 浮點/定點,典型代表為 float,double,decimal 以及相關的同義詞
  • 字元串,典型代表為 char,varchar
  • 時間日期,典型代表為 date,datetime,time,timestamp
  • 二進制,典型代表為 binary,varbinary
  • 位類型
  • 枚舉類型
  • 集合類型

❸ mysql中常見的數據類型

一:MySQL數據類型

MySQL中定義數據欄位的類型對你資料庫的優化是非常重要的

MySQL支持多種數據類型,大致可以分為三類:數值 日期/時間和字元串

二、數值類型

1.整數類型

❹ 關於mysql資料庫裡面數據類型number的問題

MySQL 數據類型細分下來,大概有以下幾類:

  • 數值,典型代表為 tinyint,int,bigint

  • 浮點/定點,典型代表為 float,double,decimal 以及相關的同義詞

  • 字元串,典型代表為 char,varchar

  • 時間日期,典型代表為 date,datetime,time,timestamp

  • 二進制,典型代表為 binary,varbinary

  • 位類型

  • 枚舉類型

  • 集合類型

  • 大對象,比如 text,blob

  • json 文檔類型

  • 一、數值類型(不是數據類型,別看錯了)如果用來存放整數,根據范圍的不同,選擇不同的類型。


  • 注意:timestamp 代表的時間戳是一個 int32 存儲的整數,取值范圍為 '1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999';datetime 取值范圍為 '1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。

  • 綜上所述,日期這塊類型的選擇遵循以下原則:

  • 1. 如果時間有可能超過時間戳范圍,優先選擇 datetime。2. 如果需要單獨獲取年份值,比如按照年來分區,按照年來檢索等,最好在表中添加一個 year 類型來參與。3. 如果需要單獨獲取日期或者時間,最好是單獨存放,而不是簡單的用 datetime 或者 timestamp。後面檢索時,再加函數過濾,以免後期增加 SQL 編寫帶來額外消耗。

  • 4. 如果有保存毫秒類似的需求,最好是用時間類型自己的特性,不要直接用字元類型來代替。MySQL 內部的類型轉換對資源額外的消耗也是需要考慮的。

    示例 5

  • 建立表 t5,對這些可能需要的欄位全部分離開,這樣以後寫 SQL 語句的時候就很容易了。

  • 當然了,這種情形佔用額外的磁碟空間。如果想在易用性與空間佔用量大這兩點來折中,可以用 MySQL 的虛擬列來實時計算。比如假設 c5 欄位不存在,想要得到 c5 的結果。mysql-(ytt/3305)->alter table t5 drop c5, add c5 year generated always as (year(c1)) virtual;Query OK, 1 row affected (2.46 sec)Records: 1 Duplicates: 0 Warnings: 0



  • 五、二進制類型

  • binary 和 varbinary 對應了 char 和 varchar 的二進制存儲,相關的特性都一樣。不同的有以下幾點:

  • binary(10)/varbinary(10) 代表的不是字元個數,而是位元組數。

  • 行結束符不一樣。char 的行結束符是 ,binary 的行結束符是 0x00。

  • 由於是二進制存儲,所以字元編碼以及排序規則這類就直接無效了。

  • 示例 6

    來看這個 binary 存取的簡單示例,還是之前的變數 @a。

    切記!這里要提前計算好 @a 佔用的位元組數,以防存儲溢出。


  • 六、位類型

  • bit 為 MySQL 里存儲比特位的類型,最大支持 64 比特位, 直接以二進制方式存儲,一般用來存儲狀態類的信息。比如,性別,真假等。具有以下特性:

  • 1. 對於 bit(8) 如果單純存放 1 位,左邊以 0 填充 00000001。2. 查詢時可以直接十進制來過濾數據。3. 如果此欄位加上索引,MySQL 不會自己做類型轉換,只能用二進制來過濾。

  • 示例 7

  • 創建表 c1, 欄位性別定義一個比特位。mysql-(ytt/3305)->create table c1(gender bit(1));Query OK, 0 rows affected (0.02 sec)



  • mysql-(ytt/3305)->select cast(gender as unsigned) 'f1' from c1;+------+| f1 |+------+| 0 || 1 |+------+2 rows in set (0.00 sec)


  • 過濾數據也一樣,二進制或者直接十進制都行。mysql-(ytt/3305)->select conv(gender,16,10) as gender -> from c1 where gender = b'1';+--------+| gender |+--------+| 1|+--------+1 row in set (0.00 sec)mysql-(ytt/3305)->select conv(gender,16,10) as gender -> from c1 where gender = '1';+--------+| gender |+--------+| 1|+--------+1 row in set (0.00 sec)


  • 其實這樣的場景,也可以定義為 char(0),這也是類似於 bit 非常優化的一種用法。

  • mysql-(ytt/3305)->create table c2(gender char(0));Query OK, 0 rows affected (0.03 sec)


  • 那現在我給表 c1 簡單的造點測試數據。

  • mysql-(ytt/3305)->select count(*) from c1;+----------+| count(*) |+----------+| 33554432 |+----------+1 row in set (1.37 sec)


  • 把 c1 的數據全部插入 c2。

  • mysql-(ytt/3305)->insert into c2 select if(gender = 0,'',null) from c1;Query OK, 33554432 rows affected (2 min 18.80 sec)Records: 33554432 Duplicates: 0 Warnings: 0


  • 兩張表的磁碟佔用差不多。root@ytt-pc:/var/lib/mysql/3305/ytt# ls -sihl總用量 1.9G4085684 933M -rw-r----- 1 mysql mysql 932M 12月 11 10:16 c1.ibd4082686 917M -rw-r----- 1 mysql mysql 916M 12月 11 10:22 c2.ibd


  • 檢索方式稍微有些不同,不過效率也差不多。所以說,字元類型不愧為萬能類型。


  • 七、枚舉類型

  • 枚舉類型,也即 enum。適合提前規劃好了所有已經知道的值,且未來最好不要加新值的情形。枚舉類型有以下特性:

  • 1. 最大佔用 2 Byte。2. 最大支持 65535 個不同元素。3. MySQL 後台存儲以下標的方式,也就是 tinyint 或者 smallint 的方式,下標從 1 開始。4. 排序時按照下標排序,而不是按照裡面元素的數據類型。所以這點要格外注意。

  • 示例 8

  • 創建表 t7。mysql-(ytt/3305)->create table t7(c1 enum('mysql','oracle','dble','postgresql','mongodb','redis','db2','sql server'));Query OK, 0 rows affected (0.03 sec)



  • 八、集合類型

    集合類型 SET 和枚舉類似,也是得提前知道有多少個元素。SET 有以下特點:

  • 1. 最大佔用 8 Byte,int64。2. 內部以二進制位的方式存儲,對應的下標如果以十進制來看,就分別為 1,2,4,8,...,pow(2,63)。3. 最大支持 64 個不同的元素,重復元素的插入,取出來直接去重。4. 元素之間可以組合插入,比如下標為 1 和 2 的可以一起插入,直接插入 3 即可。

  • 示例 9

    定義表 c7 欄位 c1 為 set 類型,包含了 8 個值,也就是下表最大為 pow(2,7)。

  • mysql-(ytt/3305)->create table c7(c1 set('mysql','oracle','dble','postgresql','mongodb','redis','db2','sql server'));Query OK, 0 rows affected (0.02 sec)


  • 插入 1 到 128 的所有組合。

  • mysql-(ytt/3305)->INSERT INTO c7WITH RECURSIVE ytt_number (cnt) AS ( SELECT 1 AS cnt UNION ALL SELECT cnt + 1 FROM ytt_number WHERE cnt < pow(2, 7) )SELECT *FROM ytt_number;Query OK, 128 rows affected (0.01 sec)Records: 128 Duplicates: 0 Warnings: 0

  • 九、數據類型在存儲函數中的用法

    函數里除了顯式聲明的變數外,默認 session 變數的數據類型很弱,隨著給定值的不同隨意轉換。

  • 示例 10

  • 定義一個函數,返回兩個給定參數的乘積。定義里有兩個變數,一個是 v_tmp 顯式定義為 int64,另外一個 @vresult 隨著給定值的類型隨意變換類型。


    簡單調用下。

  • mysql-(ytt/3305)->select ytt_sample_data_type(1111,222) 'result';+--------------------------+| result |+--------------------------+| The result is: '246642'. |+--------------------------+1 row in set (0.00 sec)


  • 總結

    本篇把 MySQL 基本的數據類型做了簡單的介紹,並且用了一些容易理解的示例來梳理這些類型。我們在實際場景中,建議選擇適合最合適的類型,不建議所有數據類型簡單的最大化原則。比如能用 varchar(100),不用 varchar(1000)。

❺ mysql 存儲金額類型,用什麼數據類型比較可靠,一般企業數據用什麼數據類型

對於游戲幣等代幣,一般存儲為int類型是可行的。問題在於越界,int類型長度為11位。

在存儲人民幣相關的金額的時候,則只能存儲到9長度的人民幣,也就是說,最大隻能存儲999999999,不到10億的數值,如果業務增長很快的話,就會給自己留下隱患。

Decimal:Decimal為專門為財務相關問題設計的數據類型。

DECIMAL從MySQL 5.1引入,列的聲明語法是DECIMAL(M,D)。在MySQL 5.1中,參量的取值范圍如下:M是數字的最大數(精度)。其范圍為1~65(在較舊的MySQL版本中,允許的范圍是1~254),M 的默認 值是10。

D是小數點右側數字的數目(標度)。其范圍是0~30,但不得超過M。說明:float佔4個位元組,double佔8個位元組,decimail(M,D)佔M+2個位元組。

如DECIMAL(5,2) 的最大值為9 9 9 9 . 9 9,因為有7 個位元組可用。能夠解決數據的范圍和精度的問題。

(5)mysql資料庫數字類型擴展閱讀

MySQL數據類型DECIMAL用法:

MySQLDECIMAL數據類型用於在資料庫中存儲精確的數值。我們經常將DECIMAL數據類型用於保留准確精確度的列,例如會計系統中的貨幣數據。

要定義數據類型為DECIMAL的列,請使用以下語法:column_nameDECIMAL(P,D);

在上面的語法中:

P是表示有效數字數的精度。P范圍為1〜65。

D是表示小數點後的位數。D的范圍是0~30。MySQL要求D小於或等於(<=)P。

DECIMAL(P,D)表示列可以存儲D位小數的P位數。十進制列的實際范圍取決於精度和刻度。

與INT數據類型一樣,DECIMAL類型也具有UNSIGNED和ZEROFILL屬性。 如果使用UNSIGNED屬性,則DECIMAL UNSIGNED的列將不接受負值。

如果使用ZEROFILL,MySQL將把顯示值填充到0以顯示由列定義指定的寬度。 另外,如果我們對DECIMAL列使用ZERO FILL,MySQL將自動將UNSIGNED屬性添加到列。

❻ MYSQL資料庫類型分為四大主要類別: ( )日 期型()和二進制型

(數值型 )日 期型(字元型)和二進制型?
數值型主要是保存數字的,又分為嚴格數值數據類型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數值數據類型(FLOAT、REAL和DOUBLE PRECISION)。
日期型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。
字元型,也稱為字元串類型,主要為CHAR、VARCHAR,TEXT等
二進制這主要為BLOB

❼ mysql 資料庫varchar可以存儲多少個漢字和多少個數字

首先要確定mysql版本,一般一個漢字2個位元組,50即可存25個漢字。

4.0版本以下,varchar(100),指的是100位元組,如果存放UTF8漢字時,只能存33個(每個漢字3位元組)

5.0版本以上,varchar(100),指的是100字元,無論存放的是數字、字母還是UTF8漢字(每個漢字3位元組),都可以存放100個。

varchar特點

1、使用比固定長度類型(char)佔用更少存儲空間(除了使用ROW_FORMAT=FIXED創建的MyISAM表)。

2、使用額外的1-2位元組來存儲值長度,列長度<=255使用1位元組保存,其它情況使用2位元組保存。例如varchar(10)會佔用11位元組存儲空間,varchar(500)會佔用502位元組存儲空間。

3、節約空間,所以性能會有幫助。在更新的時候會產生額外的工作。

以上內容參考:網路-varchar

❽ 資料庫中所有的數據類型

SQL 用於各種資料庫的數據類型:

一、MySQL 數據類型:

在 MySQL 中,有三種主要的類型:Text(文本)、Number(數字)和 Date/Time(日期/時間)類型。

1、Text 類型。

❾ mysql數字欄位類型

mysql數字欄位的類型是int類型,int類型是整型