數據庫表是由多列字段構成,每個字段都是表的一個屬性,每一列都指定了不用的數據類型。指定了數據類型以後,也就決定了向字段內插入的數據的內容。例如,插入的是數字的時候,既能夠將它們存儲爲整數類型,也能夠存儲爲字符串類型。不一樣的數據類型也決定了 mysql 在存儲他們的時候使用的方式,以及在使用他們的時候選擇什麼運算符號進行運算。 mysql
mysql支持多種數據類型,主要有:數值類型、日期\時間類型、字符串類型。sql
(1)數值數據類型:包括 整數類型的 (TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT),浮點小數類型的 (FLOAT、DOUBLE),定點小數類型的(DECIMAL)。數據庫
(2)時間\日期類型:包括YEAR、TIME、DATE、DATETIME和TIMESTAMP。安全
(3)字符串類型:包括CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET等。字符串類又分爲文本字符串和二進制字符串。spa
整數類型主要是用來存儲數字的。不一樣類型的數值數據類型,提供不一樣的取值範圍,能夠存儲的值得範圍越大,其所須要的存儲空間越大。每一個數據類型後面的括號內的數字表示能夠顯示的數字的寬度,顯示寬度只用於顯示,不能限制取值範圍和佔用空間。3d
整型:blog
浮點型:FLOAT爲單精度浮點型,DOUBLE爲雙精度浮點型。浮點型能夠用(m,n)表示,m表示精度(能夠一共保存幾位),n表示精度(保留小數點後幾位)事件
定點類型圖片
YEAR類型是一個單字節類型,表示年,在存儲時只須要一個字節,定義YEAR類型的幾種格式:字符串
(1)以4位字符串或者4位數字格式表示 YEAR。輸入的格式爲 YYYY 或者 ‘YYYY’。例如:輸入‘2010’或2010,插入的數據均爲2010.
(2)以2位字符串表示YEAR。輸入的格式爲‘YY’。範圍是 ‘00’~‘99’,00~69表示2000~2069,70~99表示1970~1999。例如:輸入‘0’ 和‘00’的效果是同樣的,都輸出的是2000。
(3)以2位數字格式表示YEAR。輸入的格式爲YY。範圍是1~99,1~69表示2001~2069,70~99表示1970~1999。輸入0則輸出的是0000,而不是2000。非法YEAR值會被轉換爲0000。
TIME類型用在只須要時間信息的值,存儲的時候須要3個字節。格式爲「HH-MM-SS」,HH表示小時,MM表示分鐘,SS表示秒。TIME類型不只能夠用於表示一天的時間,還能夠表示過去的幾件或者兩個事件之間的時間的間隔。定義DATE類型的幾種格式:
(1)「D HH:MM:SS」格式的字符串。D表示日,天,能夠取0~34之間的值。在插入數據時,D被轉化成小時保存。即D*24+HH。
(2)「HHMMSS」格式的、沒有間隔符的字符串或者HHMMSS格式的數值。好比‘101112’表示‘10:11:12’,可是‘109710’就是不合法的,將會被存儲爲00:00:00
注意:若是沒有間隔符而且時、分、秒沒有所有填入的時候(如,1112),那麼mysql解釋時,就會假定最右面的是秒。而後依次讀取。
DATE類型用在僅須要日期值,不須要時間部分的值。存儲的時候須要3個字節,格式爲「YYYY-MM-DD」,YYYY表示年,MM表示月,DD表示日。定義DATE類型的幾種格式:
(1)以‘YYYYMMDD’或者‘YYYY-MM-DD’格式的字符串表示日期。
(2)以‘YY-MM-DD’或者‘YYMMDD’格式的字符串類型表示日期。
(3)以YYMMDD或者YY-MM-DD格式的數字類型表示日期。
(4)利用 CURRENT_DATE 或者 NOW(),插入當前的系統的時間。
DATETIME類型用在須要同時包含日期和時間的信息的值,存儲的時候須要8個字節,格式爲‘YYYY-MM-DD HH:MM:SS’。定義DATETIME類型的幾種格式:
(1)以 ‘YYYY-MM-DD HH:MM:SS’ 或者 ‘YYYYMMDDHHMMSS’ 字符串格式表示的值。
(2)以 ‘YY-MM-DD HH:MM:SS’ 或者 ‘YYMMDDHHMMSS’ 字符串格式表示的值。
(3)以 YYYYMMDDHHMMSS 或者 YYMMDDHHMMSS 數字格式表示的值。
TIMESTAMP類型和DATETIME類型顯示格式相同。二者的不一樣是:存儲的字節數不一樣(TIMESTAMP須要4個字節,DATETIME須要8個字節),存儲的範圍不一樣。還有一個最大的區別在於,DATETIME在存儲日期時間的數據時,按照實際輸入的格式存儲,即輸入什麼就存儲什麼,與時區無關。TIMESTAMP類型與時區有關,存儲是以UTC格式保存,存儲時對當前時區進行轉換,檢索時再轉換回當時的時區,不一樣的時區顯示的時間是不一樣的。
字符串類型是用來存儲字符串數據的,除了能夠存儲字符串數據以外,還能夠存儲其餘的數據,好比說圖片和聲音的二進制數據。MySQL提供了兩類字符型數據:文本字符串和二進制字符串。
文本字符串類型:
二進制字符串類型
1.算術運算符:+、-、*、/、DIV、%(取餘)
注意:除法運算,當除數爲0的時候,輸出的結果爲NULL。取餘運算的時候,除數爲0的時候,最後的結果也是NULL。
2.比較運算符:>、<、=、>=、<=、!=、IN、BETWEEN AND、IS NULL等
注意:=運算符,當等號一邊或者兩邊都爲NULL的時候,輸出的結果爲NULL。<=>安全等於運算符,當有一個值爲NULL時,返回的值爲0;當兩邊的值都爲NULL的時候,返回的結果是1。IN 運算符,當數值爲NULL時,返回爲NULL;當語法中含有NULL而且前面的數值不能匹配的時候,返回NULL。LEAST運算符,返回最小的值,當裏面含有NULL的時候,返回NULL。GREATEST和LEAST同樣。
3.邏輯運算符:運算符的結果均爲1或者0。邏輯與(&&、AND),邏輯或(||,OR),邏輯非(!,NOT),邏輯異或(XOR)
注意:注意運算符的優先級別。AND運算符,當AND兩邊有一個爲NULL而且另外一個爲非零數的時候,返回爲NULL。0 AND NULL,返回的是0。OR運算符,當OR兩邊爲 0 OR NULL時,返回的是NULL。
4.位運算符:按照二進制位進行的運算,包括位與&,位或|,位非~,位異或^,左移<<,右移>>
優先級 運算符 (最高) ! -(負號),~(按位取反) ^(按位異或) *,/(DIV),%(MOD) +,- >>,<< & | =(比較運算),<=>,<,<=,>,>=,!=,<>,IN,IS NULL,LIKE,REGEXP BETWEEN AND,CASE,WHEN,THEN,ELSE NOT &&,AND XOR ||,OR (最低) =(賦值運算),:=