MySQL操作之数据查询语言:(DQL)(四-1)(单表操作)

序号类型地址
1MySQLMySQL操作之概念、SQL约束(一)
2MySQLMySQL操作之数据定义语言(DDL)(二)
3MySQLMySQL操作之数据操作语言(DML)(三)
4MySQLMySQL操作之数据查询语言:(DQL)(四-1)(单表操作)
5MySQLMySQL操作之数据查询语言:(DQL)(四-2)(多表查询)
6MySQLMySQL操作之数据控制语言:(DC)(五)
7MySQLMySQL操作之数据库函数
8MySQLMySQL管理之数据类型
9MySQLMySQL管理之索引
10MySQLMySQL管理之事务管理
11MySQLMySQL管理之存储过程
12MySQLMySQL管理之视图
13MySQLMySQL管理之数据备份与还原
14MySQLLinux(centos 7.5)服务器安装MySQL
15MyBatisMyBatis从入门到多表关联
16MyBatisMyBatis常用方法
17MyBatisMybatis逆向工程的使用(附文件地址)
18MyBatisspring boot连接Mybatis数据库的配置文件(MySql、SQLserver、Oracle)
19MyBatis-PlusMybatis-Plus使用案例(包括初始化以及常用插件)
20MyBatis-PlusMybatis-Plus(Service CRUD 接口)
21MyBatis-PlusMybatis-plus 4种条件构造器方式
22MyBatis-PlusMybatis-Plus 执行自定义SQL
23MyBatis-PlusMyBatis-plus配置自定义SQL(执行用户传入SQL)
24MyBatis-PlusMybatis-Plus(连接Hive)
25MyBatis-PlusMybatis-Plus 代码生成器


一、简介

SELECT [DISTINCT] * 字段名1,字段名2,字段名3...
			FROM 表名
			[WHERE 条件表达式1]
			[GROUP BY 字段名[HAVING  条件表达式2]]
			[ORDER BY 字段名 [AES|DESC]]
			[LIMIT [OFFSET]记录数]
  1. SELECT [DISTINCT] * :表示通配符,查询全部,去重(distinct)
  2. FROM:查询的表名
  3. WHERE:用于指定查询条件
  4. [GROUP BY 字段名[HAVING 条件表达式2]]GROUP BY是可选参数,用于将查询结果,按照指定字段排序。HAVING可选参数,对分组后数据进行过滤。
  5. [ORDER BY 字段名 [AES|DESC]]:将查询结果按指定字段进行排序。
  6. LIMIT:限制单词查询出的数据量。

二、简单查询(select、distinct)

distinct使用:

  • 可以用于多个字段的去重。
  • 当多个字段值相同时,才会被去除。(name,age值都一致,才会被判定为重复)

查询所有的商品

select * from product;

查询商品名和商品价格

select pname,price from product;

别名查询.使用的关键字是as(as可以省略的)

select pname as pn from product as p

去掉重复值(distinct)

select distinct price from product

价格+10元进行显示

select price+10 from product

三、条件查询(where)

3.1 关系运算符查询

关系运算符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
  • <>!=是等价的

查询价格为800商品

SELECT * FROM product WHERE price = 800

查询价格不是800的所有商品

SELECT * FROM product WHERE price != 800

查询商品价格在200到1000之间所有商品

SELECT * FROM product WHERE price >= 200 AND price <=1000;
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;

3.2 带IN关键字查询(IN)

IN关键字,用于判断某个字段,是否存在于指定集合中

BETWEEN…AND…显示在某一区间的值(含头含尾)一定区间内的数
IN(set)显示在in列表中的值,例:in(100,200)两个数中的一个

查询商品价格是200或800的所有商品

SELECT * FROM product WHERE price = 200 OR price = 800;
SELECT * FROM product WHERE price IN (200,800);

3.3 带BETWEEN AND 关键字的查询(BETWEEN AND)

  • 显示在某一区间的值(含头含尾)

查询商品价格在200到1000之间所有商品

SELECT * FROM product WHERE price >= 200 AND price <=1000;
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;

3.4 空值查询

SELECT * |字段1,字段2....
		FROM 表名
		WHERE 字段名 IS [NOT] NULL

查询grade为空的值

SELECT id,name,grade FROM student WHERE grade IS NULL;

查询grade不为空的值

SELECT id,name,grade FROM student WHERE grade IS NOT NULL;

3.5 带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 'G__gle'--匹配(google)
SELECT * FROM product WHERE pname LIKE 'My SQL'--匹配(M_ _QL)

配置文本中含有%_

采用\%\_进行判断

SELECT * FROM product WHERE pname LIKE '%\%%' --匹配(nam&e)
SELECT * FROM product WHERE pname LIKE '%\_%' --匹配(nam_e)

3.6 带AND关键字的多条件查询

  • 假如含有多个AND关键字,条件都满足时,才会被查询出来
SELECT id,name,gender FROM student 
	WHERE gender='男' OR gender='女' AND id=5;

结果(先取id为5的,再与gender=男/gender=男取交集):

idgendername
5张三
4李四
2王五

3.6 带OR关键字的多条件查询

  • 使用OR关键字,2个条件中,只要满足其中一个就被查询出来
SELECT id,name,age FROM student WHERE id<5 OR gender='女';

ANDOR关键字共同被使用

  • ANDOR共同被使用时,AND优先级高于OR
SELECT id,name,age FROM student WHERE id<5 OR gender='女';

五、聚合函数

  • COUNT( ):统计指定列不为NULL的记录行数;
  • SUM( ):计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0
  • MAX( ):计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
  • MIN( ):计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
  • AVG( ):计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

查询商品的总条数(count)

SELECT COUNT(*) FROM product

查询商品的价格和(sum)

select sum(price) as 'totalprice' FROM product

查询分类为’c002’所有商品的平均价格(AVG)

SELECT AVG(price) FROM product WHERE category_id = 'c002'

查询商品的最大价格(MAX)

SELECT MAX(price) FROM product

查询商品的最小价格(MIX)

SELECT MIN(price) FROM product

四、排序查询(order by ASC/DESC)

格式:

SELECT 字段1,字段2... 
	FROM 表名
	ORDER BY 字段1[ASC|DESC],字段2[ASC|DESC]... 
  • 排序默认是升序(AES)
  • 假如某条记录为NULL,则它会呗排序第一条中(默认NULL为最小值)

使用价格排序(降序)

SELECT * FROM product ORDER BY price DESC

在价格排序(降序)的基础上,以分类排序(降序)

SELECT * FROM product ORDER BY price DESC,category_id DESC

六、分组查询(group by)

分组查询是指使用group by字句对查询信息进行分组

SELECT 字段1,字段2FROM 表名 
		GROUP BY 字段1,字段2[HAVING 分组条件];

having与where的区别:

having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用聚合函数(统计函数)
where后面不可以使聚合函数

根据分组进行查询数量

SELECT category_id ,COUNT(*) FROM product GROUP BY category_id;

统计各个分类商品的个数,且只显示个数大于1的信息

SELECT category_id ,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*) > 1;

统计各个分类商品的平均价格,且只显示平均价格>800的信息

SELECT category_id,AVG(price) FROM product GROUP BY category_id HAVING AVG(price)>800;

在这里插入图片描述

七、限制查询结果数量(LIMIT)

SELECT 字段1,字段2,...
	FROM 表名
		LIMIT [OFFSET,]记录数
  • OFFSET表示偏移量。
  • 偏移量为0,则从第一条记录开始查询。

查询10条数据

SELECT * FROM student LIMIT 10;

查询第5~8位学生数据

SELECT * FROM student ORDER BY grade DESC LIMIT 4,4;
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ha_lydms

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值