#數據類型和運算符
Mysql支持多種數據類型,主要有:整數型、浮點小數、定點小數、日期/時間、字符串
數值數據類型:
#=================================================================================================================================================================================
類型名稱 說明 默認位數 存儲需求 有符號 無符號
#=================================================================================================================================================================================
TINYINT 很小的整數 4 1 byte -128~127 0~255
SMALLINT 小的整數 6 2 byte -32768~32767 0~65535
MEDIUMINT 中等大小的整數 9 3 byte -8388608~8388607 0~16777215
INT(INTEGER) 普通大小的整數 11 4 byte -2147483648~2147483647 0~4294967295
BIGINT 大整數 20 8 byte -9223372036854775808~9223372036854775807 0~18446744073709551615
FLOAT 單精度浮點數 4 byte -3.402823466E+38~-1.175494351E-308 0和1.175494351E-38~3.402823466E+38
DOUBLE 雙精度浮點數 8 byte -1.7976931348623157E+308~-2.2250738585072014E-308 0和-1.7976931348623157E+308~-2.2250738585072014E-308
DECIMAL(M,D),DEC 壓縮的“嚴格”定點數 M+2 byte
#=================================================================================================================================================================================
DECIMAL以串存放,選擇D時與DOUBLE一樣,M時佔用M+2byte
eg.
year INT(4)
該聲明表示year字段中的數據一般只顯示4位數字的寬度,數值位數小於指定寬度由空格填充,大於顯示寬度
,值不超過該類型整數的取值範圍,數值依然可以插入
後續的數字表示的是該數據類型指定的顯示寬度,指定能夠顯示的數值中數字的個數
日期與時間類型:
#=======================================================================================================
類型名稱 日期格式 日期範圍 存儲需求
#=======================================================================================================
YEAR YYYY 1901~2155 1byte
TIME HH:MM:SS -838:59:59~838:59:59 3byte
DATE YYYY-MM-DD 1000-01-01~9999-12-31 3byte
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~9999-12-31 23:59:59 8byte
TIMESTAMP YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 UTC~2038-01-19 03:14:07 UTC 4byte
#========================================================================================================
#=========TIME類型===================================================
(1) TIME類型分配簡寫的值時應注意:沒有冒號時最右邊兩位表示秒;有冒號時從左邊開始解析
(2) 使用D HH格式時,小時必須使用雙位數值,如果是小於10的小時數,前面加0
(3) 在使用insert插入數據時可以是數據格式或者字符串格式
eg.
INSERT INTO test values(2010),('2010');
#=========DATE類型===================================================
(1) 以YY-MM-DD或YYMMDD字符串各格式表示日期,YY表示兩位的年值,"00~69"轉爲"2000~2069","70~99"轉爲"1970~1999"
(2) 使用CURRENT_DATE或者NOW(),插入當前系統日期
#=========DATETIME類型===============================================
(1) 以YY-MM-DD HH:MM:SS或YYMMDDHHMMSS表示值遵從之前的Data類型規則
#=========TIMESTAMP類型==============================================
(1) 存儲時以UTC時間存儲,取出時再轉回到當前時區,查詢會發現與當前時間值不同
文本字符串類型:
#=======================================================================================================
類型名稱 說明 存儲需求
#=======================================================================================================
CHAR(M) 固定長度非二進制字符串 M byte,1<=M<=255
VARCHAR(M) 變長非二進制字符串 L+1 byte,L<=M和1<=m<=255
TINYTEXT 非常小的非二進制字符串 L+1 byte, L<2^8
TEXT 小的非二進制字符串 L+2 byte, L<2^16
MEDIUMTEXT 中等大小的非二進制字符串 L+3 byte, L<2^24
LONGTEXT 大的非二進制字符串 L+4 byte, L<2^32
ENUM 枚舉類型,只能有一個枚舉字符串值 1或2個字節,取決於枚舉數目,最大:65535
SET 一個設置,字符串對象可以有零個或對個SET成員 1,2,3,4或8byte,取決於集合成員的數量(最多64個)
#========================================================================================================
二進制字符串類型:
#=======================================================================================================
類型名稱 說明 存儲需求
#=======================================================================================================
BIT(M) 位字段類型 大約(M+7)/8byte
BINARY(M) 固定長度二進制字符串 M byte
VARBINARY(M) 可變長度二進制字符串 M+1 byte
TINYBLOB(M) 非常小的BLOB L+1 byte, L<2^8
BLOB(M) 小BLOB L+2 byte, L<2^16
MEDIUMBLOB(M) 中等大小的BLOB L+3 byte, L<2^24
LONGBLOB(M) 非常大的BLOB L+4 byte, L<2^32
#========================================================================================================
#BIT類型
M範圍爲1~64,M默認爲1.如果分配值長度小於M位,左邊用0填充
#常見運算符分爲:算術運算符、比較運算符、邏輯運算符、位操作運算符
算術運算符
#=======================================================
運算符 作用
#=======================================================
= 等於
<=> 安全的等於
<>/!= 不等於
<= 小於等於
>= 大於等於
> 大於
IS NULL 判斷一個值是否爲NULL
IS NOT NULL 判斷一個值是否不爲NULL
LEAST 在有兩或多個參數時,返回最小值
GREATEST 當有兩或多個參數時,返回最大值
BETWEEN AND 判斷一個值是否落在兩個值之間
ISNULL 與IS NULL 作用相同
IN 判斷一個值是IN列表中的任意一個值
NOT IN 判斷一個值不是IN列表中的任意一個值
LIKE 通配符匹配
REGEXP 正則表達式匹配
#=======================================================
1.等於運算符(=),不可以判斷NULL值,比較時有如下規則
(1) 若有一個或多個參數爲NULL,則運算結果返回爲NULL
(2) 若同一個比較運算符中的兩個參數都是字符串,按字符串進行比較
(3) 若兩個參數均爲整數,按整數進行比較
(4) 若一個字符串和數字進行相等判斷,自動將字符串轉換爲數字
2.安全等於運算符(<=>),可以用來判斷NULL值,當兩個操作數爲NULL時,返回值爲1,當一個爲NULL時,返回值爲0
3.不等於運算符<>或者!=,不能判斷空值NULL,用於判斷數字、字符串、表達式不相等的判斷。如果不相等,返回1,否則返回0。
4.小於或等於運算符(<=),不能判斷空值NULL,小於或等於返回1,否則返回0
5.小於運算符(<),不能判斷空值NULL,小於返回1,否則返回0
6.大於或等於運算符(>=),不能判斷空值NULL,大於或等於返回1,否則返回0
7.大於運算符(<),不能判斷空值NULL,大於返回1,否則返回0
8.IS NULL(ISNULL),IS NOT NULL,條件成立返回1,否則返回0
9.BETWEEN AND運算符,expr BETWEEN min AND max,min<=expr<=max,返回1,否則返回0
10.LEAST運算符:LEAST(值1,值2,值n),返回N(N>=2)個值中的最小值,如果有一個爲NULL,返回值爲NULL
11.GREATES運算符:GREATEST(value1,value2,....)返回N(N>=2)個值中的最大值,如果有一個爲NULL,返回值爲NULL
12.IN、NOT IN運算符操作數在或者不在列表中,成立返回1,否則返回0
13.LIKE運算符匹配字符串:語法格式:expr LIKE 匹配條件,成立返回1,否則返回0,expr或匹配條件任何一個爲NULL,返回NULL
(1) "%",匹配任何數目的字符,包括零字符
(2) "_",只匹配一個字符
eg.
select 'stud' LIKE 'stud', 'stud' LIKE 'stu_','stud' LIKE '%d','stud' LIKE 't_ _ _','s' LIKE NULL;
依次返回值爲 1 1 1 0 NULL
14.REGEXP運算符用來匹配字符串,expr REGEXP 匹配條件,成立返回1,否則返回0,expr或匹配條件任何一個爲NULL,返回NULL
匹配的通配符:
(1) '^'匹配以該字符後面的字符開頭的字符串
(2) '$'匹配以該字符後面的字符結尾的字符串
(3) '.'匹配任何一個單字符
(4) "[...]"匹配在方括號內的任何字符串,爲了命名字符的範圍,使用一個'_'
(5) '*'匹配零個或多個在它前面的的字符
eg.
(1) '^s':表示匹配任何以字母's'開頭的字符串
(2) 'y$':表示任何以'y'結尾的字符串
(3) '.sky':匹配任何以'sky'結尾,字符長度爲4的字符串
(4) '[ab]':匹配任何包含字母'a'或'b'的字符串
邏輯運算符
#================================
運算符 作用
#================================
NOT 或者 ! 邏輯非
AND 或者 && 邏輯與
OR 或者 || 邏輯或
XOR 邏輯異或
#================================
1.NOT 或 ! :操作數爲0時所得值爲1,非0,所得值爲1;操作數爲NULL,返回NULL
2.AND 或 &&:所有操作數均爲非0值,且不爲NULL,返回1,否則返回0,操作數有一個爲NULL返回NULL
3.OR 或 ||:兩個操作數均爲非NULL值,任意一個操作數爲非零值,返回1,否則0;一個操作數爲NULL,另一個爲非0,返回1,否則NULL,兩個均爲NULL,返回NULL
4.XOR :當任意一個操作數爲NULL時,返回NULL,非NULL,且兩個操作數都是非0或者都是0值,返回結果爲0,一個爲0,另一個非0,返回1
位運算符:同C語言一樣使用
#================================
運算符 作用
#================================
| 位或
& 位與
^ 位異或
<< 位左移
>> 位右移
~ 位取反
#================================
運算符優先級
#==============================================================
優先級 運算符
#==============================================================
最低 =(賦值運算),:=
||,OR
XOR
&&,AND
NOT
BETWEEN,CASE,WHEN,THEN,ELSE
=(比較運算),<=>,>,>=,<,<=,<>,!=,IS,LIKE,REGEXP,IN
|
&
<<,>>
-,+
*,/(DIV),%(MOD)
^
-(負號),~(位取反)
最高 !
#==============================================================
Mysql數據庫基礎(四)數據類型 和運算符
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.