整數型別
標準 SQL 中支持 INTEGER 和 SMALLINT 這兩種型別,MySQL 資料庫除了支持這兩種型別以外,還擴展支持了 TINYINT、MEDIUMINT 和 BIGINT
| 整數型別 | 位元組數 | 無符號數的取值范圍 | 有符號數的取值范圍 |
|---|---|---|---|
| TINYINT | 1 | (0,255) | (-128,127) |
| SMALLINT | 2 | (0,65535) | (-32768,32767) |
| MEDIUMINT | 3 | (0,16777215) | (-8388608,8388607) |
| INT | 4 | (0,4294967295) | (-2147483648,2147483647) |
| INTEGER | 4 | (0,4294967295) | (-2147483648,2147483647) |
| BIGINT | 8 | (0,18446744073709551615) | (-9223372036854775808,9223372036854775807) |
浮點數型別和定點數型別
資料表中用浮點數型別和定點數型別來表示小數,浮點數型別包括單精度浮點數(FLOAT)和雙精度浮點數(DOUBLE),定點數型別就是 DECIMAL
| 型別 | 位元組數 | 負數的取值范圍 | 非負數的取值范圍 |
|---|---|---|---|
| FLOAT | 4 | (-3.402823466E+38,-1.175494351E-38) | 0,(1.175494351E-38,3.402 823466E+38) |
| DOUBLE | 4 | (-1.7976931348623157E+308,-2.2250738585072014E-308) | 0,(2.2250738585072014E-308,1.7976931348623157 E+308) |
| DECIMAL(M,D) | M+2 | 取決于 M 和 D | 取決于 M 和 D |
FLOAT 和 DOUBLE 型別存盤資料時存盤的是近似值,DECIMAL 存盤的是字串,因此提供了更高的精度,在金融系統中,表示貨幣金額的時候會優先考慮 DECIMAL 型別;在一般的價格體系,比如購物平臺的商品標價,一般用 FLOAT 型別即可
日期和時間型別
每種日期與時間型別都有一個有效范圍如果插入的值超過這個范圍,系統就會報錯,并將零值插入到資料庫
| 型別 | 位元組數 | 取值范圍 | 零值 |
|---|---|---|---|
| YEAR | 1 | 1901 ~ 2155 | 0000 |
| DATE | 4 | 1000-01-01 ~ 9999-12-31 | 0000:00:00 |
| TIME | 3 | -838:59:59 ~ 838:59:59 | 00-00-00 |
| DATETIME | 8 | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 0000-00-00 00:00:00 |
| TIMESTAMP | 4 | 19700101080001 ~ 2038011911407 | 00000000000000 |
字串型別
1. CHAR 和 VARCHAR 型別
CHAR 型別和 VARCHAR 型別都在創建表時指定了最大長度,CHAR 型別的長度是固定的,其長度可以是 0 ~ 255 的任意值,而 VARCHAR 型別的長度是可變的,其最大值可以取 0 ~ 65535 之間的任意值,VARCHAR 型別實際占用的空間為字串的實際長度加一,這樣可以有效節約系統的空間
2. TEXT 型別
TEXT 型別是一種特殊的字串型別,各種 TEXT 型別的區別在于允許的長度和存盤空間不同
| 型別 | 允許的長度 | 存盤空間 |
|---|---|---|
| TINYTEXT | 0-255 | 值的長度+2個位元組 |
| TEXT | 0-65535 | 值的長度+2個位元組 |
| MEDIUMTEXT | 0-16772150 | 值的長度+3個位元組 |
| LONGTEXT | 0-4294967295 | 值的長度+4個位元組 |
3. ENUM 型別
ENUM 型別又稱列舉型別,在創建表時,ENUM 型別的取值范圍以串列的形式指定
屬性名 ENUM('值1', '值2', ..., '值n')
- 屬性名:指欄位的名稱
- 值n:表示串列中的第 n 個值
ENUM 型別的值只能取串列中的某一個元素,取值串列最多能有 65535 個值,串列中的每個值獨有一個順序排列的編號,MySQL 存入的是這個編號,而不是串列中的值
如果 ENUM 型別加上了 NOT NULL 屬性,其默認值為取值串列的第一個元素,如果不加 NOT NULL 屬性,ENUM 型別將允許插入 NULL,而且 NULL 為默認值
4. SET 型別
在創建表時,SET 型別的取值范圍就以串列的形式指定了
屬性名 SET('值1', '值2', ..., '值n')
引數和 ENUM 一致,SET 型別的值可以取串列中的一個或多個元素,取多個元素時,不同元素之間用逗號隔開,SET 型別的值最多只能是由 64 個元素構成的組合
二進制型別
二進制型是存盤二進制資料的資料型別
| 型別 | 取值范圍 |
|---|---|
| BINARY(M) | 位元組數為M,允許長度為0~M的定長二進制字串 |
| VARBINARY (M) | 允許長度為0~M的變長二進制字串,位元組數為值的長度加1 |
| BIT(M) | M位二進制資料,M最大值為64 |
| TINYBLOB | 可變長二進制資料,最多255個位元組 |
| BLOB | 可變長二進制資料,最多(2^16-1)個位元組 |
| MEDIUMBLOB | 可變長二進制資料,最多(2^24-1)個位元組 |
| LONGBLOB | 可變長二進制資料,最多(2^32-1)個位元組 |
1. BINARY 和 VARBINARY 型別
BINARY 型別的長度是固定的,不足最長長度的空間有 '\0' 補全
VARBINARY 型別的長度是可變的,在最大范圍內使用多少就分配多少
2. BIT 型別
例如,BIT(4) 就是指定資料型別為 BIT 型別,長度為 4,若存盤的資料是 0 ~ 15,因為變成二進制后的 15 的值為 1111,則其長度為 4,如果插入的值為 16,其二進制數為 10000,長度為 5 超過最大長度,則插入失敗
3. BLOB 型別
BLOB 用來保存資料量很大的二進制資料,如圖片等,BLOB 型別與 TEXT 型別類似,不同在于 BLOB 型別用于存盤二進制資料,根據其二進制編碼進行比較和排序,而 TEXT 型別是以文本模式進行比較和排序的
JSON 型別
在 MySQL 中,JSON 值是以字串形式寫入的,MySQL 會對字串進行決議,如果不符合 JSON 格式,那么寫入將失敗
| 名稱 | 描述 |
|---|---|
| json_array() | 創建json陣列 |
| json_array_append() | 陣列尾部追加元素 |
| json_array_insert() | 在陣列的指定位置插入元素 |
| json_extract() / -> / ->> | 根據條件提取檔案中的資料 |
| json_contains(target,candidate[,path]) | 查詢檔案中是否包含指定的元素 |
| json_contains_path() | 查詢檔案中是否包含指定的路徑 |
| json_depth() | json檔案的深度(元素最大嵌套層數) |
| json_insert() | 向json檔案插入值 |
| json_keys() | 提取json中的鍵值為json陣列 |
| json_length() | json檔案的長度(元素的個數) |
| json_merge() / json_merge_preserve() | 將兩個檔案合并,保留重復鍵值 |
| json_merge_patch() | 將兩個檔案合并,替換重復鍵值 |
| json_object() | 創建json物件 |
| json_pretty() | 美化json格式 |
| json_quote() / json_unquote() | 加上/去掉json檔案兩邊的雙引號 |
| json_remove() | 洗掉檔案中指定位置的元素 |
| json_replace() | 替換檔案中指定位置的元素 |
| json_search() | 回傳所有符合條件的路徑集合 |
| json_set() | 給檔案中指定位置的元素設定新值 |
| json_storage_free() | json檔案更新操作后的剩余空間 |
| json_storage_size() | json檔案占用的存盤空間 |
| json_table() | 將json檔案轉換為表格 |
| json_type() | json檔案型別(陣列/物件/標量) |
| json_valid() | json格式是否合法 |
Spatial 資料型別
Spatial 資料即空間資料,又稱幾何資料,表示物體的位置、形態、大小分布等各方面資訊
MySQL 包含的空間資料型別有幾何體(GEOMETRY)、點(POINT)、線(LINESTRING)和多邊形(POLYGON),其中幾何體可以存盤任何型別的幾何資料,而其他三種只能存盤對應型別的幾何資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/458409.html
標籤:MySQL
上一篇:大資料Hadoop之——Spark集群部署(Standalone)
下一篇:MySQL 視圖簡介
