如何合理利用MySQL數(shù)據(jù)庫(kù)中的比較運(yùn)算符
為克州等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及克州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、克州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
因?yàn)樵赼scii碼中:
數(shù)字 是排在 字母前面的:
0--9 的ASCII 是 48--57
A-Z的ASCII 是 65--90
a-z的ASCII 是 97--122
所以字符:
'6' 'A'
然后:
'6A' 'A6'
不支持
SELECT if(0,'yes','NO') ; 這樣
IF(expr1,expr2,expr3)
如果 expr1是TRUE (expr1
0 and expr1 NULL),則
IF()的返回值為expr2; 否則返回值則為
expr3。IF() 的返回值為數(shù)字值或字符串值,具體情況視其所在語(yǔ)境而定。
算術(shù)運(yùn)算符中的加(+),用于獲取兩個(gè)或兩個(gè)以上數(shù)據(jù)的和,可以?xún)蓚€(gè)數(shù)相加或多個(gè)數(shù)據(jù)相加,如下圖所示:
算術(shù)運(yùn)算符的減(+),是用于一個(gè)數(shù)據(jù)減去另外一個(gè)數(shù)據(jù),或者一個(gè)數(shù)據(jù)減去多個(gè)數(shù)據(jù),如下圖所示:
算術(shù)運(yùn)算符的乘(*),是用于一個(gè)數(shù)據(jù)乘以另外一個(gè)數(shù)據(jù)或多個(gè)數(shù)據(jù),獲取乘的結(jié)果,如下圖所示:
算術(shù)運(yùn)算符的除(/),是一個(gè)數(shù)除以另外一個(gè)數(shù)據(jù)或多個(gè),獲取返回的商,如下圖所示:
另外,算術(shù)運(yùn)算符還有一種取模運(yùn)算,就是一個(gè)數(shù)除以另外一個(gè)數(shù)獲取余數(shù),如下圖所示:
6
算術(shù)運(yùn)算符中除和取模運(yùn)算,都是一個(gè)數(shù)除以另一個(gè)數(shù),這時(shí)如果被除數(shù)為0,這時(shí)就會(huì)出現(xiàn)問(wèn)題,返回結(jié)果為null,如下圖所示:
方法如下:
我們先建一個(gè)DEMO表,來(lái)做我們今天的實(shí)現(xiàn),建表語(yǔ)句如下:
CREATE TABLE
DEMO
(
NAME VARCHAR(50) COMMENT '姓名',
SEX CHAR(1) COMMENT '性別',
PRIMARY KEY (NAME)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='例子表';
并且select查詢(xún)一下,如下圖
增加一個(gè)AGE字段,
ALTER TABLE DEMO ADD AGE CHAR(3);
select查詢(xún)一下,如下圖
請(qǐng)對(duì)比上下圖,可以發(fā)現(xiàn) 多出了一個(gè)AGE字段,此處是CHAR類(lèi)型的。
那么如何刪除我們剛加的字段呢,
ALTER TABLE DEMODROP COLUMN AGE;
select查詢(xún)一下,如下圖
請(qǐng)對(duì)比上下圖,可以發(fā)現(xiàn) AGE字段被刪除掉了
我們?cè)诎堰@個(gè)字段加回來(lái)
ALTER TABLE DEMO ADD AGE CHAR(3);,
我們用視圖工具DBVISUAL看下表機(jī)構(gòu),這時(shí)AGE字段是CHAR類(lèi)型的
我們?nèi)绻枰堰@個(gè)字段修改為VARCHAR類(lèi)型的怎么辦呢,
ALTER TABLE DEMO MODIFY ?AGE ? VARCHAR(20),
然后我們?cè)谟靡晥D工具DBVISUAL看下表機(jī)構(gòu),這時(shí)AGE字段是VARCHAR類(lèi)型的
1、等于運(yùn)算符:=
“=”是用來(lái)判斷數(shù)字、字符串和表達(dá)式是否相等,如果相等,返回值為,否則返回值為0。
如:select 5=6,'9'=9,668=668,'luo'='luo',(2*3)=(4*5),NULL=NULL,0=NULL;
結(jié)論】
1)若有一個(gè)兩個(gè)操作數(shù)為NULL,比較運(yùn)算的結(jié)果就是NULL;
2)同一個(gè)比較運(yùn)算符中兩個(gè)操作數(shù)都是字符串,則按照字符串進(jìn)行比較;
3)若同一個(gè)比較運(yùn)算符中兩個(gè)操作數(shù)都是數(shù)值,則按照數(shù)值進(jìn)行比較;
4)若是一個(gè)數(shù)值和一個(gè)字符串進(jìn)行比較,則MySQL自動(dòng)將字符串轉(zhuǎn)化為數(shù)值;
5)不管何種情況,“=”比較返回的確實(shí)只有1、0與NULL三類(lèi)值。
2、安全等于運(yùn)算符:=
“=”運(yùn)算符在具備“=”所有功能的基礎(chǔ)上增加了判斷NULL值的功能。
【結(jié)論】
1)“=”運(yùn)算符確實(shí)具備“=”所有功能,返回值也是1、0與NULL;
2)當(dāng)兩個(gè)操作數(shù)均為NULL時(shí),“=”運(yùn)算符返回的結(jié)果為1,而不是NULL;
3)當(dāng)只有一個(gè)操作數(shù)為NULL時(shí),“=”運(yùn)算符返回的結(jié)果也不是NULL而是0。
3、不等于運(yùn)算符:或!=
1)“”或“!=”運(yùn)算符也是可以用于數(shù)字、字符串與表達(dá)式的判斷;
2)其比較邏輯與“=”相反,但返回值也是1、0與NULL。
4、小于或等于運(yùn)算符:=
1)“=”運(yùn)算符也是可以用于數(shù)字、字符串與表達(dá)式的判斷;
2)其邏輯:判斷左邊的操作數(shù)是否小于右邊的操作數(shù),如果是則返回1,否則返回0;
3)針對(duì)含有NULL的操作數(shù)則好不猶豫地返回NULL。
5、小于運(yùn)算符:
6、大于或等于運(yùn)算符:=
7、大于運(yùn)算符:
這三類(lèi)運(yùn)算符與上面的“=”邏輯一致,大家可以自己去分析其過(guò)程并得到結(jié)論。
8、IS NULL(ISNULL)、IS NOT NULL運(yùn)算符
1)這類(lèi)比較運(yùn)算符是用來(lái)判斷數(shù)字、字符、表達(dá)式結(jié)果是否為NULL;
2)返回的結(jié)果值有1、0,沒(méi)有NULL;
3)IS NULL(ISNULL)與IS NOT NULL返回的值相反。
9、BETWEEN AND運(yùn)算符
其語(yǔ)法格式為“expr BETWEEN min AND max”。
1)這類(lèi)比較運(yùn)算符是用來(lái)判斷數(shù)字、字符、表達(dá)式結(jié)果是否為NULL;
2)返回的結(jié)果值有1、0與NULL;
3)等同于:min = expr =max,即包含上下限的值。
10、IN與NOT IN運(yùn)算符
1)這類(lèi)比較運(yùn)算符是用來(lái)判斷數(shù)字、字符、表達(dá)式結(jié)果是否為NULL;
2)返回的結(jié)果值有1、0與NULL;
3)IN用來(lái)判斷操作數(shù)是否為IN列表中的一個(gè)值,如果是則返回1,否則返回0,對(duì)于NULL則返回NULL。NOT IN則于IN相反。
11、LIKE運(yùn)算符
其語(yǔ)法格式為“expr LIKE 匹配條件”。
1)LIKE運(yùn)算符用于匹配字符串;
2)返回的結(jié)果值有1、0與NULL;
3)包含兩種通配符?!?”匹配任何字符,甚至包括零字符;“_”只能匹配一個(gè)字符。
12、REGEXP運(yùn)算符
REGEXP是LIKE的逆運(yùn)算。語(yǔ)法格式類(lèi)似:“expr REGEXP 匹配條件”。只是其包含的通配符更多。
1)^:匹配以該字符后面的字符開(kāi)頭的字符串;
2)$:匹配以該字符后面的字符結(jié)尾的字符串;
3).:匹配任何一個(gè)單字符;
4)[···]:匹配方括號(hào)內(nèi)的任何字符;
5)*:匹配零個(gè)或多個(gè)在它前面的字符。
總結(jié):
1、MySQL支持的比較運(yùn)算符有12類(lèi);
2、一個(gè)比較運(yùn)算符的結(jié)果總是1、0或NULL;
3、只有“=”才支持NULL的比較,其他對(duì)有NULL操作數(shù)時(shí)返回的結(jié)果就是NULL。
mysql中有4類(lèi)運(yùn)算符,它們是:
算術(shù)運(yùn)算符
比較運(yùn)算符
邏輯運(yùn)算符
位操作運(yùn)算符
算術(shù)操作符
算術(shù)操作符是SQL中最基本的操作運(yùn)算符,主要有一下幾種運(yùn)算符:
+(加)、 -(減)、 *(乘)、 /(除)、 %(求余或者模)
比較運(yùn)算符
一個(gè)比較運(yùn)算符的結(jié)果總是1,0或者是NULL。MySQL中的比較運(yùn)算符有:
=、=、 (!=)、=、=、、IS NULL、IS NOT NULL、LEAST、GREATEST、BETWEEN . . . AND. . . 、ISNULL、IN、NOT IN、LIKE、REGEXP
邏輯運(yùn)算符
邏輯運(yùn)算符的求值所得結(jié)果均為T(mén)RUE、FALSE或NULL。
邏輯運(yùn)算符有:
NOT 或者 !
AND 或者
OR 或者 ||
XOR(異或)
位運(yùn)算符
位運(yùn)算符是用來(lái)對(duì)二進(jìn)制字節(jié)中的位進(jìn)行測(cè)試、移位或者測(cè)試處理。位運(yùn)算符有:
位或(|)
位與()
位異或(^ )
位左移()
位右移()
位取反(~)