資料庫中的----資料型別
阿新 • • 發佈:2019-01-01
資料型別
資料型別分類
- 資料型別分類
數值型別
- 數值型別
tinyint型別
- tinyint型別(範圍是 -128------127)
create table tt1(num tinyint);
當越界插入時就會報錯
無符號型別
- 無符號(範圍是 0-------255)
在MySQL中,整型可以指定是有符號的和無符號的,預設是有符號的; 可以通過UNSIGNED來說明某個欄位是無符號的; create table tt2(num tinyint unsigned); 當插入有符號數時(比如-1),就會報錯 儘量不使用unsigned
bit型別
- bit型別
bit欄位在顯示時,按照ASCII碼對應的值顯示,所以,上面第一次複製為10 時,bit位置的值沒有顯示出來
bit[(M)] : 位欄位型別。M表示每個值的位數,範圍從1到64。
如果M被忽略,預設為1。
當我們只需要存放0或1時,可以定義bit(1),可以節省空間
小數型別
- 小數型別
float型
float[(m, d)] [unsigned] : M指定顯示長度,d指定小數位數,佔用空間4個位元組 小數:float(4,2)表示的範圍是-99.99 ~ 99.99,MySQL在儲存值時會進行四捨五入。
上面的-99.991,多餘的0.001被捨去了
decimal型
decimal(m, d) [unsigned] : 定點數m指定長度,d表示小數點的位數
decimal(5,2) 表示的範圍是 -999.99 ~ 999.99
decimal和float區別:
- . float和decimal表示的精度不一樣
float表示的精度大約是7位。
decimal整數最大位數m為65。支援小數最大位數d是30。
如果d被省略,預設為0.如果m被省略,預設是10。
如果希望小數的精度高,推薦使用decimal。
字串型別
char 型別
- char
char(L): 固定長度字串,L是可以儲存的長度,單位為字元,最大長度值可以為255
char(2) 表示可以存放兩個字元,可以是字母或漢字,但是不能超過2個, 最多隻能是255
varchar型別
- varchar
varchar(L): 可變長度字串,L表示字元長度,最大長度65535個位元組
關於varchar(len),len到底是多大,這個len值和表的編碼密切相關:
varchar長度可以指定為0—65535,但是有1–2個位元組用於記錄資料大小,
所以有效位元組數是65532(65533)
當我們的表的編碼是utf8時,varchar(n)的引數n最大值65532/3=21844[因為utf中,
一個字 符佔用3個位元組],如果編碼是gbk,varchar(n)的引數n最大是65532/2=32766
(因為gbk中,一個字元佔用2位元組)。
char和varchar比較:
- 如果資料確定長度都一樣,就使用定長(char),比如:身份證,手機號,md5
- 如果資料長度有變化,就使用變長(varchar), 比如:名字,地址,但是你要保證最長的能存的進去。
- 定長的磁碟空間比較浪費,但是效率高。
- 變長的磁碟空間比較節省,但是效率低。
日期和時間型別
日期和時間型別
常用的日期有如下三個:
datetime 時間日期格式 'yyyy-mm-dd HH:ii:ss' 表示範圍從1000到9999,佔用八位元組
date:日期 'yyyy-mm-dd',佔用三位元組
timestamp:時間戳,從1970年開始的 yyyy-mm-dd HH:ii:ss格式和datetime完全一致,
佔用四位元組;
新增資料時,時間戳會自動補上當前時間
更新資料時,時間戳會更新當前時間
enum和set
-
enum
enum:列舉,“單選”型別;
enum(‘選項1’,‘選項2’,‘選項3’) -
set
set:集合,“多選”型別
set(‘選項值1’,‘選項值2’,‘選項值3’…)
不建議在新增列舉值,集合值的時候採用數字的方式,因為不利於閱讀。
- 集合查詢使用find_ in_ set函式:
-
find_ in_ set(sub,str_list):
-
如果sub在str_list中,則返回下標;
-
如果不在,返回0;
-
str_list用逗號分隔的字串