數據庫數據類型

07.14自我總結

MYSQL數據庫數據類型

一.整數類型和浮點數典型

1.有符號/沒符號

對於整數和負整數來講,默認狀況下是有符號範圍的mysql

默認有符號sql

有符號和沒符號其實就是有沒有包括負數,有符號是包括負數的數據庫

設置成無符號:編碼

alter table 表名 變量名 數據類型 unsigned;翻譯

嚴格模式 非嚴格模式
有符號 (-,+) 超出範圍會報錯 (-,+) 超出範圍取極值
無符號 (0,+) 超出範圍會報錯 (0,+) 超出範圍取極值

2.嚴選/非嚴選

咱們不推薦使用非嚴格模式下創建table,由於它會可能形成數據丟失的狀況,因此咱們必須在5.6版本中將mysql設置爲嚴格模式。code

方法一:select@@sql_mode; @表示全局變量;@@表示會話級變量(局部)索引

​ 臨時設置set @@sql_mode ='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES ';ci

方法二:直接修改配置文件;字符串

​ [mysqld]table

​ sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 並重啓服務端mysql後生效.

  • 嚴選狀況下,數據超過他的設置範圍他會報錯

  • 非嚴選狀況下,數據超過他的設置範圍不會報錯,可是隻存他設置大小的那一部分的數據,多餘的會丟掉

3.常見的類型

1.整數型

數據類型 字節數 符號範圍 有符號範圍
TINYINT 1 0~255 -128~127
SMALLINT 2 0~65535 -32768~32767
MEDIUMINT 3 0~16777215 -8388608~8388607
INT 4 0~4294967295 -2147483648~2147483647
BIGINT 8 0~18446744073709551615 -9223372036854775808
~9223372036854775807

2.浮點型

數據類型 字節數 符號範圍 有符號範圍
float 4 1.175494351E-38
~3.402823466E +38
-3.402823466E+38~
-1.175494351E-38
double 8 2.2250738585072014E-308
~1.7976931348623157E+308
-1.7976931348623157E+308
~-2.2250738585072014E- 308
decimal[(M[,D])] 最大與
double相同
不固定 不固定 10.2 decimal(3,1);

二.字符串類型

1.char 與varchar

char:定長字符串,字符長度0-255個字節之間,存儲時佔用固定字節空間

相對於varchar來說

優勢: 讀取存儲速度快於varchar

varchar:可變長度字符串,字符長度在0-65532個字節,存儲式佔用空間實際字節長度+1,而+1是存的他的長度

緣由:由於char咱們若是規定6,而後輸入3個字符,他後面的內容會用宮格來填充,而varchar不會用空格填充,全部存的時候空間節省了,而讀的時候須要發送字符的數量全部讀取會變慢

2.binary 與 varbinary

BINARY和VARBINARY類相似於CHAR和VARCHAR,不一樣的是它們包含二進制字符串而不要二進制字符串
輸入值的和char 與varchar差很少的填充效果

3.text與blob

blob:沒有編碼的二進制大字符串.(瞭解便可)

text:具有編碼的大字符串;

都有四種

  • tinyblob,tinytext:
  • blob,text
  • mediumblob,mediumtext
  • longblob,longtext

4.enum與set

規定這個裏面輸入內容是什麼,你能夠輸入他的內容,也能夠輸入他的索引

enum與set區別,enum只能輸一個,set能輸入一個或多個,且用集合的形式輸入

注意: mysql會自動將字符串後面的空格刪掉 因此你的數據在存儲前應該先把空格處理掉

三.時間類型

  • year :格式YYYT

  • data:格式YYYY-MM-DD
  • time:格式HH:MM:SS
  • datatime:格式YYYY-MM-DD HH:MM:SS
  • timestamp :格式YYYY-MM-DD HH:MM:SS (不用輸入默認爲數據插入時候的插入時間)

注意:

  • 0-69 翻譯爲 2000-2069; 70-99 翻譯爲1790-1999
  • year、date、time既能夠用字符串也能夠用數字輸入值;current_time和now()輸入系統當前日期
  • time不只能夠表示一天的時間,也能夠表示兩個時間的時間間隔
  • 'D HH:MM:SS'格式的字符串,D表示日(0-34),HH的實際值爲D*24+HH
  • datetime、timestamp只能以字符串形式輸入
  • 在使用timestamp時,輸入current_timestamp輸入系統當前日期和時間
  • 在使用timestamp時,輸入null或不輸入,系統會自動輸入當前日期和時間

相關文章
相關標籤/搜索