資料庫 MySQL欄位資料型別

2021-08-30 17:58:08 字數 1738 閱讀 3625

欄位是列表中 的列名,列是表的重要組成部分,mysql資料庫中,列中的每乙個資料都需要指定其所屬型別,以確保資料的準確性和系統 的穩定性。

字段資料型別分為三類:數值型別、字串型別、時間日期型別。

數值型:

整數:tinyint(1byte --> -128 —— 127 ) tinyint unsigned( 0 – 255 )

smallint(2b–> -32768~32767)smallintunsigned(0 – 65535)

int(4byte --> -2^31 – 2^31-1 ),

bigint(8byte)

浮點數:

decimal( 64位 )比float( 4b) 的精度更大,float存在精度缺失。

double(8b)

decimal( m,n )

float( m,n ):m表示總長度,n表示小數字數

eg:float(4,2) -99.99 — 99.99

float(4,2) unsigned 0 – 99.99

字串型別:

乙個中文字和乙個英文本母都表示乙個字元。

char(m):定長字串,m 最大值為 255,單位為字元

varchar(m):非定長字串 m最大值為65532,mysql規定一行長度不超過65535個位元組,其中 1 – 3 個位元組用來描述字串長度

定長字串檢索效率高,空間利用率低;(身份證號,手機號,銀行卡號等字段)

變長字串檢索效率低,空間利用率高(姓名一般定義為20,位址等字段)

text:大文字

時間型別:

date:日期型別 yyyy-mm-dd : 年 月 日 3位元組

datetime : 日期型別 yyyy-mm-dd hh:mm:ss 年月日時分秒 8位元組

timestamp:時間戳 日期型別 yyyy-mm-dd hh:mm:ss 4位元組

每當有資料的插入或更新時,自動填充當前時間,無需使用者插入

從1970-1-1 00:00:01開始到現在經過的秒數

復合型別:

列舉:enum 表示單選

enum(』選項1』,』選項2』,』選項3』…),最終只儲存其中具體某一項

集合:set

set(』選項1』,』選項2』,』選項3』…) 最終可儲存多個選項

檢索set集合指定的選項 find_in_set(』要查詢的選項』,set集合)

eg: select * from [table_name] where find_in_set(』睡覺』,[set_name]);

關於varchar(len),len到底是多大,這個len值,和表的編碼密切相關:

varchar長度可以指定為0到65535之間的值,但是有1 - 3 個位元組用於記錄資料大小,所以說有效位元組數是 65532。 當我們的表的編碼是utf8時,varchar(n)的引數n最大值是65532/3=21844[因為utf中,乙個字元占用3個字 節],如果編碼是gbk,varchar(n)的引數n最大是65532/2=32766(因為gbk中,乙個字元占用2位元組)。

char和varchar的區別:

char 適合長度固定的資料

如果資料長度有變化,就使用變長(varchar),

定長的磁碟空間比較浪費,但是效率高。

變長的磁碟空間比較節省,但是效率低。

資料庫之欄位資料型別

1.整數資料型別 bigint 整數值超過int資料範圍時才可以使用 int 是將乙個數值向下取整為最接近的整數的函式 smallint 需要 2 個 位元組儲存的整數。tinyint tinyint 型的字段如果設定為unsigned型別,只能儲存從0到255的整數,不能用來儲存負數。tinyin...

MySQL 字段資料型別說明

型別說明 儲存量tinyint m unsigned zerofill 乙個很小的整數。有符號的範圍是 128到127,無符號的範圍是0到255。1 位元組 smallint m unsigned zerofill 乙個小整數。有符號的範圍是 32768到32767,無符號的範圍是0到65535。2...

資料庫 時間戳 字段資料型別選擇

一般情況下,我們使用 秒 級的時間戳來儲存就ok了.使用 無符號 int 型別 足夠支撐到2103年了 不用擔心int範圍不夠.但是 毫秒 13位 不夠.我們接下來另說.關於 毫秒級的儲存 只能 使用 bigint 資料型別 範圍為 9,223,372,036,854,775,808,9 223 3...