十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
1. SELECT:查詢內(nèi)容,語法:SELECT 列名稱 FROM 表名稱
專業(yè)領(lǐng)域包括成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、商城網(wǎng)站定制開發(fā)、微信營銷、系統(tǒng)平臺開發(fā), 與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,成都創(chuàng)新互聯(lián)公司的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。
2. SELECT DISTINCT 查詢非重復(fù)內(nèi)容,語法:SELECT DISTINCT 列名稱 FROM 表名稱
3. WHERE 查詢條件, 子句中可以指定任何條件,條件與條件之間用and 和 or 隔開
語法:SELECT 列名稱 FROM 表名稱 WHERE條件1 AND 條件2
4. AND 和 OR 運(yùn)算符,將 WHERE 中的多個條件結(jié)合起來。操作符包括:=(等于)、或=?。ú坏扔冢?、(大于)、(小于)、=(大于等于)、=(小于等于)
空值條件:IS NULL;非空值IS NOT NULL;查詢多個值IN()
5. ORDER BY 排序,默認(rèn)為升序,字段后加DESC為降序
6. GROUP BY 分組 ,對結(jié)果進(jìn)行分組
7. LEFT JOIN 左連接,兩張表合并保留左表的全部內(nèi)容,只要掌握左連接
語法:SELECT列名稱 FROM 表1 LEFT JOIN 表2 ON 表1.某列 = 表2.某列
了解:RIGHT JOIN(右連接),INNER JOIN(內(nèi)連接)、FULL JOIN(全連接)
8. UNION all上下合并,兩張表上下合并(了解)
9. LIKE 模糊查詢(了解)
語法: SELECT 列名稱 FROM 表名稱 WHERE 某列 like “%字符%”
10.SUM 求和
語法:SELECT SUM(列名稱) FROM 表名稱
11. COUNT 計數(shù)
語法:SELECT COUNT(列名稱) FROM 表名稱
12. IF 判斷 語法:同excel
13. MIN,MAX等
14. round 四舍五入
15. concat 字符串連接
16. UPDATE:修改內(nèi)容,語法:update 表名 set 修改字段= 新內(nèi)容 where 修改條件
17. substring 字符串截取
18. cast 定義數(shù)值類型(了解)
19. CASE … WHEN … THEN …. END 滿足某一個條件時執(zhí)行/替換,可用于條件計數(shù)
20. DATEDIFF 兩個日期之間間隔的天數(shù)
21. SUBDATE 日期往前數(shù) ,語法:SUBDATE(date,INTERVAL expr unit)
例子:SUBDATE(“2018-10-1”,INTERVAL 1 day) 代表10月1日往前數(shù)1天,結(jié)果是9月30;SUBDATE(“2018-10-1”,INTERVAL 1 month) 代表10月1日往前數(shù)1月,結(jié)果是2018-9-1
null表示的含義是未知,即不知道有沒有。 和‘’空字符串不等,因為空字符串相當(dāng)于沒有值。 null代表的是不知道有沒有值。 所以在數(shù)據(jù)查詢中如果字段默認(rèn)值是null,想查詢出不等于某個條件的一定要加上——字段名 is null 或者字段名 is not null來...
MySQL數(shù)據(jù)庫是一個基于結(jié)構(gòu)化數(shù)據(jù)的開源數(shù)據(jù)庫 SQL語句是MySQL數(shù)據(jù)庫中核心語言 不過在MySQL數(shù)據(jù)庫中執(zhí)行SQL語句 需要小心兩個陷阱
陷阱一 空值不一定為空
空值是一個比較特殊的字段 在MySQL數(shù)據(jù)庫中 在不同的情形下 空值往往代表不同的含義 這是MySQL數(shù)據(jù)庫的一種特性 如在普通的字段中(字符型的數(shù)據(jù)) 空值就是表示空值 但是如果將一個空值的數(shù)據(jù)插入到TimesTamp類型的字段中 空值就不一定為空 此時為出現(xiàn)什么情況呢(如下圖)?
我先創(chuàng)建了一個表 在這個表中有兩個字段 User_id(其數(shù)據(jù)類型是int) Date(其數(shù)據(jù)類型是TimesTamp) 現(xiàn)在往這個表中插入一條記錄 其中往Date字段中插入的是一個NULL空值 可是當(dāng)我們查詢時 其結(jié)果顯示的卻是插入記錄的當(dāng)前時間 這是怎么一回事呢?其實這就是在MySQL數(shù)據(jù)庫中執(zhí)行SQL語句時經(jīng)常會遇到的一個陷阱 空值不一定為空 在操作時 明明插入的是一個空值的數(shù)據(jù) 但是最后查詢得到的卻不是一個空值
在MySQL數(shù)據(jù)庫中 NULL對于一些特殊類型的列來說 其代表了一種特殊的含義 而不僅僅是一個空值 對于這些特殊類型的列 各位讀者主要是要記住兩個 一個就是筆者上面舉的TimesTamp數(shù)據(jù)類型 如果往這個數(shù)據(jù)類型的列中插入Null值 則其代表的就是系統(tǒng)的當(dāng)前時間 另外一個是具有auto_increment屬性的列 如果往這屬性的列中插入Null值的話 則系統(tǒng)會插入一個正整數(shù)序列 而如果在其他數(shù)據(jù)類型中 如字符型數(shù)據(jù)的列中插入Null的數(shù)據(jù) 則其插入的就是一個空值
陷阱二 空值不一定等于空字符
在MySQL中 空值(Null)與空字符( )相同嗎?答案是否定的 請大家先來看下圖的演示
在同一個數(shù)據(jù)庫表中 同時插入一個Null值的數(shù)據(jù)和一個 空字符的數(shù)據(jù) 然后利用Select語句進(jìn)行查詢 最后顯示的結(jié)果如上圖所示 顯然其顯示的結(jié)果是不相同的 從這個結(jié)果中就可以看出 空值不等于空字符 這就是在MySQL中執(zhí)行SQL語句遇到的第二個陷阱 在實際工作中 空值數(shù)據(jù)與空字符往往表示不同的含義 數(shù)據(jù)庫管理員可以根據(jù)實際的需要來進(jìn)行選擇 如對于電話號碼等字段 可以默認(rèn)設(shè)置為空值(表示根本不知道對方的電話號碼)或者設(shè)置為空字符(表示后來取消了這個號碼)等等 由于他們在數(shù)據(jù)庫中會有不同的表現(xiàn)形式 所以數(shù)據(jù)庫管理員需要區(qū)別對待 筆者更加喜歡使用空值 而不是空字符 這主要是因為針對空值這個數(shù)據(jù)類型有幾個比較特殊的運(yùn)算字符 如果某個字段是空字符 數(shù)據(jù)庫中是利用字段名稱來代替 相反 如果插入的是空值 則直接顯示的是NULL 這跟其他數(shù)據(jù)庫的顯示方式也是不同的
一是IS NULL 和IS NOT NULL關(guān)鍵字 如果要判斷某個字段是否含用空值的數(shù)據(jù) 需要使用特殊的關(guān)鍵字 其中前者表示這個字段為空 后者表示這個字段為非空 在Select語句的查詢條件中這兩個關(guān)鍵字非常的有用 如需要查詢所有電話號碼為空的用戶(需要他們補(bǔ)充電話號碼信息) 就可以在查詢條件中加入is not null關(guān)鍵字
lishixinzhi/Article/program/MySQL/201311/29455
mybatis返回的null類型數(shù)據(jù)消失,導(dǎo)致前端展示出錯。
如果查詢出的結(jié)果是空值,應(yīng)當(dāng)轉(zhuǎn)換成空字符串。當(dāng)然在前端也能進(jìn)行判斷,但要求后臺實現(xiàn)這個功能。
解決方案:
使用如下方法查詢:
SELECT?IFNULL(sex,'')?AS sex FROM user?--如果查詢到這個sex為null值,那么就賦值成空字符串不過,如果查詢語句本身為null,那么返回前端的還是null,這個就要在代碼里判斷了。
比如:
SELECT IFNULL(sex,'') AS sex FROM user WHERE id=100
這條語句本身的返回結(jié)果是null,它也就不會執(zhí)行IFNULL函數(shù)了,最后的返回結(jié)果當(dāng)然也是null。所以方法是在代碼中增加判斷:
if(ansList == null || ansList.size() == 0){...}
擴(kuò)展資料
mySql中IFNULL的使用說明:
IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。IFNULL()返回一個數(shù)字或字符串值
具體用法如:現(xiàn)有學(xué)生表(tbl_student)和分?jǐn)?shù)表(score),查詢學(xué)生表的所有字段和學(xué)生相對于的英語成績(english_score)sql如下:
select stu.*,IFNULL(score.english_score,0)?from tbl_student stu,tbl_score score where 1=1 and stu.stu_id=score.stu_id
以上sql中,如果score表中的english_score有值,則IFNULL(score.english_score,0)就顯示english_score,否則,顯示0。
同意樓上的判斷,可能你的數(shù)據(jù) 的值就是 'null'
出現(xiàn)這種情況的可能是,數(shù)據(jù)是從哪兒導(dǎo)入的。畢竟沒有誰 這么無聊, 把'null' 寫入name列。
空值是一個比較特殊的字段。在MySQL數(shù)據(jù)庫中,在不同的情形下,空值往往代表不同的含義。這是MySQL數(shù)據(jù)庫的一種特性。如在普通的字段中(字符型的數(shù)據(jù)),空值就是表示空值。但是如果將一個空值的數(shù)據(jù)插入到TimesTamp類型的字段中,空值就不一定為空。此時為出現(xiàn)什么情況呢
我先創(chuàng)建了一個表。在這個表中有兩個字段:User_id(其數(shù)據(jù)類型是int)、Date(其數(shù)據(jù)類型是TimesTamp)?,F(xiàn)在往這個表中插入一條記錄,其中往Date字段中插入的是一個NULL空值??墒钱?dāng)我們查詢時,其結(jié)果顯示的卻是插入記錄的當(dāng)前時間。這是怎么一回事呢?其實這就是在MySQL數(shù)據(jù)庫中執(zhí)行SQL語句時經(jīng)常會遇到的一個陷阱:空值不一定為空。在操作時,明明插入的是一個空值的數(shù)據(jù),但是最后查詢得到的卻不是一個空值。
在MySQL數(shù)據(jù)庫中,NULL對于一些特殊類型的列來說,其代表了一種特殊的含義,而不僅僅是一個空值。對于這些特殊類型的列,各位讀者主要是要記住兩個。一個就是筆者上面舉的TimesTamp數(shù)據(jù)類型。如果往這個數(shù)據(jù)類型的列中插入Null值,則其代表的就是系統(tǒng)的當(dāng)前時間。另外一個是具有auto_increment屬性的列。如果往這屬性的列中插入Null值的話,則系統(tǒng)會插入一個正整數(shù)序列。而如果在其他數(shù)據(jù)類型中,如字符型數(shù)據(jù)的列中插入Null的數(shù)據(jù),則其插入的就是一個空值。