最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解MySQL中數(shù)據(jù)類型和字段類型

 更新時間:2022年09月26日 11:33:37   作者:洛陽泰山  
這篇文章主要為大家詳細介紹了MySQL中數(shù)據(jù)類型和字段類型的使用,文中的示例代碼講解詳細,對我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下

1. mysql的數(shù)據(jù)類型 

在mysql中有如下幾種數(shù)據(jù)類型: 

(1)數(shù)值型 

數(shù)值是諸如32 或153.4 這樣的值。mysql 支持科學(xué)表示法,科學(xué)表示法由整數(shù)或浮點數(shù)后跟“e”或“e”、一個符號(“+”或“-”)和一個整數(shù)指數(shù)來表示。1.24e+12 和23.47e-1 都是合法的科學(xué)表示法表示的數(shù)。而1.24e12 不是合法的,因為指數(shù)前的符號未給出。 

浮點數(shù)由整數(shù)部分、一個小數(shù)點和小數(shù)部分組成。整數(shù)部分和小數(shù)部分可以分別為空,但不能同時為空。 

數(shù)值前可放一個負號“-”以表示負值。 

(2)字符(串)型 

字符型(也叫字符串型,簡稱串)是諸如“hello, world!”或“一個饅頭引起的血案”這樣的值,或者是電話號碼87398413這樣的值。既可用單引號也可用雙引號將串值括起來。

初學(xué)者往往分不清數(shù)值87398143和字符串87398143的區(qū)別。都是數(shù)字啊,怎么一個要用數(shù)值型,一個要用字符型呢?關(guān)鍵就在于:數(shù)值型的87398143是要參與計算的,比如它是金融中的一個貨款總額;而字符型的87398143是不參與計算的,只是表示電話號碼,這樣的還有街道號碼、門牌號碼等等,它們都不參與計算。 

(3)日期和時間型 

日期和時間是一些諸如“2006-07-12”或“12:30:43”這樣的值。mysql還支持日期/時間的組合,如“2006-07-12 12:30:43”。 

(4)null值 

null表示未知值。比如填寫表格中通訊地址不清楚留空不填寫,這就是null值。 

我們用create table語句創(chuàng)建一個表(參看前面的章節(jié)),這個表中包含列的定義。例如我們在前面創(chuàng)建了一個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個字符,字符包括字母、數(shù)字、下劃線及美元符號。列名可以名字中合法的任何符號(包括數(shù)字)開頭。但列名不能完全由數(shù)字組成,因為那樣可能使其與數(shù)據(jù)分不開。mysql保留諸如select、delete和create這樣的詞,這些詞不能用做列名,但是函數(shù)名(如pos 和min)是可以使用的。 

列類型col_type表示列可存儲的特定值。列類型說明符還能表示存放在列中的值的最大長度。對于某些類型,可用一個數(shù)值明確地說明其長度。而另外一些值,其長度由類型名蘊含。例如,char(10) 明確指定了10個字符的長度,而tinyblob值隱含最大長度為255個字符。有的類型說明符允許指定最大的顯示寬度(即顯示值時使用多少個字符)。浮點類型允許指定小數(shù)位數(shù),所以能控制浮點數(shù)的精度值為多少。 

可以在列類型之后指定可選的類型說明屬性,以及指定更多的常見屬性。屬性起修飾類型的作用,并更改其處理列值的方式,屬性有以下類型: 

  • 專用屬性用于指定列。例如,unsigned 屬性只針對整型,而binary屬性只用于char 和varchar。 
  • 通用屬性除少數(shù)列之外可用于任意列??梢灾付╪ull 或not null 以表示某個列是否能夠存放null。還可以用default,def_value 來表示在創(chuàng)建一個新行但未明確給出該列的值時,該列可賦予值def_value。def_value 必須為一個常量;它不能是表達式,也不能引用其他列。不能對blob 或text 列指定缺省值。 

如果想給出多個列的專用屬性,可按任意順序指定它們,只要它們跟在列類型之后、通用屬性之前即可。類似地,如果需要給出多個通用屬性,也可按任意順序給出它們,只要將它們放在列類型和可能給出的列專用屬性之后即可。

2. mysql的列(字段)類型 

數(shù)據(jù)庫中的每個表都是由一個或多個列(字段)構(gòu)成的。在用create table語句創(chuàng)建一個表時,要為每列(字段)指定一個類型。列(字段)的類型比數(shù)據(jù)類型更為細化,它精確地描述了給定表列(字段)可能包含的值的種類,如是否帶小數(shù)、是否文字很多。 

2.1數(shù)值列類型 

mysql有整數(shù)和浮點數(shù)值的列類型,如表1所示。整數(shù)列類型可以有符號也可無符號。有一種特殊的屬性允許整數(shù)列值自動生成,這對需要唯一序列或標識號的應(yīng)用系統(tǒng)來說是非常有用的。

表1:數(shù)值列類型

類型說明
tinyint    非常小的整數(shù)
smallint    較小整數(shù)
mediumint    中等大小整數(shù)
int    標準整數(shù)
bigint    較大整數(shù)
float單精度浮點數(shù)
double    雙精度浮點數(shù)
decimal    一個串的浮點數(shù)

每種數(shù)值類型的名稱和取值范圍如表2所示。

表2:數(shù)值列類型的取值范圍

類型說明 取值范圍
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:數(shù)值列類型的存儲大小

類型說明 存儲大小
tinyint[(m)]1字節(jié)
smallint[(m)] 2字節(jié)
mediumint[(m)]3字節(jié)
int[(m)] 4字節(jié)
bigint[(m)]8字節(jié)
float[(m, d)]4字節(jié)
double[(m, d)] 8字節(jié)
decimal (m, d)m字節(jié)(mysql < 3.23),m+2字節(jié)(mysql > 3.23 )

mysql提供了五種整型: tinyint、smallint、mediumint、int和bigint。int為integer的縮寫。這些類型在可表示的取值范圍上是不同的。整數(shù)列可定義為unsigned從而禁用負值;這使列的取值范圍為0以上。各種類型的存儲量需求也是不同的。取值范圍較大的類型所需的存儲量較大。 

mysql 提供三種浮點類型: float、double和decimal。與整型不同,浮點類型不能是unsigned的,其取值范圍也與整型不同,這種不同不僅在于這些類型有最大值,而且還有最小非零值。最小值提供了相應(yīng)類型精度的一種度量,這對于記錄科學(xué)數(shù)據(jù)來說是非常重要的(當然,也有負的最大和最小值)。 

在選擇了某種數(shù)值類型時,應(yīng)該考慮所要表示的值的范圍,只需選擇能覆蓋要取值的范圍的最小類型即可。選擇較大類型會對空間造成浪費,使表不必要地增大,處理起來沒有選擇較小類型那樣有效。對于整型值,如果數(shù)據(jù)取值范圍較小,如人員年齡或兄弟姐妹數(shù),則tinyint最合適。mediumint能夠表示數(shù)百萬的值并且可用于更多類型的值,但存儲代價較大。bigint在全部整型中取值范圍最大,而且需要的存儲空間是表示范圍次大的整型int類型的兩倍,因此只在確實需要時才用。對于浮點值,double占用float的兩倍空間。除非特別需要高精度或范圍極大的值,一般應(yīng)使用只用一半存儲代價的float型來表示數(shù)據(jù)。 

在定義整型列時,可以指定可選的顯示尺寸m。如果這樣,m應(yīng)該是一個1 到255的整數(shù)。它表示用來顯示列中值的字符數(shù)。例如,mediumint(4)指定了一個具有4個字符顯示寬度的mediumint列。如果定義了一個沒有明確寬度的整數(shù)列,將會自動分配給它一個缺省的寬度。缺省值為每種類型的“最長”值的長度。如果某個特定值的可打印表示需要不止m個字符,則顯示完全的值;不會將值截斷以適合m個字符。 

對每種浮點類型,可指定一個最大的顯示尺寸m 和小數(shù)位數(shù)d。m 的值應(yīng)該取1 到255。d的值可為0 到3 0,但是不應(yīng)大于m - 2(如果熟悉odbc 術(shù)語,就會知道m(xù) 和d 對應(yīng)于odbc 概念的“精度”和“小數(shù)點位數(shù)”)。m和d對float和double 都是可選的,但對于decimal是必須的。在選項m 和d時,如果省略了它們,則使用缺省值。

2.2字符串列類型 

mysql提供了幾種存放字符數(shù)據(jù)的串類型,其類型如下:

表4:字符串列類型

類型名說明
char    定長字符串
varchar    可變長字符串
tinyblob非常小的blob(二進制大對象)
blob標準blob
mediumblob中blob
longblob大blob
tinytext非常小的文本串
text標準的文本串
mediumtext中等的文本串
longtext大文本串
enum枚舉;列可賦予某個枚舉成員
set集合;列可賦予多個集合成員

下表給出了mysql 定義串值列的類型,以及每種類型的最大尺寸和存儲需求。對于可變長的列類型,各行的值所占的存儲量是不同的,這取決于實際存放在列中的值的長度。這個長度在表中用l 表示。

表5:串列類型最大尺寸及存儲需求

類型名最大存儲實際存儲
char     m 字節(jié) m 字節(jié)
varchar     m 字節(jié)l + 1字節(jié)
tinyblob    28- 1字節(jié)  l + 1字節(jié)
blob    216 - 1 字節(jié)    l + 2字節(jié)
mediumblob    224- 1字節(jié)l + 3字節(jié)
longblob232- 1字節(jié)l + 4字節(jié)
tinytext28- 1字節(jié)l + 1字節(jié)
text216 - 1 字節(jié)l + 2字節(jié)
mediumtext224- 1字節(jié)l + 3字節(jié)
longtext232- 1字節(jié)l + 4字節(jié)
enum2字節(jié)1 或2字節(jié)
set8字節(jié)1、2、3、4或8字節(jié)

l 以外所需的額外字節(jié)為存放該值的長度所需的字節(jié)數(shù)。mysql 通過存儲值的內(nèi)容及其長度來處理可變長度的值。這些額外的字節(jié)是無符號整數(shù)。請注意,可變長類型的最大長度、此類型所需的額外字節(jié)數(shù)以及占用相同字節(jié)數(shù)的無符號整數(shù)之間的對應(yīng)關(guān)系。例如,mediumblob 值可能最多224 - 1字節(jié)長并需要3 個字節(jié)記錄其結(jié)果。3 個字節(jié)的整數(shù)類型mediumint 的最大無符號值為224 - 1。這并非偶然。

2.3日期時間列類型 

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字節(jié)
time    “-838:59:59”到“838:59:59”3字節(jié)
datetime“1000-01-01 00:00:00” 到“9999-12-31 23:59:59”8字節(jié)
timestamp19700101000000 到2037 年的某個時刻4字節(jié)
year1901 到21551字節(jié)

下面舉個例子:   

create table student
(
name varchar(20) not null,
chinese tinyint(3),
maths tinyint(3),
english tinyint(3),
birthday date
)

這個例子創(chuàng)建一個student表,這個表中有name字段,字符類型列,不允許null(空值)。有chinese、maths和english三個整數(shù)類型列。還有個birthday日期類型列。

到此這篇關(guān)于詳解MySQL中數(shù)據(jù)類型和字段類型的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù) 字段類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中的唯一性約束與NULL詳解

    MySQL中的唯一性約束與NULL詳解

    這里記錄的是很久之前的一個 bug 了,主要給大家介紹了關(guān)于MySQL中唯一性約束與NULL的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • mysql按逗號分割的實現(xiàn)

    mysql按逗號分割的實現(xiàn)

    在MySQL中,我們經(jīng)常需要對數(shù)據(jù)進行拆分和處理,其中一個常見需求就是按逗號分割字符串,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • MySQL中的TRUNCATE()函數(shù)用法

    MySQL中的TRUNCATE()函數(shù)用法

    TRUNCATE(X,D)函數(shù)是MySQL中用于數(shù)值截取的系統(tǒng)函數(shù),其中X表示數(shù)值,D表示保留的小數(shù)位數(shù),該函數(shù)的特點是直接截取數(shù)值,不進行四舍五入,根據(jù)D的不同值,操作也有所不同:D大于0時,截取X的小數(shù)位;D等于0時,僅保留X的整數(shù)部分;D小于0時,整數(shù)部分的指定位數(shù)用0替換
    2024-10-10
  • MySQL中的主鍵以及設(shè)置其自增的用法教程

    MySQL中的主鍵以及設(shè)置其自增的用法教程

    這篇文章主要介紹了MySQL中的主鍵以及設(shè)置其自增的用法教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • 一文詳解MySQL數(shù)據(jù)庫索引優(yōu)化的過程

    一文詳解MySQL數(shù)據(jù)庫索引優(yōu)化的過程

    在MySQL數(shù)據(jù)庫中,索引是一種關(guān)鍵的組件,它可以大大提高查詢的效率,但是,當數(shù)據(jù)量增大或者查詢復(fù)雜度增加時,索引的選擇和優(yōu)化變得至關(guān)重要,本文將記錄MySQL數(shù)據(jù)庫索引優(yōu)化的過程,以幫助開發(fā)人員更好地理解和應(yīng)用索引優(yōu)化技巧
    2023-06-06
  • Windows下MySQL5.6查找my.ini配置文件的方法

    Windows下MySQL5.6查找my.ini配置文件的方法

    今天小編就為大家分享一篇Windows下MySQL5.6查找my.ini配置文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Mysql Binlog快速遍歷搜索記錄及binlog數(shù)據(jù)查看的方法

    Mysql Binlog快速遍歷搜索記錄及binlog數(shù)據(jù)查看的方法

    這篇文章主要介紹了Mysql Binlog快速遍歷搜索記錄及binlog數(shù)據(jù)查看的方法的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • windows下mysql 8.0.16 安裝配置方法圖文教程

    windows下mysql 8.0.16 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了windows下mysql 8.0.16 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • MySQL數(shù)據(jù)庫自增主鍵的間隔不為1的解決方式

    MySQL數(shù)據(jù)庫自增主鍵的間隔不為1的解決方式

    這篇文章主要介紹了MySQL數(shù)據(jù)庫自增主鍵的間隔不為1的解決方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • MySQL表的基本查詢詳細圖文教程

    MySQL表的基本查詢詳細圖文教程

    這篇文章主要給大家介紹了關(guān)于MySQL表的基本查詢的相關(guān)資料,需要的朋友可以參考下
    2024-10-10

最新評論

绥芬河市| 筠连县| 临朐县| 牙克石市| 吉安县| 高安市| 广水市| 忻城县| 舟曲县| 稻城县| 浦江县| 南部县| 苏尼特右旗| 南平市| 和林格尔县| 博罗县| 集安市| 洞口县| 修水县| 郑州市| 扬州市| 阳高县| 兴和县| 临漳县| 湟中县| 镇宁| 枣庄市| 资阳市| 英吉沙县| 金湖县| 湖北省| 枣庄市| 自贡市| 浑源县| 喀什市| 泰州市| 东丽区| 肇源县| 阳城县| 渝北区| 车险|