mysql中有4類運算符,它們是:
創新互聯公司服務緊隨時代發展步伐,進行技術革新和技術進步,經過十多年的發展和積累,已經匯集了一批資深網站策劃師、設計師、專業的網站實施團隊以及高素質售后服務人員,并且完全形成了一套成熟的業務流程,能夠完全依照客戶要求對網站進行網站設計制作、成都網站制作、建設、維護、更新和改版,實現客戶網站對外宣傳展示的首要目的,并為客戶企業品牌互聯網化提供全面的解決方案。
算術運算符
比較運算符
邏輯運算符
位操作運算符
算術操作符
算術操作符是SQL中最基本的操作運算符,主要有一下幾種運算符:
+(加)、 -(減)、 *(乘)、 /(除)、 %(求余或者模)
比較運算符
一個比較運算符的結果總是1,0或者是NULL。MySQL中的比較運算符有:
=、=、 (!=)、=、=、、IS NULL、IS NOT NULL、LEAST、GREATEST、BETWEEN . . . AND. . . 、ISNULL、IN、NOT IN、LIKE、REGEXP
邏輯運算符
邏輯運算符的求值所得結果均為TRUE、FALSE或NULL。
邏輯運算符有:
NOT 或者 !
AND 或者
OR 或者 ||
XOR(異或)
位運算符
位運算符是用來對二進制字節中的位進行測試、移位或者測試處理。位運算符有:
位或(|)
位與()
位異或(^ )
位左移()
位右移()
位取反(~)
在MySQL中 select 表示查詢,select可以單獨成句,是MySQL的方言
比如查詢系統時間: select now();
now() 表示當前系統時間 MySQL特有的一個方法
在Oracle中系統時間: select sysdate from dual; 是Oracle的方言
dual表時Oracle特有的一張表,主要目的就是為了補充SQL語句中的from**
在Oracle的語法中,select之后必須要有from
MySQL中有DUAL關鍵字,所以SELECT NOW()也可以寫作SELECT NOW() FROM DUAL;
但MySQL中的DUAL不是表 執行SELECT * FROM DUAL;會報錯,而Oracle中DUAL是一張實際存在的表,執行SELECT * FROM DUAL;會查詢一個叫做DUMMY的結果
標準語法:select...from...
語法格式:
開發中建議以查詢特定列的方式進行查詢,前者的執行效率更快
示例1:查詢員工編號,員工姓名,年薪 (sal表示的是月薪)
注意年薪的表頭顯示的是“sal*12”
可以使用as或者空格,為查詢結果的列起別名
或
當數據運算中出現null值時,結果一定是null
MySQL解決問題是用ifnull()函數
Oracle解決問題是用nvl()函數
ifnull(expr1,expr2)
nvl(expr1,expr2)
當expr1的結果是null時,使用expr2的結果
當expr1的結果不是null時,使用expr1的結果
示例2: 查詢員工姓名和員工的月收入(月薪+獎金)
此時原始數據中如果comm中有null值,查詢結果不正確
使用distinct去掉查詢結果中的重復記錄
基礎語法
查詢列1,列2直至列n的數據,并去掉其中重復的組合
select ... from...where 查詢條件
示例3:查詢所有在部門編號是1工作的員工記錄
的查詢結果是一樣的,數據中Tom,tom,TOM,tOm...等都會被查詢出
如果需要嚴格控制大小寫字母敏感,查詢語句需要在列前加 binary
這樣只能查詢出TOM
X AND Y 必須同時滿足條件X和條件Y
示例4: 查詢在1號部門工作,且月薪不低于2500的員工信息
示例5: 查詢在1號部門工作,且月薪不低于2500的保潔信息
X OR Y 滿足條件X或條件Y其一即可
示例6:查詢在1號部門或2號部門工作的員工信息
NOT(X) 不是條件X
主要使用在特殊的比較運算符中
AND語句的優先級高于OR
如果使用括號控制優先級
SQL注入問題:利用了AND和OR優先級破壞系統中的SQL語句邏輯
正常訪問邏輯,用戶輸入admin和123 正確賬號和密碼可以登錄
SQL注入通過輸入正確的賬號,和一個帶有or邏輯的SQL片段將原來邏輯破壞掉,進行非法登錄
輸入的是 賬號:admin 密碼:' OR 1=1 AND lname='admin
這個SQL語句就變成了
lname = 'admin' AND lpass = '' -- X 假 查不出結果
1=1 AND lname='admin' -- Y 真 查出admin的數據
X OR Y -- 真 驗證通過 訪問了admin的賬號
X between A and B 表示X在[A,B]之間
相當于 X = A and X = B
一般情況下: B應該大于等于A
如果B小于A語法也沒錯誤,邏輯上沖突,不會由查詢結果
示例1:查詢月薪在[2000,2500]區間的員工信息
示例2:查詢在20號部門入職日期在1994年的員工信息
用于查詢數據時進行模糊匹配(模糊查詢),只適用于文本查詢
語法規則
-ename中含有字符% 使用\做為轉義字符
將'%'看做一個%字符
MySQL中
Oracle中
相當于or
語法規則
相當于
示例3:查詢在10號部門或20部門工作,且職位是CLERK的員工信息
示例4:查詢員工SMITH和AMY的員工信息
示例5:查詢在'1992-01-15'或'1994-12-22'或'1994-07-05'入職的員工信息
如果in中的數據有null值,null值不會被查詢出
專門針對null值進行篩選
示例6: 查詢所有獎金是null的員工信息
不能使用comm = null查詢,這樣查詢沒有結果
not表示特殊比較運算符邏輯取反
示例7:查詢月薪 不 在[2000,2500]區間的員工信息
示例8:查詢員工名字中 不 包含字母A的員工信息
示例9:查詢 不 在10號或20號部門工作的,職位是CLERK的員工信息
示例10:查詢獎金 不 是null的員工信息
排序是對 查詢結果 進行排序顯示
排序規則
select...from...where... order by...
示例11:查詢所有的員工信息,按照月薪升序排序。
asc表示升序,排序默認就是升序,asc可以省略。
示例12:查詢所有的員工信息,按照月薪降序排序。
desc表示降序
在列1的排序基礎上,進行列2排序,.... 在之前所有排序基礎上進行列n的排序
示例13 : 查詢所有員工信息,按照部門編號升序排序,按照月薪降序排序
先按照deptno進行升序排序,在deptno排序的基礎上,再進行sal的降序排序
示例14:查詢20號部門員工姓名,月薪,獎金,月收入,按照月收入的降序排序
可以使用列別名
按照查詢結果的第3列進行升序排序,在排序基礎上以第2列進行降序排序
實際:deptno升序后,sal降序
編寫順序: select...from...where...order by...
執行順序: from...where...select...order by...
在第六章介紹的所有 WHERE 子句在過濾時,使用的都是單一的條件。為了進行更強的過濾控制,MySQL允許給出多個WHERE子句,并通過 AND 或 OR 操作符的方式組合使用。
AND 操作符可以使用對多列的條件進行累加過濾。
OR操作符可以使用對多列的條件進行累加過濾。
WHERE 子句可包含任意數目的 AND 和 OR 操作符。但是 AND 的優先級比 OR 高,應使用適當的圓括號分組操作符。
注意: 任何時候都不應該過分依賴默認計算次序,使用圓括號可以增加可讀性,消除歧義。
IN 操作符用來指定條件范圍,范圍中每個條件都可以進行匹配。 IN 的合法值由逗號分隔,并全部括在圓括號中。
使用 IN 的優點為:
WHERE子句中的NOT操作符有且只有一個功能,就是否定它之后的任何條件。
注意: MySQL支持使用NOT對IN、BETWEEN和EXISTS子句取反,這與其他大多數DBMS允許使用NOT對各種條件取反有很大區別。
之前介紹的都是針對已知值的過濾。而對進行未知內容的匹配,可以使用通配符創建比較數據的搜索模式來完成。通配符的匹配,需要通過LIKE操作符指示MySQL完成。
% 表示任何字符出現任意次。例如,為了找到所有以 jet 起頭的產品,可使用以下 SELECT 語句
注意:
下劃線( _ )通配符只匹配單個字符而不是多個字符。
通配符使用技巧:
正則表達式是用來匹配文本的特殊串(字符集合),所有種類的程序設計語言、文本編輯器、操作系統等都支持正則表達式。
MySQL中的正則表達式僅是正則表達式的一個子集。
為搜索兩個串之一,使用( | )。
如果想匹配特定的單一字符,可以使用[]將一組指定的內容括起來。
注意:
集合可用來定義要匹配一個或多個字符,此時可以使用 - 來定義一個范圍,例如 [0-9] 表示數字0到9, [a-z] 表示字母a到z。
正則表達式語句由具有特定含義的特殊字符構成。例如 | 或 - 等。如果要表示一些特殊的字母,如含 . 的值,則應該使用 \\\ 為前導。 \\\- 表示查找 - , \\\. 表示查找 . 。
注意:
為方便常見字符集的查找,可以使用預定義的字符集。稱為字符類。如下圖所示:
目前為止使用的所有正則表達式都試圖匹配單詞出現。但有時需要對匹配的數目進行更強的控制,此時可以使用下列正則表達式重復元字符來完成。
注意: 使用正則表達式時,編寫某個特定的表達式幾乎總是有多種方法。
目前為止,所有例子都是匹配一個串中任意位置的文本,為了匹配特定位置的文本,需要使用定位符。
注意:
網站題目:mysql怎么取反查詢 mysql怎么返回
本文URL:http://m.kartarina.com/article38/dogeppp.html
成都網站建設公司_創新互聯,為您提供網站收錄、網頁設計公司、品牌網站建設、小程序開發、面包屑導航、App設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯