亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL學習第六天 學習MySQL基本數據類型

2024-07-24 13:09:41
字體:
來源:轉載
供稿:網友

還記得上一篇學習的內容嗎?不記得再看一看MySQL學習第五天 MySQL數據庫基本操作,溫故可以知新!

        數據類型是指列、存儲過程參數、表達式和局部變量的數據特征,它決定了數據的存儲方式,代表了不同的信息類型。MySQL中常用的的數據類型包括:數值類型、日期和時間類型和字符串類型等。

 一、數值類型

       MySQL支持所有標準SQL中的數值類型,其中包括嚴格數據類型(INTEGER、SMALLINT、DECIMAL、NUMBERIC),以及近似數值數據類型(FLOAT、REAL、DOUBLE、PRESISION),并在此基礎上進行擴展。擴展后增加了TINYINT、MEDIUMINT、BIGINT這3種長度不同的整形,并增加了BIT類型,用來存放位數據。

(1).整型

       在MySQL中支持的5個主要整數類型是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。這些類型在很大程度上是相同的,只有它們存儲的值的大小是不相同的。

       MySQL以一個可選的顯示寬度指示器的形式對SQL標準進行擴展,這樣當從數據庫檢索一個值時,可以把這個值加長到指定的長度。例如,指定一個字段的類型為INT(6),就可以保證所包含數字少于 6 個的值從數據庫中檢索出來時能夠自動地用空格填充。需要注意的是,使用一個寬度指示器不會影響字段的大小和它可以存儲的值的范圍。萬一我們需要對一個字段存儲一個超出許可范圍的數字,MySQL會根據允許范圍最接近它的一端截短后再進行存儲。還有一個比較特別的地方是,MySQL會在不合規定的值插入表前自動修改為0。

       下面的表顯示了需要的每個整數類型的存儲和范圍:

MySQL基本數據類型,MySQL數據類型

       上面定義的都是有符號的,當然了,也可以加上UNSIGNED關鍵字,定義成無符號的類型,那么對應的取值范圍就要翻翻了,比如:TINYINT UNSIGNED的取值范圍為0~255。

       例如我們存儲人的年齡,就是使用TINYINT UNSIGNED:

CREATE TABBLE tb1(  age TINYINT UNSIGNED, ); 

(2).浮點型

       MySQL支持的三個浮點類型是FLOAT、DOUBLEDECIMAL類型。FLOAT數值類型用于表示單精度浮點數值,而DOUBLE數值類型用于表示雙精度浮點數值。與整數一樣,這些類型也帶有附加參數:一個顯示寬度指示器和一個小數點指示器。比如語句 FLOAT(7,3) 規定顯示的值不會超過7位數字,小數點后面帶有3位數字。對于小數點后面的位數超過允許范圍的值,MySQL會自動將它四舍五入為最接近它的值,再插入它。

       DECIMAL數據類型用于精度要求非常高的計算中,這種類型允許指定數值的精度和計數方法作為選擇參數。精度在這里指為這個值保存的有效數字的總個數,而計數方法表示小數點后數字的位數。比如語句DECIMAL(7,3) 規定了存儲的值不會超過7位數字,并且小數點后不超過3位。

      下表給出了它們的存儲范圍:

MySQL基本數據類型,MySQL數據類型

       我在MySQL中建立了一個表,有一列為FLOAT(5, 3);做了以下試驗:

       1)插入123.45678,最后查詢得到的結果為99.999;

       2)插入123.456,最后查詢結果為99.999;

       3)插入12.34567,最后查詢結果為12.346;

       所以,在使用浮點型的時候,還是要注意陷阱的,要以插入數據庫中的實際結果為準。

       例如我們存儲工作人員的工資就是使用FLOAT(8,2) UNSIGNED:

CREATE TABBLE tb1(  salary FLOAT(8,2) UNSIGNED ); 

二、日期時間類型

       在處理日期和時間類型的值時,MySQL帶有5個不同的數據類型可供選擇。它們可以被分成簡單的日期、時間類型,和混合日期、時間類型。根據要求的精度,子類型在每個分類型中都可以使用,并且MySQL帶有內置功能可以把多樣化的輸入格式變為一個標準格式。

       下表解釋了五種日期和時間類型:

MySQL基本數據類型,MySQL數據類型

1)、MySQL用DATE和YEAR類型存儲簡單的日期值,使用TIME類型存儲時間值。這些類型可以描述為字符串或不帶分隔符的整數序列。如果描述為字符串,DATE類型的值應該使用連字號作為分隔符分開,而TIME類型的值應該使用冒號作為分隔符分開。需要注意的是,沒有冒號分隔符的TIME類型值,將會被MySQL理解為持續的時間,而不是時間戳。

 2)、除了日期和時間數據類型,MySQL還支持DATEYIME和TIMESTAMP這兩種混合類型。它們可以把日期和時間作為單個的值進行存儲。這兩種類型通常用于自動存儲包含當前日期和時間的時間戳,并可在需要執行大量數據庫事務和需要建立一個調試和審查用途的審計跟蹤的應用程序中發揮良好作用。如果我們對TIMESTAMP類型的字段沒有明確賦值,或是被賦與了NULL值。MySQL會自動使用系統當前的日期和時間來填充它。

       例如我們存儲添加用戶的出生年月就是使用:

CREATE TABBLE tb1(  brithday DATE ); 

 三、字符串類型

       MySQL提供了6個基本的字符串類型,分別為CHAR、VARCHAR、TINYTEST、TEXT、MEDIUMTEXT、LONGTEXT六種字符串類型??梢源鎯Φ姆秶鷱暮唵蔚囊粋€字符到巨大的文本塊或二進制字符串數據。

      下標解釋了六種基本字符串類型:

MySQL基本數據類型,MySQL數據類型

1)、CHAR(n)和VARCHAR(n)中括號中n代表字符的個數,并不代表字節個數,所以當使用了中文的時候(UTF8)意味著可插入m個中文,但是實際會占用m*3個字節。

2)、同時CHAR和VARCHAR最大的區別就在于CHAR不管實際VALUE都會占用n個字符的空間,而VARCHAR只會占用實際字符應該占用的空間+1,并且實際空間+1<=n。

3)、超過CHAR和VARCHAR的n設置后,字符串會被截斷。

4)、CHAR在存儲的時候會截斷尾部的空格,VARCHAR和TEXT不會。

5)、VARCHAR會使用1-3個字節來存儲長度,TEXT不會。

6)、CHAR類型用于定長字符串,并且必須在圓括號內用一個大小修飾符來定義。這個大小修飾符的范圍從 0-255。比指定長度大的值將被截短,而比指定長度小的值將會用空格作填補。

       例如我們存儲登錄用戶的用戶名就是使用VARCHAR(20):

CREATE TABLE tb1(  username VARCHAR(20) ); 

實例:

       我們現在來驗證上述四個字段是否能創建成功:

CREATE TABLE tb1 (  username VARCHAR(20),  age TINYINT UNSIGNED,  salary FLOAT(8,2) UNSIGNED,  brithday DATE ); 

       創建數據表tb1和查看數據表結構的結果為:

MySQL基本數據類型,MySQL數據類型

       我們向數據表tb1中插入記錄:INSERT tb1 VALUES('Tom',22,5555.55,'1994-10-01'); 

       執行的結果顯示為:

MySQL基本數據類型,MySQL數據類型

四、復合類型

  MySQL還支持兩種復合數據類型ENUM和SET,它們擴展了SQL規范。雖然這些類型在技術上是字符串類型,但是可以被視為不同的數據類型。一個ENUM類型只允許從一個集合中取得一個值;而SET類型允許從一個集合中取得任意多個值。

(1)ENUM類型       

ENUM(“member1″, "member2″, … “member65535″)

ENUM數據類型就是定義了一種枚舉,最多包含65535個不同的成員。當定義了一個ENUM的列時,該列的值限制為列定義中聲明的值。如果列聲明包含NULL屬性,則NULL將被認為是一個有效值,并且是默認值。如果聲明了NOT NULL,則列表的第一個成員是默認值。

ENUM類型因為只允許在集合中取得一個值,有點類似于單選項。在處理相互排拆的數據時容易讓人理解,比如人類的性別。ENUM類型字段可以從集合中取得一個值或使用NULL值,除此之外的輸入將會使MySQ在這個字段中插入一個空字符串。另外如果插入值的大小寫與集合中值的大小寫不匹配,MySQL會自動使用插入值的大小寫轉換成與集合中大小寫一致的值。

ENUM類型在系統內部可以存儲為數字,并且從1開始用數字做索引。一個ENUM類型最多可以包含65536個元素,其中一個元素被MySQL保留,用來存儲錯誤現的值是合法輸入,除此之外其它任何輸入都將失敗。這說明通過搜索包含空字符串或對應數字索引為0的行就可以很容易地找到錯誤記錄的位置。

 (2)SET類型

SET(“member", "member2″, … “member64″)

SET數據類型為指定一組預定義值中的零個或多個值提供了一種方法,這組值最多包括64個成員。值的選擇限制為列定義中聲明的值。

SET類型與ENUM類型相似但不相同。SET類型可以從預定義的集合中取得任意數量的值。并且與ENUM類型相同的是任何試圖在SET類型字段中插入非預定義的值都會使 MySQL插入一個空字符串。如果插入一個即有合法的元素又有非法的元素的記錄,MySQL將會保留合法的元素,除去非法的元素。

一個 SET 類型最多可以包含64項元素。在SET元素中值被存儲為一個分離的“位”序列,這些“位”表示與它相對應的元素。“位”是創建有序元素集合的一種簡單而有效的方式。并且它還去除了重復的元素,所以SET類型中不可能包含兩個相同的元素。希望從SET類型字段中找出非法的記錄只需查找包含空字符串或二進制值為0的行。

復合數據類型的例子我們會在以后的博文中使用到,這里不再進行舉例。

五、總結

       通過對每種數據類型的用途,物理存儲,表示范圍等有一個概要的了解。這樣在面對具體應用時,就可以根據相應的特來來選擇合適的數據類型,使得我們能夠爭取在滿足應用的基礎上,用較小的存儲代價換來較高的數據庫性能。

      選用數據類型的原則:

      1)選擇最小的可用的類型;

      2)從速度方面考慮,選擇固定的列  使用CHAR類型;

      3)從節省空間考慮,選擇動態的列,使用VARCHAR類型。

      高性能數據庫設計原則:

      第一步:大致確定字段的數據類型,數字,字符串,時間等,比較直觀。

      第二步:確定特定的類型,比如說 :數字里有TINYINT、SMALLINT、INT、LONGINT等,選擇最合適的一個(更小通常更好)

      第三步:如有必要,請為字段設置默認值。

      當然,索引優化肯定是必不可少的,不過這屬于設計表完成之后的優化范圍了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久99| 色综合亚洲精品激情狠狠| 亚洲精品久久久久国产| 欧美丝袜一区二区三区| 国产精品黄色影片导航在线观看| 91精品视频免费| 欧美日韩爱爱视频| 亚洲另类xxxx| 91九色视频导航| 欧美又大又粗又长| 欧美在线一区二区三区四| 777精品视频| 热99精品只有里视频精品| 日韩中文字幕网站| 亚洲视频在线看| 欧美最猛性xxxxx(亚洲精品)| 亚洲欧美在线免费观看| 久久国产加勒比精品无码| 人九九综合九九宗合| 日本精品久久久久影院| 国产91精品视频在线观看| 97在线精品国自产拍中文| 中文字幕国产亚洲| 中文字幕欧美日韩| 欧美黄色性视频| 欧美激情小视频| 黄色成人av在线| 欧美性做爰毛片| 国产一区视频在线播放| 欧美在线视频网| 久久99热精品这里久久精品| 中文字幕亚洲一区二区三区五十路| 91精品国产免费久久久久久| 高清在线视频日韩欧美| 亚洲国产天堂久久综合| 中文字幕欧美国内| 91国产美女在线观看| 国产91网红主播在线观看| 中文字幕欧美日韩va免费视频| 国产视频精品在线| 国精产品一区一区三区有限在线| 亚洲免费av网址| 欧美大全免费观看电视剧大泉洋| 5566日本婷婷色中文字幕97| 91欧美日韩一区| 日韩在线一区二区三区免费视频| 成人乱色短篇合集| 国产成人在线一区二区| 欧美自拍视频在线观看| 午夜剧场成人观在线视频免费观看| 日韩综合中文字幕| 久久在线免费观看视频| 欧美中文在线字幕| 亚洲欧美变态国产另类| www.欧美三级电影.com| 日韩免费中文字幕| 91高清视频免费| 2019av中文字幕| 成人午夜激情免费视频| 国产精品激情av电影在线观看| 亚洲性视频网址| 日韩欧美精品网址| 欧美日韩人人澡狠狠躁视频| 亚洲国产精品热久久| 国产精品成人观看视频国产奇米| 成人在线激情视频| 欧美视频在线免费| 亚洲缚视频在线观看| 性欧美xxxx交| 国产精品久久久久久av福利软件| 久久精品国产电影| 欧美一级电影久久| 欧美福利视频网站| 91国产在线精品| 日韩免费av一区二区| 欧美俄罗斯乱妇| www.日本久久久久com.| 91精品久久久久久久久不口人| 国产精品成人aaaaa网站| 亚洲精品电影在线| 亚洲欧美日韩久久久久久| 45www国产精品网站| 欧美夫妻性生活视频| 色悠久久久久综合先锋影音下载| 亚洲影院在线看| 国产精品久久久久久久久久99| 久久精品久久久久电影| 国产一区二区三区直播精品电影| 2019亚洲日韩新视频| 91精品国产乱码久久久久久蜜臀| 亚洲成人黄色在线观看| 九九九久久久久久| 九九九热精品免费视频观看网站| 国产精选久久久久久| 国产丝袜视频一区| 欧美另类高清videos| 88国产精品欧美一区二区三区| 亚洲免费视频一区二区| 国模视频一区二区三区| 久久高清视频免费| 国产精品成人v| 九九精品在线视频| 91精品免费久久久久久久久| 91精品国产自产在线观看永久| 91chinesevideo永久地址| 国产精品1234| 欧美激情第1页| 亚洲视频精品在线| 日韩最新在线视频| 亚洲男人的天堂在线播放| 中文字幕成人精品久久不卡| 国产精品久久久久久久久久东京| 国产成人精品a视频一区www| 国产91网红主播在线观看| 国产精品亚洲精品| 最近2019年日本中文免费字幕| 欧美乱大交xxxxx另类电影| 亚洲天天在线日亚洲洲精| 国产国语videosex另类| 97在线视频免费观看| 日韩av手机在线| 91亚洲精品视频| 91精品国产电影| 一区二区成人av| 奇米一区二区三区四区久久| 992tv成人免费视频| 97在线视频免费播放| 在线日韩第一页| 亚洲综合精品一区二区| 精品国产一区二区三区四区在线观看| 欧美久久久精品| 国产999精品久久久| 91网站在线免费观看| 国产一区私人高清影院| 亚洲国产成人精品久久久国产成人一区| 亚洲欧美福利视频| 欧美成人免费在线观看| 国产精品无码专区在线观看| 欧美成年人在线观看| 亚洲国产一区二区三区四区| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲欧美激情精品一区二区| 久久99久久99精品免观看粉嫩| 国产精品久久久久久搜索| 成人a免费视频| 亚洲精品永久免费| 欧美日韩成人精品| 亚洲人成网站999久久久综合| 久久久久久久成人| 国产一区二区欧美日韩| 欧美亚洲国产成人精品| 亚洲少妇中文在线| 国产精品成人一区二区三区吃奶| 亚洲精选一区二区| 精品日本美女福利在线观看| 日本不卡免费高清视频| 日韩在线观看精品| 亚洲欧美日韩爽爽影院| 日韩精品在线私人| 亚洲精品白浆高清久久久久久| 狠狠久久五月精品中文字幕| 国产一区玩具在线观看| 欧美成人在线网站| 精品久久久久久中文字幕大豆网|