MYSQL中的主要查詢方法


#簡單查詢

#查詢表中的所有數據
SELECT * FROM test;

#查詢表中的指定列的數據
SELECT cid,cname FROM test;

#過濾重復的數據
SELECT DISTINCT category FROM test;

# 給表起別名(只是顯示名改變實際名稱未改變)
SELECT * FROM test AS te;
SELECT * FROM test te;

#給表中的字段起別名;若有想加入的數據有空格需引號引起來
SELECT cname AS 商品名稱,cprice AS 商品價格 FROM test;
SELECT cname 商品名稱1,cprice '商品 價格1' FROM test;

#查詢 語句中 可以直接進行數據運算
SELECT (1+1);

#查詢商品名稱和商品的價格漲價 商品價格+1000
SELECT * FROM test;
SELECT cname,cprice+1000 AS cprice FROM test;
SELECT cid+1000 FROM test;


#分頁查詢
# 只要查詢前6條
SELECT * FROM test LIMIT 6;
# 分頁查詢 每頁顯示五條 查詢第一頁
SELECT * FROM test LIMIT 0,5;
# 分頁查詢 每頁顯示五條 查詢第二頁
SELECT * FROM test LIMIT 5,5;
# 分頁查詢 每頁顯示五條 查詢第二頁
SELECT * FROM test LIMIT 10,5;

 

# 模糊查詢

# 查詢商品名稱以‘海瀾’開頭的商品信息 %表示多個字符
SELECT * FROM test WHERE cname LIKE '海瀾%';

# 查詢商品名稱以‘海瀾’開頭且后方有兩個字符的商品信息
SELECT * FROM test WHERE cname LIKE '海瀾__';

# 查詢商品名稱有三個字符的商品信息 _表示單個字符
SELECT * FROM test WHERE cname LIKE '___';

#若需查詢帶有%字符的信息,可以加轉譯字符\或者自定義轉譯字符
SELECT * FROM test WHERE cname LIKE '%:%%' ESCAPE ':';


#條件查詢
#在查詢語法中可以在后方加入 邏輯約束條件; 確定查詢范圍

#查詢商品名稱為海瀾之家的商品的所有的信息
SELECT * FROM test WHERE cname='海瀾之家';
#查詢價格為5000的商品
SELECT * FROM test WHERE cprice=5000;
#查詢價格不為5000的商品
SELECT * FROM test WHERE cprice!=5000;
SELECT * FROM test WHERE cprice<>5000;
#查詢價格大於500的商品
SELECT * FROM test WHERE cprice>500;
#查詢價格10-1000之間的商品
SELECT * FROM test WHERE cprice>=10 && cprice<=1000;
SELECT * FROM test WHERE cprice BETWEEN 10 AND 100;
#查詢價格是10或者是46元的商品
SELECT * FROM test WHERE cprice IN(19,46);
SELECT * FROM test WHERE cprice=19 OR cprice=5000;
#按分類的不同查詢
SELECT * FROM test WHERE category IS NULL;# 是空
SELECT * FROM test WHERE category IS NOT NULL;# 是不空
SELECT * FROM test WHERE NOT(category IS NULL);#與上一條效果相同

#查詢某范圍內的數可以用in
SELECT * FROM test WHERE cid IN(1,2,3,4);

#查詢兩種不同類型的限制可以用or,若需要同時滿足兩種用and即可
SELECT * FROM test WHERE cid IN(1,2,3,4) OR cname LIKE ('___');


#排序查詢 ASC 升序 DESC 降序

#升序查詢
SELECT * FROM product ORDER BY price ASC;
#默認排序查詢,默認升序
SELECT * FROM product ORDER BY price;
#降序查詢
SELECT * FROM product ORDER BY price DESC;

#顯示價格 去掉重復的價格 並依照價格降序
SELECT DISTINCT price FROM product ORDER BY price DESC;

#對文本類型的分類也可以進行降序排序,不過規則不同
SELECT * FROM product ORDER BY category_id DESC;

 


#聚合(函數)查詢

#count 統計指定列不為null 行數,不建議用COUNT(*),如果有需要用COUNT(1)效率高;
SELECT COUNT(cname) FROM test;

#sum 指定列的數值和 如果指定的列不是數值類型 結果為0
SELECT SUM(cprice) FROM test;

#max指定列的最大值 如果指定的列是字符串類型 使用字符串排序運算
SELECT MAX(cprice) FROM test;

#min指定列的最小值 如果指定的列是字符串類型 使用字符串排序運算
SELECT MIN(cprice) FROM test;

#avg 平均值 如果指定的列不是數值類型 那么計算結果為零
SELECT AVG(cprice) FROM test;

#查詢分別滿足條件的值
#select count(字段|*),sum(字段),max(字段),min(字段),avg(字段)from 表名;
SELECT COUNT(cprice),SUM(cprice),MAX(cprice),MIN(cprice),AVG(cprice) FROM test;

 

#分類查詢

#按商品的類別進行分組 統計各個分類商品的個數
SELECT category_id,COUNT(*) FROM product GROUP BY category_id;

#按商品的類別進行分組 統計各個分類商品的平均價格
SELECT category_id,AVG(price) FROM product GROUP BY category_id;


#where 用於分組前進行條件過濾
#having 用於分組后 對分完組的數據進行過濾

# 先按商品的類別分組 統計各個分組商品的個數 只查詢每組商品大於200的商品
SELECT category_id,COUNT(*) FROM product WHERE price>200 GROUP BY category_id;

# 先按商品的類別分組 統計各個分組商品的個數 只顯示統計個數等於三的信息
SELECT category_id,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*)=3;

 

#連接查詢

#內連接,查詢的數據在多個有關聯的表中
SELECT cgtable.cid,test.cname,test.category
FROM test INNER JOIN cgtable#確定連接方式,inner為內連接,outer為外連接
ON test.cid=cgtable.cid;#確定連接條件

#外連接,又分為(左)右連接查詢方式與內相同但結果記錄不同
SELECT cgtable.cid,test.cname,test.category
FROM test LEFT JOIN cgtable
ON test.cid=cgtable.cid;

#在內連接中不滿足條件的數據不顯示,外連接則可以顯示
#不過依據左右連接的不同,保留的數據不同,沒有的數據顯示為null

#自連接,可視為對兩個相同的表進行連接查詢
SELECT t.cid,t.cname,s.category
FROM test AS t,test AS s
WHERE t.cid=s.cid;

#等值連接,效果與內連接相同
SELECT cgtable.cid,test.cname,test.category
FROM test,cgtable
WHERE test.cid=cgtable.cid;

#非等值連接,返回所有匹配記錄,所得行數=表a的行數*表b的行數
SELECT cgtable.cid,test.cname,test.category
FROM test,cgtable;


#子查詢,即在WHERE內部嵌套另一個查詢條件
SELECT cgtable.cid,test.cname,test.category
FROM test,cgtable
WHERE test.cid=(SELECT cid FROM test WHERE cid=4);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM