#簡單查詢
#查詢表中的所有數據
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);