標籤:
一、MySQL列類型的作用:
列類型可以簡單理解為用來對使用者往列種儲存資料時做某種範圍"限定",它可以定義資料的有效值(字元、數字等)、所能佔據的最大儲存空間、字元長度(定長或變長)、是否能夠被索引、如何被索引及如何排序等。在關係型資料庫系統中,為了實現資料的易於管理,必須為表欄位(列)指定對應的列類型。MySQL的列類型可以分為4類:字元型、數值型、日期及時間型、自有類型。
1.字元型:
字元型限定值只能為字元,MySQL的字元類型如下:
類型 最大字元長度 名稱及特性char 255 定長字串,區分大小寫varchar 65535 變長字串,區分大小寫binary 255 二進位定長字串,區分大小寫varbinary 65535 二進位變長字串,區分大小寫tinytext 255 text類型是文本大Object Storage Service,就是說它儲存的並不是資料本身,而是一個指標,指向資料的儲存所在位置;text不區分大小寫text 65535mediumtext 16777215longtext 4294967295tinyblob 255 blob類型是二進位大Object Storage Service,它是text的二進位形式,區分大小寫blob 65535mediumblob 16777215longblob 4294967295
2.數值型:
數值型限定只能儲存數值類資料,MySQL的數實值型別如下:
類型 名稱 取值範圍(有符號,無符號)TINYINT 最小整數 -128到127,0到255SMALLINT 小整數 -32768到32767,0到65535MEDIUMINT 中整數 -8388607到8388607,0到16777215INT 整數 -2147483647到2147483647,0到4294967295BIGINT 大整數 -9223372036854775807到9223372036854775807,0到18446744073709551615decimal 十進位 FLOAT 單精確度浮點DOUBAL 雙精確度浮點
3.日期及時間型:
日期時間型用來記錄日期或時間,MySQL的日期時間類型如下:
類型 名稱 取值範圍
DATE 日期 ‘1000-01-01‘到‘9999-12-31‘TIME 時間 ‘-838:59:59‘到‘838:59:59‘DATETIME 日期時間 ‘1000-01-01 00:00:00‘到‘9999-12-31 23:59:59‘TIMESTAMP 時間戳記 ‘1970-01-01 00:00:00‘到’2037年某時‘YEAR 年 4位格式:1901到2155,2位格式:1970-2069(70-69),或:0000
4.自有類型:
自有類型是MySQL內建的類型,有兩種:
SET:字串集合,事先給出多個元素(最多64個)供使用者選擇,使用者可以選多個元素填入
ENUM:枚舉,事先給出多個元素(最多65536個)供使用者選擇,使用者只能選一個元素填入
二、MySQL的SQL模式:
MySQL伺服器可以以不同的SQL模式來操作,並且可以為不同用戶端應用不同模式。這樣每個應用程式可以根據自己的需求來定製伺服器的操作模式。這類模式定義了MySQL應支援的SQL文法,以及應該在資料上執行何種確認檢查。這樣,就能在眾多不同的環境下、與其他資料庫伺服器一起更容易地使用MySQL。MySQL常用的有三種SQL模式,傳統模式、strict 模式和ANSI模式。MySQL的SQL模式預設為空白,該模式為非strict 模式。
可以通過如下命令查看MySQL當前的SQL模式:
mysql> SHOW GLOBAL VARIABLES LIKE ‘sql_mode‘;mysql> SELECT @@sql_mode;
可以通過如下命令設定MySQL的SQL模式:
mysql> SET [GLOBAL|SESSION] sql_mode=‘modes‘;
或啟動MySQL時指定SQL模式:
shell> mysqld --sql-mode="modes"
1.TRADITIONAL,傳統模式:
該模式的簡單描述是當在列中插入不正確的值時“給出錯誤而不是警告”。注釋:一旦發現錯誤立即放棄INSERT/UPDATE。如果你使用非事務儲存引擎,那麼出現錯誤前進行的資料更改不會“復原”,會導致結果更新“只進行了一部分”。
mysql> SET [GLOBAL|SESSION] sql_mode=‘TRADITIONAL‘;
2.STRICT,strict 模式:
如果不能將給定的值插入到表中,則放棄該語句。strict 模式具有兩種:STRICT_TRANS_TABLES和STRICT_ALL_TABLES。STRICT_TRANS_TABLES對支援事務的表實行strict 模式,STRICT_ALL_TALBES在所有表執行strict 模式。
mysql> SET [GLOBAL|SESSION] sql_mode=‘STRICT_TRANS_TABLES‘;mysql> SET [GLOBAL|SESSION] sql_mode=‘STRICT_ALL_TABLES‘;
3.ANSI模式:
更改操作的文法和行為,使其更適合標準的SQL。
三、資料字典:
資料字典就類似於系統編目或花名冊(和目錄不太相同),它儲存資料庫伺服器上的中繼資料資訊(資料庫的整體屬性資訊)。中繼資料資訊包括:關係(表)的名字、每個關係的各欄位的名字、各欄位的資料類型和長度約束、每個關係上的視圖的名字及視圖的定義、授權使用者的名字、使用者的授權和賬戶資訊、統計類的資料:、每個關係欄位的個數、每個關係中的行數、每個關係的儲存方法;
在mysql上儲存中繼資料的資料庫有:mysql庫、infomation_schema庫、和performance_schema庫,performance_schema庫是一個虛擬庫,類似於Linux的/proc等偽檔案系統。
MySQL服務 - MySQL列類型、SQL模式、資料字典