資料型別是資料的一種屬性,其可以決定資料的儲存格式、有效範圍和相應的限制。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 使用者自定義安裝型別 根據自己的情況選擇...