Mysql數據庫基礎(四)數據類型 和運算符

#數據類型和運算符
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)
			^
			-(負號),~(位取反)
	最高	!
#============================================================== 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章