mysql 变量 数据类型_浅谈mysql(二)数据类型
//我。。。我才是不是傲嬌呢
//如有問題還請多多指教。上回我們說到我們?nèi)绾问褂肕ySQL,關(guān)鍵是要看它的用途。用途衍生語句。之后文章的思路,也是如此,從用途出發(fā),然后再到語句。
那么,我們先問幾個問題,我們用mysql干什么,獲得數(shù)據(jù),處理數(shù)據(jù),制作想要的報表或視圖。等等,數(shù)據(jù)是什么?是數(shù)字嗎?還是文本?音頻?我們在使用之前,是否要先了解一下數(shù)據(jù)是什么,正如我們創(chuàng)造世界,操縱世界。首先要命名,它是什么?它的特征是什么,知道這些我們才可以方便進行下一步操作。那么數(shù)據(jù)是什么?根據(jù)wiki的定義:數(shù)據(jù),或稱資料,指描述事物的符號記錄,是可定義為意義的實體,它涉及到事物的存在形式。它是關(guān)于事件之一組離散且客觀的事實描述,是構(gòu)成信息和知識的原始材料。數(shù)據(jù)可分為模擬數(shù)據(jù)和數(shù)字數(shù)據(jù)兩大類。數(shù)據(jù)指計算機加工的“原料”,如圖形、聲音、文字、數(shù)、字符和符號等。
也就是說,數(shù)據(jù)不是一個單純的個體,它是種種世界特征的描述。mysql中的數(shù)據(jù)也是如此,它不止于數(shù)值,也不止于文本(字符串),也不止于日期。它的特征是豐富多樣。然而我們知道,如果變量(數(shù)據(jù)的特征)太多,在研究的時候就會很困難。所以從眾多的變量之中,抽出典型的變量,進行研究是合適的。
我們按照數(shù)據(jù)的類型(變量)進行分類,以便我們進行研究,同時將這些分好的變量重新命名,將它稱之為字段(在Excel表中表現(xiàn)為每一列)。
那么如何分類呢?這時我們通常是根據(jù)方便來分的,在數(shù)據(jù)處理過程中,我們主要會遇到數(shù)值類型,時間類型,以及字符串類型,二進制類型所以數(shù)據(jù)的類型也因此主要分為這幾種,然而注意的是,mysql的數(shù)據(jù)類型不止于此。我們只是為了方便,挑一些主要的來說。
首先是數(shù)值型數(shù)據(jù),包括整數(shù)類型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
浮點小數(shù)類型:FLOAT、DOUBLE、DECIMAL(M,D).
關(guān)于整數(shù)類型我們知道它的英文意思,差不多就懂了,也沒必要過分深究它的取值范圍,占多少內(nèi)存,夠用就可以了。真正要注意的是,在SQL中,整數(shù)類型后面定義的是它的顯示出來的寬度,跟本體無關(guān)。如INT(2),就是顯示出2位整數(shù),后如果超出,則不顯現(xiàn)出來。如果你記錄了一個叫做1000的數(shù)字,那么你可以看到的是10,而不是1000,雖然它在計算機內(nèi)部還是1000.
關(guān)于浮點小數(shù)類型,我們要記住的是,FLOAT,比較短的包括小數(shù)的數(shù),DOUBLE,比較長的。DECIMAL(M,D),定點數(shù),M,指的是整個數(shù)的長度,D,指的是小數(shù)點后的精度。如DECIMAL(5,1)就是保留一位小數(shù),長度為5。如果我們記錄了一個叫做4.234的數(shù),那么最終會得到4.2的數(shù)字,ps:內(nèi)部的形式是4.2000。
接著是字符串類型,字符串類型大體有三種
1.CHAR(M),VARCHAR(M)
2.TEXT型,細分為TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT
3.其他,分為ENUM,SET
首先是CHAR型和VARCHAR型,主要的區(qū)分在于一個短一個長,另外一點是,CHAR型的存儲是固定的,M是多少,它就占多少字節(jié),比如說定義一個char(2),然而你填入了一個長度為1的數(shù),如8,那么它便會將后面存儲空余不會刪除。而VARCHAR不同,VARCHAR它的存儲是浮動的,根據(jù)你填入的長度而改變,如varchar(2),填入8,所占的字節(jié)數(shù)為1位加1。
值得注意的是,對于不同的存儲引擎,如MyISAM,最好就用CHAR,雖然比較浪費空間,但這樣夠快,而InnoDB,最好用VARCHAR,這樣比較少占內(nèi)存。(存儲引擎有時間再講)
接著是TEXT型,這種類型顯而易見,是用來存儲小中大型文本的,而char,varchar是存儲字符的。
再接著是,ENUM型,這種感覺就像一個創(chuàng)建一個下拉菜單用的,它的選擇項在于集合內(nèi)的所有元素。如ENUM('男','女')這時如果你實際填入的數(shù),超出了男,女這個選擇范圍,系統(tǒng)就會報錯。Ps,ENUM支持索引,可以用1,2。代替男,女。
再接著是,SET型,SET型的感覺也是一個菜單用的,不過它比ENUM的要求要寬松,如SET('A','B','C'),這時你可以填入任意A,B,C的排列組合,如('A,B'),('A,B,C'),('A')。
輪到時間類型了,時間類型包括
YEAR,TIME,DATE,DATETIME,TIMESTAMP
1.YEAR表示的是年,你填入的需要是4位數(shù),如字符串'2018',或數(shù)字2018.如果你填入的是兩位數(shù),它便會根據(jù)數(shù)的范圍自動幫你轉(zhuǎn)換,對于字符來說,'00'-'69'是'2000'-'2069'。而'70-99'是'1970-1999'。對于數(shù)字來說,1-69對應(yīng)的是2001到2069,70-99對應(yīng)的是1970-1999,而0會報錯。
2.TIME的格式為: 'hh:mm:ss',還有一些非嚴格的寫法,不過不建議去記住,這些以后用久了自然會知道。如'D HH:MM'、'D HH',D指的是天,它會自動幫你轉(zhuǎn)成D*24的。ps,記得加引號。
3.DATE型,表示的是日期,格式為'YYYY-MM-DD',寫法要嚴格,如果寫成非嚴格的,如'YYYYMMDD'、‘YYMMDD’、'YY-MM-DD’則其語法規(guī)則與1相同。
4.DATETIME型,就是日期加時間,寫法嚴格的為'YYYY-MM-DD HH:MM:SS',簡單來說就是DATE型與TIME型的復(fù)合。非嚴格的'YYMMDDHHMMSS'、'YY-MM-DD HH:MM:SS'。語法與1同
要獲得當前的DATETIME,可以使用NOW()函數(shù)。
TIMESTAMP型,與TIMESTAMP一樣,只是它意味的是世界標準時間,如此而已,世界標準時間可以百度得知。
最后是二進制型,它們是根據(jù)BIT來分配存儲空間的。
1.BIT(M)
2.BINARY(M),VARBINARY(M)
3.TINTBLOB(M)、BLOB(M)、MEDIUMBLOB(M)、LONGBLOB(M)
首先是BIT(M),舉個例子來方便理解,BIT(4),那么它將分配給你一個從0000-1111的數(shù),轉(zhuǎn)換為十進制就是0-15。如果你插入了一個16的數(shù),那么它只會給你返回1111。即15。
然后是BINARY,和VARCHAR,它們跟CHAR和VARCHAR差不多。
最后是BLOB型,這種是來存儲二進制大對象的,如音樂,圖片,視頻等等,又根據(jù)存儲的分配,分為TINYBLOB(255B)、BLOB(65kb)、MEDIUMBLOB(16MB)、LONGBLOB(4GB)。
初略的知道這些之后,下回就可以正式開始操作了。那么,下回見。
總結(jié)
以上是生活随笔為你收集整理的mysql 变量 数据类型_浅谈mysql(二)数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql decimal型转化为flo
- 下一篇: c 命令导出数据到mysql_MySQL