在關系型資料庫表中,資料類型較為常見的包括整形(int),單精度(folat),雙精度(double),可變長度字元(varchar),固定長度字元(char),長型(long),日期(date)等。對于不同的關系型資料庫管理系統而言,往往具有不同的資料類型,這裡以MySQL資料庫為例,介紹SQL中的資料類型。
在MySQL中,有三種主要的類型:文本、數字和日期/時間類型。
Text類型:
資料類型 | 描述 |
---|---|
CHAR(size) | 儲存大小0-255位元組固定長度的字元串(可包含字母、數字以及特殊字元)。在括号中指定字元串的長度。最多255個字元。 |
VARCHAR(size) | 儲存大小0-65535位元組可變長度的字元串(可包含字母、數字以及特殊字元)。在括号中指定字元串的最大長度。最多255個字元。注釋:如果值的長度大于255,則被轉換為TEXT類型。 |
TINYTEXT | 存放大小0-255位元組短文本字元串,最大長度為255個字元的字元串。 |
TEXT | 存放大小0-65535位元組長文本資料,最大長度為65,535個字元的字元串。 |
BLOB | 用于0-65535位元組二進制形式的長文本資料BLOBs(Binary Large OBjects)。存放最多 65,535 位元組的資料。 |
MEDIUMTEXT | 存放大小0-16,777,215位元組中等長度文本資料最大長度為 16,777,215個字元的字元串。 |
MEDIUMBLOB | 用于大小0-16,777,215位元組二進制形式的中等長度文本資料 BLOBs (Binary Large OBjects)。存放最多 16,777,215 位元組的資料。 |
LONGTEXT | 存放大小0-4294967295位元組極大文本資料最大長度為 4,294,967,295個字元的字元串。 |
LONGBLOB | 用于 大小0-4294967295位元組二進制形式的極大文本資料BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 位元組的資料。 |
ENUM(x,y,z,etc.) | 允許你輸入可能值的清單。可以在ENUM清單中列出最大65535 個值。如果清單中不存在插入的值,則插入空值。注釋:這些值是按照你輸入的順序存儲的。可以按照此格式輸入可能的值:ENUM('X','Y','Z') |
SET | 與 ENUM 類似,SET 最多隻能包含64個清單項,不過SET可存儲一個以上的值。 |
Number 類型:
大小 | ||
---|---|---|
TINYINT(size) | -128 到 127 正常。0 到 255 無符号*。在括号中規定最大位數。 | 1位元組 |
SMALLINT(size) | -32768 到 32767 正常。0 到 65535 無符号*。在括号中規定最大位數。 | 2位元組 |
MEDIUMINT(size) | -8388608 到 8388607 普通。0 to 16777215 無符号*。在括号中規定最大位數。 | 3位元組 |
INT(size)或INTEGER | -2147483648 到 2147483647 正常。0 到 4294967295 無符号*。在括号中規定最大位數。 | 4位元組 |
BIGINT(size) | -9223372036854775808 到 9223372036854775807 正常。0 到 18446744073709551615 無符号*。在括号中規定最大位數。 | 8位元組 |
FLOAT(size,d) | 帶有浮動小數點的小數字。在括号中規定最大位數。在 d 參數中規定小數點右側的最大位數。 | |
DOUBLE(size,d) | 帶有浮動小數點的大數字。在括号中規定最大位數。在 d 參數中規定小數點右側的最大位數。 | |
DECIMAL(size,d) | 作為字元串存儲的 DOUBLE 類型,允許固定的小數點。 | 對DECIMAL(M,D) ,如果M>D,為M+2否則為D+2 |
這些整數類型擁有額外的選項 UNSIGNED。通常,整數可以是負數或正數。如果添加 UNSIGNED 屬性,那麼範圍将從 0 開始,而不是某個負數。
Date 類型:
DATE() | 日期。格式:YYYY-MM-DD | |
注釋:支援的範圍是從 '1000-01-01' 到 '9999-12-31' | 3 | |
DATETIME() | 日期和時間的組合。格式:YYYY-MM-DD HH:MM:SS。注釋:支援的範圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' | 8 |
TIMESTAMP() | 時間戳。TIMESTAMP 值使用 Unix 紀元('1970-01-01 00:00:00' UTC) 至今的描述來存儲。格式:YYYY-MM-DD HH:MM:SS。注釋:支援的範圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC | 4 |
TIME() | 時間。格式:HH:MM:SS 注釋:支援的範圍是從 '-838:59:59' 到 '838:59:59' | |
YEAR() | 2 位或 4 位格式的年。注釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。 | 1 |
即便 DATETIME 和 TIMESTAMP 傳回相同的格式,它們的工作方式很不同。在 INSERT 或 UPDATE 查詢中,TIMESTAMP 自動把自身設定為目前的日期和時間。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。
資料來源:
SQL 資料類型 | W3C School
https://www.w3school.com.cn/sql/sql_datatypes.asp