首頁  >  文章  >  系統教程  >  Mariadb學習總結(三):資料類型

Mariadb學習總結(三):資料類型

王林
王林原創
2024-07-18 08:15:011115瀏覽
資料型別

資料型態->是一類具有相同屬性、相同性質的資料分類的抽象化。

例如:
字串,就是一個個的字符組成一串就叫字符串...在計算機中可以劃分子串、可以在字符串末尾添加新的字符,而這類操作就只能操作字符串數據,而不能操作整數。
數位型,我們最常接觸的阿拉伯數字,可以進行算數運算、邏輯運算等操作

Mysql中的資料型別

MySQL支援多種類型,大致可以分為三類:數值、日期/時間和字串(字元)類型。

數值類型

Mariadb學習總結(三):資料類型

1.對於整數類型,可以限制其長度,格式如下:

整数类型[(M)] [SIGNED | UNSIGNED | ZEROFILL]

M為數字的位數,例如TINYINT(3),就只能儲存三位數,位數應不超過其所能表示的範圍
SIGNED:預設即為有符號數
UNSIGNED:指定為無符號數
ZEROFILL:當不滿足M位時,其前用0填充,且為變成無符號數

2.對於浮點數,可限制其整體位數和小數點後位數

(FLOAT|DOUBLE)[(M,D)] [SIGNED | UNSIGNED | ZEROFILL]

M為總的位數,D為小數點後的位數
ZEROFILL對於浮點型,作用等同於UNSIGNED

MariaDB [mydb]> DESC t1;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| c1    | float(5,2)   | YES  |     | NULL    |       |
| c2    | double(10,3) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

MariaDB [mydb]> INSERT INTO t1 VALUES(23.5,12.34566777);
Query OK, 1 row affected (0.01 sec)

MariaDB [mydb]> SELECT * FROM t1;   //这里可以看到,在其后补了0
+-------+--------+
| c1    | c2     |
+-------+--------+
| 23.50 | 12.346 |
+-------+--------+
1 row in set (0.00 sec)

日期和時間類型

Mariadb學習總結(三):資料類型

格式縮寫: 日期時間格式,除了標準的格式以外也支援鬆散的格式。

建立測試表,結構如下:

MariaDB [mydb]> desc datetable;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type      | Null | Key | Default           | Extra                       |
+-------+-----------+------+-----+-------------------+-----------------------------+
| c1    | date      | YES  |     | NULL              |                             |
| c2    | time      | YES  |     | NULL              |                             |
| c3    | datetime  | YES  |     | NULL              |                             |
| c4    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+

對於DATE型:YY-MM-DD、YYMMDD、YYYY/MM/DD

MariaDB [mydb]> INSERT INTO datetable(c1) VALUES('2018-01-01'),('18-01-01'),
    -> ('180101'),('2018/01/01'),(180101);
Query OK, 5 rows affected (0.01 sec)
Records: 5  Duplicates: 0  Warnings: 0

MariaDB [mydb]> SELECT c1 FROM datetable;
+------------+
| c1         |
+------------+
| 2018-01-01 |
| 2018-01-01 |
| 2018-01-01 |
| 2018-01-01 |
| 2018-01-01 |
+------------+
5 rows in set (0.00 sec)

對於TIME型:'D HH:MM:SS'、'HH:MM:SS'、'HH:MM'、'D HH:MM'、'D HH', 'SS'、 'HHMMSS'
D代表天,即TIME+D*24

MariaDB [mydb]> INSERT INTO datetable(c2) VALUES
    -> ('12:20:20'),('1 12:20:20'),
    -> ('12:20'),('1 12'),('20'),('122020'), 
    -> (122020);
Query OK, 7 rows affected (0.03 sec)
Records: 7  Duplicates: 0  Warnings: 0

MariaDB [mydb]> SELECT c2 FROM datetable;
+----------+
| c2       |
+----------+
| 12:20:20 |
| 36:20:20 |
| 12:20:00 |
| 36:00:00 |
| 00:00:20 |
| 12:20:20 |
| 12:20:20 |
+----------+
7 rows in set (0.00 sec)

對於DATETIME和TIMESTAMP這兩種格式,即是上面時間簡寫格式的縮寫,例如:

20180101122020 -> '2018-01-01 12:20:20'

對於TIMESTAMP這種格式,比較常用吧應該說,其儲存的是自'1970-01-01 00:00:00'到儲存時間的毫秒數,其預設值可以為CURRENT_TIMESTAMP或其同義詞:CURRENT_TIMESTAMP() , NOW(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP,LOCALTIMESTAMP()

字串型

Mariadb學習總結(三):資料類型

CHAR和VARCHAR類型類似,但它們保存和檢索的方式不同。它們的最大長度和是否尾部空格保留等方面也不同。在儲存或檢索過程中不進行大小寫轉換。

BINARY和VARBINARY類別類似於CHAR和VARCHAR,不同的是它們包含二進位字串而不要非二進位字串。也就是說,它們包含位元組字串而不是字元字串。這說明它們沒有字元集,並且排序和比較基於列值位元組的數值值。

BLOB是一個二元大對象,可以容納可變數量的資料:
有4種BLOB類型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它們只是可容納值的最大長度不同。
有4種TEXT類型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。這些對應4種BLOB類型,有相同的最大長度和儲存需求。

其他類型

枚舉型:ENUM('value1','value2',...)
儲存位元組:因其儲存的是元素編號,所以對於0-255個元素,只佔一個位元組,而255-65535則佔兩個元素

以上是Mariadb學習總結(三):資料類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn