/*
查询所有记录
select * from 表名;
*/
SELECT * FROM product;
/*
查询指定列
select 列名,列名... from 表名;
*/
SELECT pname,price FROM product;
/*
别名查询
as 别名
*/
SELECT pname AS '名字',price FROM product;
/*
去重
distinct 列名
*/
SELECT DISTINCT price FROM product;
/*
计算
每件商品价格上涨20元并显示
*/
SELECT pname,price+20 AS 'new price' FROM product;
二、条件查询
/*
条件查询
> < >= <= = <>
between ... and..
in( ,)
and
or
not
select [distinct] 列 from 表 [where 条件]
*/
/*
查询商品名称为'花花公子'的商品信息
*/
SELECT * FROM product WHERE pname = '花花公子';
/*
查询价格为800的商品
*/
SELECT * FROM product WHERE price = 800;
/*
查询价格不是800的商品
*/
SELECT * FROM product WHERE price <> 800;
SELECT * FROM product WHERE NOT (price = 800);
/*
查询价格大于60元的商品信息
*/
SELECT * FROM product WHERE price > 60;
/*
查询价格在200-1000之间的商品
*/
SELECT * FROM product WHERE price >=200 AND price <= 1000;
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;
/*
查询价格是200 或者 800的商品
*/
SELECT * FROM product WHERE price =200 OR price =800;
SELECT * FROM product WHERE price IN(200,800);
/*
查询价格为null的商品
*/
SELECT * FROM product WHERE price IS NULL;
/*
查询价格不为null的商品
*/
SELECT * FROM product WHERE price IS NOT NULL;
SELECT * FROM product WHERE NOT (price IS NULL);
三、模糊查询
/*
模糊查询 like 必须和通配符配合使用
%霸:前面是什么都行 最后必须是'霸'字
霸%:后面是什么都行 前面必须是'霸'字
%霸%:只要有'霸'字就可以
*/
SELECT * FROM product WHERE pname LIKE '%霸%';
/*
查询商品名称是四个字的商品信息
_任意字符都可以
*/
SELECT * FROM product WHERE pname LIKE '____';
/*
查询以'香'开头的所有商品信息
*/
SELECT * FROM product WHERE pname LIKE '香%';
/*
查询第二个字为'想'的所有商品信息
*/
SELECT * FROM product WHERE pname LIKE '_想%';
四、排序查询
/*
排序
order by 列名
ASC: 升序 可以省略 不写默认是升序
DESC:降序
排序一般都是查询后再排序 所有oder by 放在语句的最后
*/
/*
查询所有记录 对价格进行升序排列
*/
SELECT * FROM product ORDER BY price ;
/*
查询价格 对价格进行降序排列 并去重
*/
SELECT DISTINCT price FROM product ORDER BY price DESC;
/*
查询前10条记录 对价格进行排序
*/
SELECT * FROM product WHERE pid <= 10 ORDER BY price;
五、聚合函数
/*
统计记录数
count(列名)
*/
SELECT COUNT(*) FROM product;
/*
求和
sum(列名)
求所有价格的总和
*/
SELECT SUM(price) FROM product;
SELECT SUM(pname) FROM product;
/*
求平均值
avg(列名)
求价格的平均值
*/
SELECT AVG(price) FROM product;
/*
求 pid 为 1 2 3 7 商品的价格平均值
如果商品的价格为null 则忽略
*/
SELECT AVG(price) FROM product WHERE pid IN (1,2,3,7);
/*
求价格 最大值 和最小值
max(列名) min(列名)
*/
SELECT MAX(price),MIN(price) FROM product;
六、分组查询
/*
分组查询
相同商品名称 价格求和
给商品名称相同的分为一组
分组的关键字 group by 列名
分组必须和聚合函数在一起使用
分组的列名最好出现在select的语句后
*/
SELECT pname,SUM(price) FROM product GROUP BY pname;
/*
相同商品名称 价格求和 只显示价格和大于2000的商品
where:是在查询时进行条件过滤 已经查完了就不能在使用where了 不可以加分组函数
having:在分组查询后在进行条件过滤 可以加分组函数
*/
SELECT pname,SUM(price) AS p FROM product GROUP BY pname
HAVING p> 2000;