序号 | 类型 | 地址 |
---|---|---|
1 | MySQL | Linux(centos 7.5)服务器安装MySQL5.7 |
2 | MySQL | Linux服务器安装MySQL8.0 |
3 | MySQL | MySQL操作之概念、SQL约束(一) |
4 | MySQL | MySQL操作之数据定义语言(DDL)(二) |
5 | MySQL | MySQL操作之数据操作语言(DML)(三) |
6 | MySQL | MySQL操作之数据查询语言:(DQL)(四-1)(单表操作) |
7 | MySQL | MySQL操作之数据查询语言:(DQL)(四-2)(多表查询) |
8 | MySQL | MySQL操作之数据控制语言:(DC)(五) |
9 | MySQL | MySQL操作之数据库函数 |
10 | MySQL | MySQL管理之数据类型 |
11 | MySQL | MySQL管理之索引 |
12 | MySQL | MySQL管理之事务管理 |
13 | MySQL | MySQL管理之存储过程 |
14 | MySQL | MySQL管理之视图 |
15 | MySQL | MySQL管理之数据备份与还原 |
16 | MyBatis | MyBatis从入门到多表关联 |
17 | MyBatis | MyBatis常用方法 |
18 | MyBatis | Mybatis逆向工程的使用(附文件地址) |
19 | MyBatis | spring boot连接Mybatis数据库的配置文件(MySql、SQLserver、Oracle) |
20 | MyBatis-Plus | Mybatis-Plus使用案例(包括初始化以及常用插件) |
21 | MyBatis-Plus | Mybatis-Plus(Service CRUD 接口) |
22 | MyBatis-Plus | Mybatis-plus 4种条件构造器方式 |
23 | MyBatis-Plus | Mybatis-Plus 执行自定义SQL |
24 | MyBatis-Plus | MyBatis-plus配置自定义SQL(执行用户传入SQL) |
25 | MyBatis-Plus | Mybatis-Plus(连接Hive) |
26 | MyBatis-Plus | Mybatis-Plus 代码生成器 |
文章目录
一、简介
SELECT [DISTINCT] * 字段名1,字段名2,字段名3...
FROM 表名
[WHERE 条件表达式1]
[GROUP BY 字段名[HAVING 条件表达式2]]
[ORDER BY 字段名 [AES|DESC]]
[LIMIT [OFFSET]记录数]
SELECT [DISTINCT] *
:表示通配符,查询全部,去重(distinct)FROM
:查询的表名WHERE
:用于指定查询条件[GROUP BY 字段名[HAVING 条件表达式2]]
:GROUP BY
是可选参数,用于将查询结果,按照指定字段排序。HAVING
可选参数,对分组后数据进行过滤。[ORDER BY 字段名 [AES|DESC]]
:将查询结果按指定字段进行排序。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=男取交集):
id | gender | name |
---|---|---|
5 | 男 | 张三 |
4 | 男 | 李四 |
2 | 女 | 王五 |
3.6 带OR关键字的多条件查询
- 使用
OR
关键字,2个条件中,只要满足其中一个就被查询出来
SELECT id,name,age FROM student WHERE id<5 OR gender='女';
AND
和OR
关键字共同被使用
AND
和OR
共同被使用时,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,字段2…
FROM 表名
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;