(二)MySQL資料庫 MySQL 常用資料型別

2021-09-20 15:21:50 字數 3656 閱讀 2228

我的系統版本為centos7.5,mysql版本為5.7.26

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

整數的資料型別能儲存的範圍不受引數的限制,例如int(1)和int(10)儲存的範圍是一樣的。

型別大小

範圍(有符號)

範圍(無符號)

用途tinyint

1 位元組

(-128,127)

(0,255)

小整數值

smallint

2 位元組

(-32 768,32 767)

(0,65 535)

大整數值

mediumint

3 位元組

(-8 388 608,8 388 607)

(0,16 777 215)

大整數值

int或integer

4 位元組

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整數值

bigint

8 位元組

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

極大整數值

float(m,d)

4 位元組

(-3.402 823 466 e+38,1.175 494 351 e-38),0,(1.175 494 351 e-38,3.402 823 466 351 e+38)

0,(1.175 494 351 e-38,3.402 823 466 e+38)

單精度 浮點數值。單精度浮點型 8位精度(4位元組) m總個數,d小數字

double (m,d)

8 位元組

(1.797 693 134 862 315 7 e+308,2.225 073 858 507 201 4 e-308),0,(2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+308)

0,(2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+308)

雙精度 浮點數值.雙精度浮點型 16位精度(8位元組) m總個數,d小數字

decimal

對decimal(m,d) ,如果m>d,為m+2否則為d+2

依賴於m和d的值

依賴於m和d的值

小數值 。浮點型在資料庫中存放的是近似值,而定點型別在資料庫中存放的是精確值。decimal(m,d) 引數 m<65 是總個數,d<30 且 d

utf8:乙個漢字=3個位元組

utf8mb4乙個漢字=4個位元組

gbk:乙個漢字=2個位元組

char 和 varchar:

1.char(n) 若存入字元數小於n,則以空格補於其後,查詢之時再將空格去掉。所以 char 型別儲存的字串末尾不能有空格,varchar 不限於此。

2.char(n) 固定長度,char(4) 不管是存入幾個字元,都將占用 4 個位元組,varchar 是存入的實際字元數 +1 個位元組(n<=255)或2個位元組(n>255),所以 varchar(4),存入 3 個字元將占用 4 個位元組。

3.char 型別的字串檢索速度要比 varchar 型別的快。

varchar 和 text:

1.varchar 可指定 n,text 不能指定,內部儲存 varchar 是存入的實際字元數 +1 個位元組(n<=255)或 2 個位元組(n>255),text 是實際字元數 +2 個位元組。

2.text 型別不能有預設值。

3.varchar 可直接建立索引,text 建立索引要指定前多少個字元。varchar 查詢速度快於 text, 在都建立索引的情況下,text 的索引似乎不起作用。

二進位制資料(_blob)

1._blob和_text儲存方式不同,_text以文字方式儲存,英文儲存區分大小寫,而_blob是以二進位制方式儲存,不分大小寫。

2._blob儲存的資料只能整體讀出。

3._text可以指定字符集,_blo不用指定字符集。

型別大小

用途char(n)

0-255位元組

定長字串

varchar(n)

0-65535 位元組

變長字串,實際占用+1 個位元組(n<=255)或 2 個位元組(n>255)

tinyblob

0-255位元組

不超過 255 個字元的二進位制字串

tinytext

0-255位元組

短文本字串

blob

0-65 535位元組

二進位制形式的長文字資料

text

0-65 535位元組

長文字資料,實際占用+2 個位元組

mediumblob

0-16 777 215位元組

二進位制形式的中等長度文字資料

mediumtext

0-16 777 215位元組

中等長度文字資料

logngblob

0-4 294 967 295位元組

二進位制形式的極大文字資料

longtext

0-4 294 967 295位元組

極大文字資料

在mysql上述三個大版本中,預設時間戳(timestamp)型別的取值範圍為』1970-01-01 00:00:01』 utc 至』2038-01-19 03:14:07』 utc,資料精確到秒級別,該取值範圍包含約22億個數值,因此在mysql內部使用4個位元組int型別來存放時間戳資料:

1、在儲存時間戳資料時,先將本地時區時間轉換為utc時區時間,再將utc時區時間轉換為int格式的毫秒值(使用unix_timestamp函式),然後存放到資料庫中。

2、在讀取時間戳資料時,先將int格式的毫秒值轉換為utc時區時間(使用from_unixtime函式),然後再轉換為本地時區時間,最後返回給客戶端。

在mysql 5.6.4及之後版本,可以將時間戳型別資料最高精確微秒(百萬分之一秒),資料型別定義為timestamp(n),n取值範圍為0-6,預設為0,如需要精確到毫秒則設定為timestamp(3),如需要精確到微秒則設定為timestamp(6),資料精度提高的代價是其內部儲存空間的變大,但仍未改變時間戳型別的最小和最大取值範圍。

型別大小 (位元組)

範圍格式

用途date

31000-01-01/9999-12-31

yyyy-mm-dd

日期值time

3『-838:59:59』/『838:59:59』

hh:mm:ss

時間值或持續時間

year

11901/2155

yyyy

年份值datetime

81000-01-01 00:00:00/9999-12-31 23:59:59

yyyy-mm-dd hh:mm:ss

混合日期和時間值

timestamp

41970-01-01 00:00:00/開始計算的時間戳

yyyymmdd hhmmss

混合日期和時間值,時間戳

Mysql 資料庫(二)

一 儲存引擎 什麼是儲存引擎 在資料庫中,表的型別是不同的,而儲存引擎就是表的型別。針對不同的儲存引擎,資料庫也有不同的處理方法。show engines 檢視乙個儲存引擎。常用的儲存引擎 innodb 支援事物,支援事物安全表,支援行鎖定和外來鍵。什麼是事物 單個邏輯單元的執行的一系列操作,要麼都...

Mysql資料庫入門二

外來鍵約束 乙個實體的某個字段指向另乙個實體的主鍵,就稱為外來鍵被指向的實體 它的作用 用於約束處於關係內的實體.保證引用完整性,也就是說資料的準確 tips 1.外來鍵一定要指向主鍵,有主鍵才有外來鍵 2.外來鍵列的型別和長度一定要和參照的主鍵的型別和約定長度一致 新增外來鍵 有兩張表分別為stu...

mysql資料庫基礎(二)

1.的用法 2.not 的用法 where end isnull andnot title hello dept id select dept id from department where name loans date between 2005 01 01 and 2005 12 31 1.b...