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