<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在mysql中有如下幾種資料型別:
數值是諸如32 或153.4 這樣的值。mysql 支援科學表示法,科學表示法由整數或浮點數後跟“e”或“e”、一個符號(“+”或“-”)和一個整數指數來表示。1.24e+12 和23.47e-1 都是合法的科學表示法表示的數。而1.24e12 不是合法的,因為指數前的符號未給出。
浮點數由整數部分、一個小數點和小數部分組成。整數部分和小數部分可以分別為空,但不能同時為空。
數值前可放一個負號“-”以表示負值。
字元型(也叫字串型,簡稱串)是諸如“hello, world!”或“一個饅頭引起的血案”這樣的值,或者是電話號碼87398413這樣的值。既可用單引號也可用雙引號將串值括起來。
初學者往往分不清數值87398143和字串87398143的區別。都是數位啊,怎麼一個要用數值型,一個要用字元型呢?關鍵就在於:數值型的87398143是要參與計算的,比如它是金融中的一個貨款總額;而字元型的87398143是不參與計算的,只是表示電話號碼,這樣的還有街道號碼、門牌號碼等等,它們都不參與計算。
日期和時間是一些諸如“2006-07-12”或“12:30:43”這樣的值。mysql還支援日期/時間的組合,如“2006-07-12 12:30:43”。
null表示未知值。比如填寫表格中通訊地址不清楚留空不填寫,這就是null值。
我們用create table語句建立一個表(參看前面的章節),這個表中包含列的定義。例如我們在前面建立了一個joke表,這個表中有content和writer兩個列:
create table ( content varchar(20) not null, writer varchar(10) null )
定義一個列的語法如下:
col_name col_typy [col_attributes] [general_attributes]
其中列名由col_name 給出。列名可最多包含64個字元,字元包括字母、數位、下劃線及美元符號。列名可以名字中合法的任何符號(包括數位)開頭。但列名不能完全由數位組成,因為那樣可能使其與資料分不開。mysql保留諸如select、delete和create這樣的詞,這些詞不能用做列名,但是函數名(如pos 和min)是可以使用的。
列型別col_type表示列可儲存的特定值。列型別說明符還能表示存放在列中的值的最大長度。對於某些型別,可用一個數值明確地說明其長度。而另外一些值,其長度由型別名蘊含。例如,char(10) 明確指定了10個字元的長度,而tinyblob值隱含最大長度為255個字元。有的型別說明符允許指定最大的顯示寬度(即顯示值時使用多少個字元)。浮點型別允許指定小數位數,所以能控制浮點數的精度值為多少。
可以在列型別之後指定可選的型別說明屬性,以及指定更多的常見屬性。屬性起修飾型別的作用,並更改其處理列值的方式,屬性有以下型別:
如果想給出多個列的專用屬性,可按任意順序指定它們,只要它們跟在列型別之後、通用屬性之前即可。類似地,如果需要給出多個通用屬性,也可按任意順序給出它們,只要將它們放在列型別和可能給出的列專用屬性之後即可。
資料庫中的每個表都是由一個或多個列(欄位)構成的。在用create table語句建立一個表時,要為每列(欄位)指定一個型別。列(欄位)的型別比資料型別更為細化,它精確地描述了給定表列(欄位)可能包含的值的種類,如是否帶小數、是否文字很多。
mysql有整數和浮點數值的列型別,如表1所示。整數列型別可以有符號也可無符號。有一種特殊的屬性允許整數列值自動生成,這對需要唯一序列或標識號的應用系統來說是非常有用的。
表1:數值列型別
型別 | 說明 |
tinyint | 非常小的整數 |
smallint | 較小整數 |
mediumint | 中等大小整數 |
int | 標準整數 |
bigint | 較大整數 |
float | 單精度浮點數 |
double | 雙精度浮點數 |
decimal | 一個串的浮點數 |
每種數值型別的名稱和取值範圍如表2所示。
表2:數值列型別的取值範圍
型別說明 | 取值範圍 |
tinyint[(m)] | 有符號值:-128 到127(- 27 到27 - 1) 無符號值:0到255(0 到28 - 1) |
smallint[(m)] | 有符號值:-32768 到32767(- 215 到215 - 1) 無符號值:0到65535(0 到21 6 - 1) |
mediumint[(m)] | 有符號值:-8388608 到8388607(- 22 3 到22 3 - 1 ) 無符號值:0到16777215(0 到22 4 - 1) |
int[(m)] | 有符號值:-2147683648 到2147683647(- 231 到231- 1) 無符號值:0到4294967295(0 到232 - 1) |
bigint[(m)] | 有符號值:-9223372036854775808 到9223373036854775807(- 263到263-1) 無符號值:0到18446744073709551615(0到264 – 1) |
float[(m, d)] | 最小非零值:±1.175494351e - 38 |
double[(m,d)] | 最小非零值:±2.2250738585072014e - 308 |
decimal (m, d) | 可變;其值的範圍依賴於m 和d |
各種型別值所需的儲存量如表3所示。
表3:數值列型別的儲存大小
型別說明 | 儲存大小 |
tinyint[(m)] | 1位元組 |
smallint[(m)] | 2位元組 |
mediumint[(m)] | 3位元組 |
int[(m)] | 4位元組 |
bigint[(m)] | 8位元組 |
float[(m, d)] | 4位元組 |
double[(m, d)] | 8位元組 |
decimal (m, d) | m位元組(mysql < 3.23),m+2位元組(mysql > 3.23 ) |
mysql提供了五種整型: tinyint、smallint、mediumint、int和bigint。int為integer的縮寫。這些型別在可表示的取值範圍上是不同的。整數列可定義為unsigned從而禁用負值;這使列的取值範圍為0以上。各種型別的儲存量需求也是不同的。取值範圍較大的型別所需的儲存量較大。
mysql 提供三種浮點型別: float、double和decimal。與整型不同,浮點型別不能是unsigned的,其取值範圍也與整型不同,這種不同不僅在於這些型別有最大值,而且還有最小非零值。最小值提供了相應型別精度的一種度量,這對於記錄科學資料來說是非常重要的(當然,也有負的最大和最小值)。
在選擇了某種數值型別時,應該考慮所要表示的值的範圍,只需選擇能覆蓋要取值的範圍的最小型別即可。選擇較大型別會對空間造成浪費,使表不必要地增大,處理起來沒有選擇較小型別那樣有效。對於整型值,如果資料取值範圍較小,如人員年齡或兄弟姐妹數,則tinyint最合適。mediumint能夠表示數百萬的值並且可用於更多型別的值,但儲存代價較大。bigint在全部整型中取值範圍最大,而且需要的儲存空間是表示範圍次大的整型int型別的兩倍,因此只在確實需要時才用。對於浮點值,double佔用float的兩倍空間。除非特別需要高精度或範圍極大的值,一般應使用只用一半儲存代價的float型來表示資料。
在定義整型列時,可以指定可選的顯示尺寸m。如果這樣,m應該是一個1 到255的整數。它表示用來顯示列中值的字元數。例如,mediumint(4)指定了一個具有4個字元顯示寬度的mediumint列。如果定義了一個沒有明確寬度的整數列,將會自動分配給它一個預設的寬度。預設值為每種型別的“最長”值的長度。如果某個特定值的可列印表示需要不止m個字元,則顯示完全的值;不會將值截斷以適合m個字元。
對每種浮點型別,可指定一個最大的顯示尺寸m 和小數位數d。m 的值應該取1 到255。d的值可為0 到3 0,但是不應大於m - 2(如果熟悉odbc 術語,就會知道m 和d 對應於odbc 概念的“精度”和“小數點位數”)。m和d對float和double 都是可選的,但對於decimal是必須的。在選項m 和d時,如果省略了它們,則使用預設值。
mysql提供了幾種存放字元資料的串型別,其型別如下:
表4:字串列型別
型別名 | 說明 |
char | 定長字串 |
varchar | 可變長字串 |
tinyblob | 非常小的blob(二進位制大物件) |
blob | 標準blob |
mediumblob | 中blob |
longblob | 大blob |
tinytext | 非常小的文字串 |
text | 標準的文字串 |
mediumtext | 中等的文字串 |
longtext | 大文字串 |
enum | 列舉;列可賦予某個列舉元 |
set | 集合;列可賦予多個集合成員 |
下表給出了mysql 定義串值列的型別,以及每種型別的最大尺寸和儲存需求。對於可變長的列型別,各行的值所佔的儲存量是不同的,這取決於實際存放在列中的值的長度。這個長度在表中用l 表示。
表5:串列型別最大尺寸及儲存需求
型別名 | 最大儲存 | 實際儲存 |
char | m 位元組 | m 位元組 |
varchar | m 位元組 | l + 1位元組 |
tinyblob | 28- 1位元組 | l + 1位元組 |
blob | 216 - 1 位元組 | l + 2位元組 |
mediumblob | 224- 1位元組 | l + 3位元組 |
longblob | 232- 1位元組 | l + 4位元組 |
tinytext | 28- 1位元組 | l + 1位元組 |
text | 216 - 1 位元組 | l + 2位元組 |
mediumtext | 224- 1位元組 | l + 3位元組 |
longtext | 232- 1位元組 | l + 4位元組 |
enum | 2位元組 | 1 或2位元組 |
set | 8位元組 | 1、2、3、4或8位元組 |
l 以外所需的額外位元組為存放該值的長度所需的位元組數。mysql 通過儲存值的內容及其長度來處理可變長度的值。這些額外的位元組是無符號整數。請注意,可變長型別的最大長度、此型別所需的額外位元組數以及佔用相同位元組數的無符號整數之間的對應關係。例如,mediumblob 值可能最多224 - 1位元組長並需要3 個位元組記錄其結果。3 個位元組的整數型別mediumint 的最大無符號值為224 - 1。這並非偶然。
mysql 提供了幾種時間值的列型別,它們分別是: date、datetime、time、timestamp和year。下表給出了mysql 為定義儲存日期和時間值所提供的這些型別,並給出了每種型別的合法取值範圍。
表6:日期時間列型別
型別名 | 說明 |
date | “yyyy-mm-dd”格式表示的日期值 |
time | “hh:mm:ss”格式表示的時間值 |
datetime | “yyyy-mm-dd hh:mm:ss”格式 |
timestamp | “yyyymmddhhmmss”格式表示的時間戳值 |
year | “yyyy”格式的年份值 |
表7: 日前時間列型別的取值範圍和儲存大小
型別名 | 取值範圍 | 儲存大小 |
date | “1000-01-01”到“9999-12-31” | 3位元組 |
time | “-838:59:59”到“838:59:59” | 3位元組 |
datetime | “1000-01-01 00:00:00” 到“9999-12-31 23:59:59” | 8位元組 |
timestamp | 19700101000000 到2037 年的某個時刻 | 4位元組 |
year | 1901 到2155 | 1位元組 |
下面舉個例子:
create table student ( name varchar(20) not null, chinese tinyint(3), maths tinyint(3), english tinyint(3), birthday date )
這個例子建立一個student表,這個表中有name欄位,字元型別列,不允許null(空值)。有chinese、maths和english三個整數型別列。還有個birthday日期型別列。
到此這篇關於詳解MySQL中資料型別和欄位型別的文章就介紹到這了,更多相關MySQL資料 欄位型別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45