檢索數(shù)據(jù):檢索單個(gè)列:SELECT pname FROM product 檢索多個(gè)列:SELECT pname,market_price,is_hot FROM product 檢索所有列:SELECT * FROM product 過(guò)濾檢索結(jié)果中的重復(fù)數(shù)據(jù):SELECT DISTINCT market_price FROM productDISTINCT關(guān)鍵字:1、返回不同的值,使用時(shí)放在列名的前面2、多查詢一個(gè)及以上列時(shí),除非你查詢的所有列的數(shù)據(jù)都不同,否則所有行都將被檢索出來(lái) 限制檢索結(jié)果:SELECT pname FROM product LIMIT 5,5limit5,5指示mysql返回從行5開始的5行記錄 排序檢索數(shù)據(jù):排序數(shù)據(jù)SELECT pname FROM product ORDER BY pname 按多個(gè)列排序數(shù)據(jù)SELECT pid,market_price,pname FROM product ORDER BY market_price,pname按多個(gè)列排序時(shí),排序列之間用,隔開,并且按列的順序來(lái)排序數(shù)據(jù),先排價(jià)格,后排名稱 指定排序方向降序排序(按照價(jià)格降序排序)SELECT pid,market_price,pname FROM product ORDER BY market_price DESC 升序排序(mysql查詢時(shí)默認(rèn)就是升序排序)SELECT pid,market_price,pname FROM product ORDER BY market_price ASC 找出價(jià)格最貴的商品(使用order BY 和limit關(guān)鍵字)SELECT market_price FROM product ORDER BY market_price DESC LIMIT 1 過(guò)濾數(shù)據(jù):使用WHERE子句 價(jià)格等于19800的商品SELECT pname,market_price FROM product WHERE market_price=19800 價(jià)格小于于19800的商品SELECT pname,market_price FROM product WHERE market_price<19800 價(jià)格大于800的商品SELECT pname,market_price FROM product WHERE market_price>800 價(jià)格在800到10000之間SELECT pname,market_price FROM product WHERE market_price BETWEEN 800 AND 10000 where中的操作符有以下幾個(gè)= 等于<> 不等于!= 不等于< 小于<= 小于等于> 大于>= 大于等于BETWEEN 在指定的兩個(gè)值之間 數(shù)據(jù)過(guò)濾:組合where語(yǔ)句 and操作符(同時(shí)符合where后面的條件)SELECT pname,market_price FROM product WHERE market_price>1000 AND is_hot=0 or操作符(只需要符合where后面的一個(gè)條件的結(jié)果都會(huì)顯示出來(lái))SELECT pname,market_price FROM product WHERE market_price>1000 OR is_hot=0 IN操作符(用來(lái)指定條件范圍)SELECT pname,market_price FROM product WHERE market_price IN(238,19800,1120) ORDER BY pname NOT操作符(否定它之后所跟的條件)SELECT pname,market_price FROM product WHERE market_price NOT IN(238,19800,1120) ORDER BY pname 用通配符進(jìn)行過(guò)濾like操作符(通配符 模糊搜索) %通配符(找出product表中所有商品名以韓版開頭的商品)SELECT pname FROM product WHERE pname LIKE '韓版%' 找出product表中商品名稱含有“女”的商品,不管開頭結(jié)尾是什么內(nèi)容SELECT pname FROM product WHERE pname LIKE '%女%' 下劃線_通配符(用途和%一樣,不過(guò)_只匹配單個(gè)字符) SELECT pname,market_price FROM product WHERE market_price LIKE '_99' 正則表達(dá)式搜索基本字符串匹配 SELECT pname FROM product WHERE pname REGEXP '韓版' ORDER BY pname使用正則表達(dá)式需要用REGEXP關(guān)鍵字,并在REGEXP后面跟上正則表達(dá)式內(nèi)容 SELECT pname FROM product WHERE pname REGEXP '.版' ORDER BY pname.是正則表達(dá)式語(yǔ)言中一個(gè)特殊的字符。它表示匹配任意一個(gè)字符 Mysql中的正則表達(dá)式不區(qū)分大小寫,如果要區(qū)分大小寫可以使用BINARYSELECT pname FROM product WHERE pname REGEXP BINARY 'Abc' ORDER BY pname OR匹配SELECT pname FROM product WHERE pname REGEXP 'a|b' 幾種常見的正則表達(dá)式[0-9] 匹配0-9之間的數(shù)字[123] Ton 匹配1 Ton或者2 Ton或者3 Ton\\. 匹配特殊字符.[:alnum:] 任意字母和數(shù)字(同[a-zA-Z0-9])[:alpha:] 任意字符(同[a-zA-Z])[:blank:] 空格和制表(同[\\t])[:cntrl:] ASCII控制字符(ASCII 0到31和127)[:digit:] 任意數(shù)字(同[0-9])[:graph:] 與[:print:]相同,但不包括空格[:LOWER:] 任意小寫字母(同[a-z])[:print:] 任意可打印字符[:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符[:SPACE:] 包括空格在內(nèi)的任意空白字符(同[\\f\\n\\r\\t\\v])[:UPPER:] 任意大寫字母(同[A-Z])[:xdigit:] 任意十六進(jìn)制數(shù)字(同[a-fA-F0-9]) 匹配多個(gè)實(shí)例* 0個(gè)或多個(gè)匹配+ 1個(gè)或多個(gè)匹配(等于{1,})? 0個(gè)或1個(gè)匹配(等于{0,1}){n} 指定數(shù)目的匹配{n,} 不少于指定數(shù)目的匹配{n,m} 匹配數(shù)目的范圍(m不超過(guò)255) 定位符^ 文本的開始$ 文本的結(jié)尾[[:<:]] 詞的開始[[:>:]] 詞的結(jié)尾 創(chuàng)建計(jì)算字段連接字段(將商品名稱和商品價(jià)格連接起來(lái))SELECT CONCAT(pname,'(',market_price,')') FROM product ORDER BY pnameCONCAT()需要一個(gè)或多個(gè)指定的串,各個(gè)串之間用逗號(hào)分隔。 AS 給字段賦予別名SELECT CONCAT(pname,'(',market_price,')') AS nameAndPrice FROM product ORDER BY pname 執(zhí)行算術(shù)運(yùn)算SELECT pname,market_price,shop_price,market_price+shop_price AS sumprice FROM product 使用數(shù)據(jù)處理函數(shù)文本處理函數(shù)LEFT() 返回串左邊的字符LENGTH() 返回串的長(zhǎng)度LOCATE() 找出串的一個(gè)子串LOWER() 將串轉(zhuǎn)換為小寫LTRIM() 去掉串左邊的空格RIGHT() 返回串右邊的字符RTRIM() 去掉串右邊的空格SOUNDEX() 返回串的SOUNDEX值SUBSTRING() 返回子串的字符UPPER() 將串轉(zhuǎn)換為大寫 日期和時(shí)間處理函數(shù)ADDDATE() 增加一個(gè)日期(天、周等)ADDTIME() 增加一個(gè)時(shí)間(時(shí)、分等)CURDATE() 返回當(dāng)前日期CURTIME() 返回當(dāng)前時(shí)間DATE() 返回日期時(shí)間的日期部分DATEDIFF() 計(jì)算兩個(gè)日期之差DATE_ADD() 高度靈活的日期運(yùn)算函數(shù)DATE_FORMAT() 返回一個(gè)格式化的日期或時(shí)間串DAY() 返回一個(gè)日期的天數(shù)部分DAYOFWEEK() 對(duì)于一個(gè)日期,返回對(duì)應(yīng)的星期幾HOUR() 返回一個(gè)時(shí)間的小時(shí)部分MINUTE() 返回一個(gè)時(shí)間的分鐘部分MONTH() 返回一個(gè)日期的月份部分NOW() 返回當(dāng)前日期和時(shí)間SECOND() 返回一個(gè)時(shí)間的秒部分TIME() 返回一個(gè)日期時(shí)間的時(shí)間部分YEAR() 返回一個(gè)日期的年份部分 數(shù)值處理函數(shù)ABS() 返回一個(gè)數(shù)的絕對(duì)值COS() 返回一個(gè)角度的余弦EXP() 返回一個(gè)數(shù)的指數(shù)值MOD() 返回除操作的余數(shù)PI() 返回圓周率RAND() 返回一個(gè)隨機(jī)數(shù)SIN() 返回一個(gè)角度的正弦SQRT() 返回一個(gè)數(shù)的平方根TAN() 返回一個(gè)角度的正切 匯總數(shù)據(jù)聚集函數(shù)AVG() 返回某列的平均值COUNT() 返回某列的行數(shù)MAX() 返回某列的最大值MIN() 返回某列的最小值SUM() 返回某列值之和 SELECT AVG(market_price) FROM product SELECT MAX(market_price) FROM product SELECT SUM(market_price) FROM product 分組數(shù)據(jù)分組函數(shù)GROUP BY 按照名稱分組,查詢出表中相同名稱的商品各有多少件SELECT pname,COUNT(*) FROM product GROUP BY pname HAVING 過(guò)濾分組SELECT pname,COUNT(*) FROM product GROUP BY pname HAVING COUNT(*)>2 HAVING和WHERE的差別 這里有另一種理解方法,WHERE在數(shù)據(jù)分組前進(jìn)行過(guò)濾,HAVING在數(shù)據(jù)分組后進(jìn)行過(guò)濾。這是一個(gè)重要的區(qū)別,WHERE排除的行不包括在分組中。這可能會(huì)改變計(jì)算值,從而影響HAVING子句中基于這些值過(guò)濾掉的分組。 SELECT語(yǔ)句的執(zhí)行順序 SELECT 要返回的列或表達(dá)式 是FROM 從中檢索數(shù)據(jù)的表 僅在從表選擇數(shù)據(jù)時(shí)使用WHERE 行級(jí)過(guò)濾 否GROUP BY 分組說(shuō)明 僅在按組計(jì)算聚集時(shí)使用HAVING 組級(jí)過(guò)濾 否ORDER BY 輸出排序順序 否LIMIT 要檢索的行數(shù) 否 |
|
來(lái)自: 網(wǎng)摘文苑 > 《數(shù)據(jù)庫(kù)》