学习笔记-MySQL(单表查询)

一、基本查询

/*
	查询所有记录
	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;




猜你喜欢

转载自blog.csdn.net/yitian_66/article/details/80227219