(06)MySQL:DQL数据查询语言

(06)MySQL:DQL数据查询语言

语法:select [distinct]  * | 列名,列名 fromwhere 条件;

-- 简单查询
	select * from 表名;  --查全表
	select 字段1,字段2,…… from 表名;  --按字段查找
	-- 别名查询.使用的关键字是as(as可以省略的)
	select 表别名.字段1,表别名.字段2,…… from 表名 表别名;  --表别名
	select 字段1 别名,字段2 别名,…… from 表名;  --列别名(1.更清楚的标记这一列是什么 2.简化列名)
	-- 去掉重复值
	select distinct 字段 from 表名;
	-- 查询结果是表达式(运算查询)
	select 名称,价格 旧,(价格+10)from 表名;
	
-- 条件查询
	-- 查询指定字段 = 指定值的所有信息
	SELECT * FROM 表名 WHERE 字段名 =;
	-- 查询指定字段 != 指定值的所有信息
	SELECT * FROM 表名 WHERE 字段名 !=;
	-- 查询指定字段 > 指定值的所有信息
	SELECT * FROM 表名 WHERE 字段名 >;
	-- 查询指定字段 在指定范围内 的所有信息
	SELECT * FROM product WHERE price >= 2000 AND price <=10000;  --标准写法
	SELECT * FROM product WHERE price BETWEEN 2000 AND 10000;  --简易写法 效果一样
	-- 查询指定字段<指定值 或 指定字段>指定值 的所有信息
	select * from 表名 where 字段名 >or 字段名 <;
	-- 查询指定字段 含有某字的所有记录
	-- MySQL的模糊查询,Like语句中,%代表零个或多个任意字符,_代表一个字符,列如LIKE '%某字%';
	select * from 表名 where 字段名 LIKE '%某字%';
	-- 查询指定字段以'某字'开头的所有记录
	select * from 表名 where 字段名 LIKE '某字%';
	-- 查询指定字段 第二个字为'某字'的所有记录
	select * from 表名 where 字段名 LIKE '_某字%';
	-- 查询指定字段为空的记录
	select * from 表名 where 字段名 is null;
	-- 查询指定字段不为空的记录
	select * from 表名 where 字段名 is not null;
	
-- 排序查询
语法:SELECT * FROM 表名 ORDER BY 排序字段 ASC(升序 默认)|DESC 降序;
	-- 按照指定字段(降序)排序
	SELECT * FROM 表名 ORDER BY 排序字段 DESC;
	-- 按照指定字段1(降序)排序的基础上,并按照指定字段2(降序)排序
	SELECT * FROM 表名 ORDER BY 排序字段1 DESC,排序字段2 DESC;
	-- 按照指定字段1去重基础上,按照指定字段2(降序)排序
	SELECT DISTINCT 去重字段 FROM 表名 ORDER BY 排序字段 DESC;
	
-- 聚合查询
	SELECT COUNT(*) FROM 表名;  --cout(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略NULL
	SELECT COUNT(字段) FROM 表名;  --count(列名)会统计该列字段在表中出现的次数,会忽略字段为null 的情况,即不统计字段为null 的记录 
	SELECT COUNT(1) FROM 表名;  --COUNT(1)会统计表中的所有的记录数,不会忽略NULL,包含字段为null 的记录
	-- 查询 指定字段>指定值 的总记录数
	SELECT COUNT(*) FROM 表名 WHERE 指定字段 > 指定值;
	-- 查询分类为 1 的所有商品的总和
	SELECT SUM(price) FROM product WHERE c_id = 1;
	-- 查询分类为2所有商品的平均价格
	SELECT AVG(price) FROM product WHERE c_id = 2;
	-- 查询商品的最大价格和最小价格
	SELECT MAX(price),MIN(price) FROM product;
	
-- 分组查询
语法:SELECT 字段1,字段2FROM 表名GROUP BY分组字段 HAVING 分组条件;
分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。
havingwhere的区别:
having是在分组后对数据进行过滤;where是在分组前对数据进行过滤
having后面可以使用分组函数(统计函数)where后面不可以使用分组函数
	-- 1 统计各个分类商品的个数
	SELECT c_id ,COUNT(*) FROM product GROUP BY c_id;
	-- 2 统计各个分类商品的个数,且只显示个数大于3的信息
	SELECT c_id ,COUNT(*) FROM product GROUP BY c_id HAVING COUNT(*) > 3;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值