MySQL資料型別及sql模型及伺服器變數

IT小能手發表於2018-03-12
myisam  不支援事物,表鎖

  .frm: 儲存表的結構

 

     

 

         

 

  

 

  
  .MYD: 儲存資料,MYDA他的縮寫

 

       
  .MYI:  儲存索引,MYIndex的縮寫

 

 

innodb (每表一個表空間檔案 ) 支援事物,支援行鎖,支援外來鍵
   . frm 儲存表結構
   .ibd  表空間(儲存資料和索引)
mysql預設從儲存引擎偉Innodb
mysql儲存引擎詳細見: mysql 的儲存引擎
 
連線mysql
  1.應用程式連線伺服器的方式
        動態sql:通過函式或方法與資料庫服務建立連線,然後通過協議將語句傳送到服務端
        嵌入式sql:通過api直接連線到伺服器 
 
  2.客戶端連線服務端時可以有多種協議
     –protocol=tcp|socket|pipe|memory (如果客戶端服務端不在同一個機器上必須使用tcp,在同一個機器上uninx可以使用socket,windows可以使用pipe|memory)

 

啟動mysql時實際用的是mysql_safe(以安全執行緒方式啟動mysql)
mysql啟動時會在多個地方找配置檔案
  /etc/my.cnf ––>   /etc/myql/my.cnf ––>   安裝目錄下的/my.cnf   ––>   –defaults-extra-file=檔案(指定配置檔案)   ––>  使用者家目錄下的/my.cnf  如果找到多個配置檔案,最後找到的是最終生效的

     <— 檢視mysql的配置檔案的啟動或者說是讀取順序 
                   mysqld –verbose –help | grep -A 1 `Default options`
                  —>

#mysqld –help -verbose 檢視mysqld 預設的引數

mysql.cnf配置檔案中
[mysqld] 只對mysqld生效
[client] 對所有客戶端生效
[mysql] 只對mysql生效

 

sql模型,mysql不同的處理處理機制:

  ANSI QUOTES :               雙引號””和反撇號“是相同的只能引用欄位名,表名。單引號“只能引用字串
    IGNORE_SPACE :             在內建的函式中忽略多餘的空白字元
    STRICT_ALL_TABLES :    只要違反了資料規則都不允許,而且會返回錯誤
    STRICT_TARNS_TABLES  :向一個支援事物的表插入非法資料時是不允許的,而且會返回一個錯誤

檢視sql模型 show global variables like `sql_mode`  檢視全域性的變數

mysql伺服器變數

  作用域劃分:
    全域性變數:檢視全域性變數 show global variables
    會話變數:檢視會話變數 show [session] variables ,
        會話一終止會話變數就失效了(簡單的說會話變數作用當前會話,全域性變數作用於所有會話),當會話變數和全域性變數衝突時,會話變數覆蓋全域性變數

  生效時間:
    動態:立即生效,重啟失效, 修改會話變數只對當前會話有效
      修改全域性變數,對當前會話無效 <(因為修改的是全域性變數而會話變數還是以前的,當會話變數和全域性變數衝突時,會話變數覆蓋全域性變數)>,只對新建立會話有效

    靜態:重啟生效,靜態的引數寫到配置檔案中或通過引數傳遞給mysqld

  呼叫伺服器變數(內建變數): @@
  呼叫使用者自定義變數: @
  顯示變數: select @@global.sql_mode     顯示全域性sql模型
       select @@session.sql_mode     顯示會話sql模型

  設定變數: set {global|session} 變數名=`value`

 

show character set ; 檢視mysql支援的字符集
show collaction ; 檢視mysql的排序規則

 
資料型別 (unisined表示無符號型別)

整型: 
型別                  佔用位元組      最小值                          最大值 
TINYINT           1               有符號-128,無符號0               有符號127,無符號255 
SMALLINT          2     有符號-32768,無符號0                有符號32767,無符號65535 
MEDIUMINT    3     有符號-8388608,無符號0             有符號8388607,無符號1677215 
INT和INTEGER  4     有符號-2147483648,無符號0            有符號2147483647,無符號4294967295 
BIGINT          8     有符號-9223372036854775808,無符號0          有符號9223372036854775807,無符號18446744073709551615

浮點型: 
型別           位元組 
FLOAT(g,f)  4 或8
  g:表示整體多少個字元
  f:表示小數點後多少個字元

DOUBLE  8 
說明:當需要精確到小數點後10位以上,使用DOUBLE型別

定點數: 
型別 位元組 最小值 最大值 
DEC(M,D)和DECIMAL(M,D) M+2 
說明:有效取值範圍由M和D確定,浮點型儲存的是近似值,定點數型儲存的是字串

位型別: 
型別   位元組   最小值   最大值 
BIT(M)    1-8       BIT(1)   BIT(64) 
說明:位元組數是M,取值範圍為1-8

日期時間型: 
型別     位元組     最小值         最大值 
DATE      4           1000-01-01         9999-12-31 
DATETIME   8     1000-01-01 00:00:00    9999-12-31 23:59:59 
TIMESTAMP  4      19700101080001         2038年某個時刻 
TIME      3   -835:59:59          838:59:59 
YEAR     1     1901           2155

字串型別: 
  CHAR系列: 
  型別           位元組描述 
  CHAR(M)           M為0-255的整數      char列的長度被固定為建立表時所宣告的長度
  VARCHAR(M)    M為0-65535的整數   VARCHAR列值長度可變   如果長度小於255,需要多佔據一個字元作為結束符,如果超過255個字元需要佔據兩個字元作為結束符

  
  TEXT型別:
   型別         位元組       描述 

  TINYTEXT       0-255           值的長度為+2個位元組 
  TEXT       0-65535       值的長度為+2個位元組 
  MEDIUMTEXT     0-167772150    值的長度為+3個位元組 
  LOANGTEXT    0-4294967295   值的長度為+4個位元組 
  說明:用於儲存大量字串 

  BINARY系列: 
  型別         位元組描述 
  BINARY(M)      允許長度為0-M 
  VARBINARY(M)    允許長度為0-M 
  說明:儲存二進位制資料,VARBINARY長度可變 

  BLOB系列: 
  型別         位元組 
  TINYBLOB      0-255 
  BLOB         0-2^16 
  MEDIUBLOB        0-2^24 
  LOANGBLOB       0-2^32 
  說明:儲存大量的二進位制資料

       Enum(“value1″,”value2”,….)     最大值65535    該型別的列只可以容納所列值之一或為空
  Set(“value1″,”value2”,….)   最大值64   該型別的列可以容納一組值或為空

相關文章