查詢的格式: select [distinct] *(所有)| 欄位名... from 表名 [where 條件過濾]查詢指定欄位信息pname priceselect pname,price from products; 查詢表中所有欄位select * from products; 去除金額重覆 ...
查詢的格式:
select [distinct] *(所有)| 欄位名... from 表名 [where 條件過濾]
查詢指定欄位信息pname price
select pname,price from products;
查詢表中所有欄位
select * from products;
去除金額重覆的記錄
select distinct price from products;
別名查詢 使用的as關鍵字 as可以省略
select pname as 名稱 ,price as 價格 from products;
select pname 名稱,price 價格 from products;
我們在sql語句中的操作中,可以直接對列進行運算
select (1+1);
select (5/2);
查詢出所有的商品價格,把價格增加20元
select pname ,price+20 from products;
條件查詢語句
格式:
select [distinct] *(所有)|欄位名,....from 表名 [where 條件過濾]
比較運算符
> < >= = <= <>(!=)
is null是否為null
邏輯運算符
與 and
或 or
非 not
模糊查詢
like
%:任意多個字元
_:單個字元
查詢商品名稱為"花花公子"的商品信息
select * from products where pname = '花花公子';
select * from products where pname in ('花花公子');
查詢價格為800的商品
select * from products where price = 800;
查詢價格不是800的所有商品
select * form products where price !=800;
select * from products where price <>800;
seelct * from products where price not in (800);
select * from products where not price in (800);
查詢商品價格大於60的所有商品信息
select * from products where price >60;
查詢商品價格在200到1000之間的所有商品
select * from products where price >=200 and <=1000;
使用between and 進行改造
小的數值必須寫在前面 可以對日期進行查詢
select * from products where price between 200 and 1000;
查詢商品價格是200或800的所有商品
SELECT * FROM products WHERE price=200 OR price=800;
使用in(多個欄位)改造
SELECT * FROM products WHERE price IN(200,800);
查詢名稱以'香'開頭的所有商品
SELECT * FROM products WHERE pname='香'; -- 沒有結果
SELECT * FROM products WHERE pname LIKE '香%'
查詢名稱以'霸'結尾的所有商品
SELECT * FROM products WHERE pname LIKE '%霸'
查詢名稱含有'霸'字的所有商品
SELECT * FROM products WHERE pname LIKE '%霸%'
查詢出名稱中是五個字的所有商品
SELECT * FROM products WHERE pname LIKE '_____';
查詢名稱第二個字為'想'的所有商品
SELECT * FROM products WHERE pname LIKE '_想%';
查詢商品名稱是null的值
SELECT * FROM products WHERE pname IS NULL;
查詢商品名稱不是null的值
SELECT * FROM products WHERE pname IS NOT NULL; -- 是不空
SELECT * FROM products WHERE NOT (pname IS NULL);
排序查詢
格式:
select 欄位|* from 表名 [where 條件過濾] [order by 欄位[ASC][DESC]]
升序:ASC 預設為升序
降序:DESC
註意:
排序order by 要寫在select語句末尾
1.使用價格排序(升序)
SELECT * FROM products ORDER BY price ASC;
SELECT * FROM products ORDER BY price;
2.使用價格排序(降序)
SELECT * FROM products ORDER BY price DESC;
3.顯示商品的價格(去重覆),併排序(降序)
SELECT DISTINCT price FROM products ORDER BY price DESC;
4.顯示商品的價格大於1000的商品所有信息,併排序(降序)
SELECT * FROM products WHERE price >1000 ORDER BY price DESC;
5.根據商品名稱排序 預設使用編碼表排序
SELECT * FROM products ORDER BY pname DESC;
聚合函數:
對列進行操作,返回的結果是一個單一的值,忽略空值
count:統計指定列不為NULL的記錄行數;
sum:計算指定列的數值和,如果指定列類型不是數值類型,那麼計算結果為0;
max:計算指定列的最大值,如果指定列是字元串類型,那麼使用字元串排序運算;
min:計算指定列的最小值,如果指定列是字元串類型,那麼使用字元串排序運算;
avg:計算指定列的平均值,如果指定列類型不是數值類型,那麼計算結果為0;
格式:
select 聚合函數(欄位) from 表名
1 查詢商品的總條數
SELECT COUNT(*) FROM products;-- 13
SELECT COUNT(pname) FROM products;-- 忽略空值 12
SELECT COUNT(price) FROM products;-- 13
2 查詢價格大於200商品的總條數
SELECT COUNT(*) FROM products WHERE price >200;
3. 對商品表查詢,對所有的金額求和計算
SELECT SUM(price) FROM products;
對非數值欄位求和結果為0
SELECT SUM(pname) FROM products;
4.對商品表查詢,對所有的金額計算平均值
SELECT AVG(price) FROM products;
5. 統計出商品表中價錢的最大與最小值
SELECT MAX(price),MIN(price) FROM products;
SELECT MAX(price)最大值,MIN(price)最小值 FROM products;
SELECT * FROM products;
分組查詢語句:
select 被分組的欄位 from 表名 group by 欄位 [having 欄位]
註意:
被分組的欄位,一定要寫在select後面
需求:
根據商品名稱相同,對數據進行分組,對每組數據進行求和
SELECT pname,SUM(price) FROM products GROUP BY pname;
-- 需求:對分組求和的結果進行過濾,只顯示求和結果大於1000的商品
/*
where:只能在查詢的過程中進行過濾,不能對結果過濾
having:對分組數據的查詢結果,再次進行條件過濾
*/
-- 先查詢出價格大於1000的商品,對大於1000的商品進行分組求和
SELECT pname,SUM(price) s FROM products WHERE price > 1000 GROUP BY pname;
SELECT pname,SUM(price) s FROM products GROUP BY pname
HAVING s>1000;
SELECT pname,SUM(price) s FROM products GROUP BY pname
HAVING SUM(price)>1000;
分頁查詢
可以使用關鍵字 limit m,n
m:可以變化頁碼1,2,3,4
n:固定不變的分頁數(每頁5條)
資料庫的數據是從0開始
-- 只要前5條數據
SELECT * FROM products LIMIT 5;
-- 要0開始到5結束的數據(第一頁的數據)
-- 從0開始要5個數據
SELECT * FROM products LIMIT 0,5;
-- 要6開始到10結束的數據(第一頁的數據)
-- 從6開始要5個數據
SELECT * FROM products LIMIT 5,5;
-- 要11開始到15結束的數據(第一頁的數據)
-- 從10開始要5個數據
SELECT * FROM products LIMIT 10,5;