工具猿之MySQL教程 02 資料型別

2021-10-01 19:00:38 字數 4290 閱讀 4292

資料型別是資料的一種屬性,其可以決定資料的儲存格式、有效範圍和相應的限制。mysql包括整數型別、浮點型別、定點數型別、日期和時間型別、字串型別、二進位制、enum型別和set型別等資料型別。

整數型別是資料庫中最基本的資料型別。

整數型別

位元組數無符號數的取值範圍

有符號數的取值範圍

tinyint

10~255

-128~127

smallint

20~65535

-32768~32767

mediumint

30~16777215

-8388608~8388607

int(integer)

40~4294967295

-2147483648~2147483647

bigint

80~18446744073709551615

-9223372036854775808~9223372036854775807

mysql中使用浮點型別和定點型別來表示小數。浮點型別包括單精度浮點數(float型)和雙精度浮點數(double型),定點數型別就是decimal型。

型別位元組數

負數的取值範圍

非負數的取值範圍

float(m,d)

4-3.402823466e+38~-1.17549435e-38

0和1.17549435e-38~3.402823466e+38

double (m,d)

8-1.7976931348623157e+308~-2.2250738585072014e-308

0和2.2250738585072014e-308~1.7976931348623157e+308

decimal(m,d)或者dec(m,d)

m+2同double型

同double型

浮點數型在資料庫中存放的是近似值,而定點數型別在資料庫中存放的是精確值。

名稱含義

字元個數

char(n)

固定長度的字串

最多255個字元

varchar(n)

可變長度的字串

最多65535個字元

char和varchar區別:

a、都可以通過指定n來限制儲存的最大字元數長度,char(20)和varchar(20)將最多只能儲存20個字元,超過的字元會被截掉。n必須小於該型別允許的最大字元數。

b、char型別指定了n之後,如果存入的字元數小於n,後面將會以空格補齊,查詢的時候再將末尾的空格去掉,所以char型別儲存的字串末尾不能有空格,varchar不受此限制。

c、內部儲存機制不同,char是固定長度,char(4)不管是存入1個字元,2個字元或者是4個字元(英文的),都將占用4個位元組。varchar是存入的實際字元數+1個字位元組(n<=255)或2個位元組(n>255),所以varchar(4),存入1個字元將占用2個位元組,2個字元占用3個位元組,4個字元占用5個位元組。

d、char型別的字串檢索速度要比varchar型別的快。

blob和text是對應的,不過儲存方式不同,text是以文字方式儲存的,而blob是以二進位制方式儲存的。如果儲存英文的話,text區分大小寫,而blob不區分大小寫。text可以指定字符集,blob不用指定字符集。

名稱字元個數

tinytext

最多255個字元

text

最多65535個字元

mediumtext

最多224 - 1 個字元

longtext

最多232 - 1 個字元

名稱位元組長度

tinyblob

最多255個位元組

blob

最多65535個位元組(65kb)

mediumblob

最多224 - 1 個位元組(16mb)

longblob

最多232 - 1 個位元組(4gb)

binary和varbinary資料型別類似於char和varchar。不同之處在於binary與varbinary使用位元組為儲存單位,而char與varchar使用字元為儲存單位。例如,binary(5)表示5位元組的二進位制資料,char(5)表示儲存5個字元的資料。

binary(n):固定n個位元組二進位制資料。n的取值範圍為1~255,預設為1.若輸出的位元組長度小於n,則不足部分以0填充。binary(n)資料儲存的長度為n+4個位元組。

varbinary(n):可變長度,n的取值範圍是1~65535,預設為1,資料儲存長度為實際長度+4個位元組。

日期和時間型別是為了方便在資料庫中儲存日期和時間而設計的。

名稱含義

取值範圍

year

年份,如『2019』

1901~2155

time

時間,如『12:34:36』

date

日期,如『2019-05-14』

『1000-01-01』~『9999-12-31』

datetime

日期時間,如『2019-06-15 21:05:33』。日期時間用空格隔開

年份在1000-9999,不支援時區

timestamp

日期時間,如『2019-06-17 21:06:35』

年份在1970~2037,支援時區

timestamp型別比較特殊,如果定義乙個欄位的型別為timestamp,這個欄位的時間會在其他字段修改的時候自動重新整理。所以這個資料型別字段可以存放這條記錄最後被修改的時間,而不是真正的存放時間。

這兩種型別是比較特殊的字串資料列型別,它們的取值範圍是乙個預先定義好的的列表。被列舉的值必須用引號包圍,不能為表示式或者乙個變數估值。如果想用數值作為列舉值,那也必須用引號引起。enum(列舉)型別,最多可以定義65535種不同的字串,從中做出選擇,只能並且必須選擇其中一種,占用儲存空間是乙個或兩個位元組,由列舉值的數目決定。例如,要表示性別字段,可以用enum資料型別,enum(『男』,『女』)只有兩種選擇,要麼是『男』,要麼是『女』,而且只需要乙個位元組。

set(集合)型別,其值同樣來自於乙個逗號分隔列表,最多可以由64個成員,可以選擇其中的0個到不限定的多個,占用空間是1~8位元組,由集合可能的成員數目決定。例如,某個表示業餘愛好字段,要求提供多項選擇,這時可以用set資料型別,如set(『籃球』,『足球』,『桌球』,『看書』,『繪畫』,『跳舞』,『**』,『電影』),表示可以選擇』籃球』,『足球』,『桌球』,『看書』,『繪畫』,『跳舞』,『**』,'電影』中的0項或者多項。

smallint:儲存相對較小的整數,如年紀、數量、工齡和學分等。

int:儲存中等整數,如距離。

bigint:儲存超大整數,如科學/科學資料。

float:儲存笑得資料,如成績、溫度和測量。

double:儲存雙精度的小資料,如科學資料。

decimal:以特別高的精度儲存小資料,如貨幣數額、單價和科學資料。

char:儲存通常包含預定義字串的變數,如國家、郵編和身份證號。

varchar:儲存不同長度的字串值,如名字、商品名稱和密碼。

text:儲存大型文字資料,如新聞事件、產品描述和備註資訊。

blob:儲存二進位制資料,如、聲音、附件和二進位制文件。

date:儲存日期,如生日和進貨日期。

time:儲存時間或時間間隔,如開始/結束時間、兩時間之間的間隔。

datetime:儲存包含日期和時間的資料,如事件提醒。

timestamp:儲存即時時間,如當前時間、事件提醒器。

year:儲存年份,如畢業年、工作年和出生年。

enum:儲存字元屬性,只能選擇其中之一,如性別、布林值。

set:次年初字元屬性,可從中選擇多個字元的聯合,如多項選擇、業餘愛好和興趣。

在建表的時候,除了要根據字段儲存的資料不同選擇合適的資料型別外,還可以附加相關的屬性。例如,在建立學生表時,學號字段要求不能為空值,是主鍵並且唯一的,這個時候可以對該字段新增 not null primary key屬性。如建立商品銷售表時,假如有乙個欄位為『銷售編號』,要求每銷售一筆自動編乙個遞增的編號,這時可以指定該欄位型別tinyint ,屬性為auto_increment。

mysql關鍵字

含義null/not null

資料列包含(不包含)null值

default ***

預設值,如果插入記錄的時候沒有指定值,將去這個預設值

primary key

指定列為主鍵

auto_increment

遞增,如果插入記錄的時候沒有指定值,則在上一條記錄的值加1.僅適用於整數型別

unsigned

無符號,屬性只針對於整型

character set name

指定乙個字符集

工具猿之MySQL教程 03 建立與管理資料庫

使用create database或者是create schema命令可以建立資料庫。建立資料庫test 討論 if not exists 如果已存在某個資料庫,再來建立乙個同名的資料庫,這是會出現錯誤資訊。為了避免錯誤資訊,可以在建庫前加上這一判斷,只有該庫目前不存在時才執行create data...

MySQL之IDE工具介紹及資料備份

一 ide工具介紹 生產環境還是推薦使用mysql命令列,但為了方便我們測試,可以使用ide工具 二 mysql資料備份 1.物理備份 直接複製資料庫檔案,適用於大型資料庫環境 如資料檔案 控制檔案 歸檔日誌檔案等 但不能恢復到異構系統中如windows。2.邏輯備份 備份的是建表 建庫 插入等操作...

MySQL之5 6 22安裝教程

1.執行mysql installer community 5.6.22.0.msi安裝包 2.developer default 預設安裝型別 server only 僅作為伺服器 client only 僅作為客戶端 full 完全安裝型別 custom 使用者自定義安裝型別 根據自己的情況選擇...