本篇文章主要是對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...