1. 程式人生 > >資料庫中的----資料型別

資料庫中的----資料型別

資料型別

資料型別分類

  • 資料型別分類

在這裡插入圖片描述

數值型別

  • 數值型別
    在這裡插入圖片描述

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用逗號分隔的字串
    

在這裡插入圖片描述