MySQL基礎 十四 資料型別

2021-10-20 12:38:56 字數 3284 閱讀 8234

本篇文章主要是對mysql學習時的一些總結,作為學習筆記記錄。

mysql中的資料與c/c++中的資料型別,都有其內部定義的資料型別,資料型別表明了該型別下資料的屬性和性質。

數值型整型

小數定點數

浮點數字元型

較短的文字

char,varchar

較長的文字

text,blob(較長的二進位制資料)

日期型對於mysql中常見的資料型別大致可以按照上表進行分類,但除此之外也存在其它資料型別,如位型別,enum型別,set型別等。

整數型別

位元組範圍

tinyint

1有符號:-128~127

無符號:0~255

smallint

2有符號:-32768~32767

無符號:0~65535

mediumint

3有符號:同理

無符號:同理

int,integer

4有符號:同理

無符號:同理

bigint

8有符號:同理

無符號:同理

對於整型來說,有以下幾點需要注意:

drop table if exists int_info ;

create table int_info (

t1 tinyint (7) zerofill,

t2 tinyint (7) signed

) ;insert into int_info values(0,-128);

insert into int_info values(255,127);

insert into int_info values(-1,-129);

insert into int_info values(256,128);

對於浮點數來說:

浮點數型別

位元組範圍

float(m,d)4很大

double(m,d)8很大

對於定點數來說:

定點數型別

位元組範圍

dec(m,d)

m+2最大取值範圍與double相同,給定decimal的有效取值範圍由m和d決定

decimal(m,d)

需要注意:

定點型的精確度更高,如果要求插入數值的精度較高(貨幣運算等)時,可以考慮使用

在建表時,為了儲存方便和節約記憶體,所選擇的型別在滿足使用的條件下越簡單越好,資料型別位元組長度越小越好

drop table if exists float_info ;

create table float_info (f1 float, f2 double, f3 decimal) ;

insert into float_info values(123.4523,123.4523,123.4523);

insert into float_info values(123.456,123.456,123.456);

insert into float_info values(123.4,123.4,123.4);

insert into float_info values(1523.4,1523.4,1523.4);

對於字元型來說,有多種方式可以選擇:

常用的字元型別一般為char和varchar,主要差別為:

字元型別

寫法m含義

特點儲存消耗

效率char

char(m)

最大的字元數,可以省略,預設為1

固定長度的字元

比較耗費

高varchar

varchar(m)

最大的字元數,不可以省略

可變長度的字元

比較節省

低對於enum和set型別來說,其使用方法為:

# enum型別用法

drop table if exists enum_info;

create table enum_info (e1 enum ('a', 'b', 'c'));

insert into enum_info values('a');

insert into enum_info values('b');

insert into enum_info values('c');

insert into enum_info values('d');

# set型別用法

drop table if exists set_info;

create table set_info (s1 set ('a', 'b', 'c'));

insert into set_info values('a');

insert into set_info values('a,b');

insert into set_info values('a,b,c');

insert into set_info values('a,b,c,d');

對於日期型的資料來說:

日期和時間型別

位元組最小值

最大值date

41000-01-01

9999-12-31

datetime

81000-01-01 00:00:00

9999-12-31 00:00:00

timestamp

419700101080001

2023年的某個時刻

time

3-838:59:59

838:59:59

year

11901

2155

而對於同樣可以表示日期和時間的datetime和timestamp來說,也存在著區別:

日期型別

位元組範圍

時區影響

datetime

81000-01-01 00:00:00~9999-12-31 00:00:00

不受timestamp

419700101080001~2023年的某個時刻

drop table if exists time_info;

create table time_info (t1 datetime, t2 timestamp);

insert into time_info values(now(),now());

select * from time_info;

show variables like 'time_zone';

set time_zone = '+9:00';

Mysql基礎資料型別

mysql 基礎資料型別筆記 1 設計資料庫之處,選擇的資料型別,應選擇最小資料範圍。2 盡量避免null值 因為查詢語句中,如果包含null列,對mysql來說更難優化,因為null列使得索引 索引統計和值比較都更加複雜。另外,可為null的列會使用更多的儲存空間,在mysql裡也需要特殊處理。當...

MySQL基礎01 資料型別

一 整數型別 每個整型型別可以指定乙個最小顯示寬度 注意 這個寬度並不表示儲存的值有多大 型別儲存空間 n 取值範圍 2 n 1 到 2 n 1 1 tinyint 8 128 127 smallint 16 32768 32767 mediumint 24 8388608 8388607 int3...

MySQL 基礎篇 資料型別

給表字段指定儲存格式 約束 有效範圍,mysql主要有以下幾種資料型別 型別關鍵字 位元組無符號最小值 無符號最大值 整數tinyint10 28 1 整數smallint20 216 1 整數mediumint30 224 1 整數int40 232 1 整數bigint80 264 1 浮點數f...