Mysql的資料型別

2021-07-06 10:28:04 字數 2612 閱讀 7683

一:整型資料

tinyint:1 byte

smallint 2 byte

mediumint: 3 byte

int: 4 byte

big: 8 byte

這裡詳解tinyint,其他幾種和它的用法類似。

tinyint 無符號表示範圍:0-255,有符號表示範圍:-128-127

1、 三個修飾的可選屬性:tinyint(m) unsigned zerofill

(m):寬度(在0填充時才有意義)

unsigned:無符號(要是不寫,預設是有符號的)eg:age tinyint unsigned

zerofill:0填充(預設無符號)

2、當不填充資料時,推薦使用設定預設值。因為不設定時,沒資料時會預設null,但null不好

比較(比較null的語句為select x is null。返回值1表示是)。eg:not null default 0

3、新增乙個新列

// 新增age列到表msg中,列是tinyint型,5位0填充,預設值為0

eg: alter table msg add age tinyint(5) zerofill not null default 0;

二:小數型資料

float(m, d) 浮點型小數

decimal(m, d) 定點型小數

m:表示小數的總位數,不包括小數點

d:小數的位數

eg:float(6, 2) 表示數的範圍為:-9999.99 —— +9999.99

float(6, 2) unsigned 表示範圍為: 0.00 —— +9999.99(與整型的無符號表示有點區別)

float和deciaml的區別在於,後者表示的資料更精確。

eg: alter table msg add age float(6, 2) zerofill not null default 0.0;

這裡要注意一下,0填充為:000.00 加小數點一共6位。

三:字元型資料

char 定長字串char(m) 0

<= m <=255

varchar 變長字串varchar(m)0

<= m <=65535

text  文字串text 存2萬到6萬個字元

char與varchar的區別:

1、儲存範圍不同

上面的m代表存放字元的個數,如char(8)表示可以存放8個字元(注意:'a','王',

前者佔乙個位元組,後者佔兩個位元組,但都只算乙個字元)。varchar與char有點區別,

它最多存放65535個位元組的資料,由於乙個utf8資料佔3個位元組,因此存放utf8的字元

大約是兩萬個,這就是text為什麼存放資料為2萬到6萬。

2、空間利用率不同

char是定長的:申請m個空間,實存n個空間,當nvarchar是變長的:申請m個空間,實存n個空間,當n(2byte用來表示實際儲存長度)

3、對末尾空格的處理不同

我們知道,char當實際儲存空間小於申請空間時,剩下的空間用空格填充。

因此當資料的末尾是空格時,char型儲存會把空格當填充資料處理

因此會導致資料的丟失。varchar就不會出現這種情況。

4、定長的char型雖然有時候浪費空間,儲存、讀取速度快。

text是文字型別,可以存比較大的文字段,但收索速度較慢,如果文字不是特別長

建議用char或者varchar代替還有就是text不用加預設值,加了也沒用。

四:時間型別:

1、year型別:典型格式:1994表示範圍:1901——2155 注意:0000表示錯誤的選擇

當輸入兩位數時:00——69表示:2023年到2023年

70——99表示:2023年到2023年

2、date型別:典型格式:1949-10-01表示範圍:1000-01-01——9999-12-31

3、time型別:典型格式:12:12:12表示範圍:-838:59:59——+838:59:59

4、datetime型別:典型格式:1949-10-01 12:12:12

表示範圍:1000-01-01 00:00:00 —— 9999-12-31 23:59:59

時間戳:表示1970-01-01 00:00:00 到當前時刻的秒數。

datetime型別表示時間雖然便於我們觀察,但不便於計算機的運算,因此一般儲存註冊時間、

商品發布時間等使用int來記錄時間戳,這樣既便於計算機運算,又便於轉換成易於觀察的格式。

小知識點:

1、在一條語句前面加入#號表示,該行為注釋。eg: #時間型別:

2、關於enum列舉型別。它是字元型別中的一種,但不太符合資料庫的設計原則

eg:// 插入時資料要麼為'男', 要麼為'女'

create table gender(

gender enum('男', '女')

);// 正確(注意插入時不加列選項,表示插入所有列)

insert into gender

values

('男');

// 錯誤

insert into gender

values

('王');

mysql資料型別用法 mysql資料型別和用法

歡迎進入linux社群論壇,與200萬技術人員互動交流 進入 mysql支援多種列型別 數值型別 日期 時間型別和字串 字元 型別。本章首先對這些列型別進行了概述,然後更加詳細地描述了各種列的型別,以及列型別儲存需求的總結。概述很簡單。關於具體列型別 歡迎進入linux社群論壇,與200萬技術人員互...

mysql 資料型別 真假 MySQL 資料型別

mysql基礎 資料型別 整型型別 根據所儲存的整數數值取值範圍不同,可分為以下五類 1 tinyint佔1個位元組 2 smallint佔2個位元組 3 mediumint 佔3個位元組 4 int佔4個位元組 5 bigint佔8個位元組 根據每種型別所佔的位元組數可確定其無符號整數和有符號整數...

mysql 郵箱 資料型別 mysql 資料型別

1 整型mysql資料型別含義 有符號 tinyint m 1個位元組 範圍 128 127 smallint m 2個位元組 範圍 32768 32767 mediumint m 3個位元組 範圍 8388608 8388607 int m 4個位元組 範圍 2147483648 21474836...