MySQL数据库之DQL数据操作

目录

一、DQL介绍

1、DQL

2、常见DQL语句

二、DQL语句理解之单表查询

1、准备数据

2、SELECT语句

2.1基本语法

2.2示例

3、WHERE条件查询

3.1基本语法

3.2条件查询分类

3.3示例

 4、范围查询

4.1BETWEEN AND进行范围查询

4.1.1基本语法

4.1.2示例

4.2IN进行范围查询

4.2.1基本语法

4.2.2示例

5、比较查询

5.1查询分类

5.2示例 

6、Like模糊查询

6.1百分号(`%`)

6.2下划线(_)

7、非空查询

7.1基础语法

7.2示例

8、逻辑查询

8.1AND运算符

8.2OR运算符

8.3NOT运算符

9、ORDER BY排序查询

9.1基本语法

9.2示例

10、聚合查询

10.1基本语法

10.2分类

10.3示例

11、GROUP BY分组查询与having子句

11.1基本语法

11.2group by语句

11.3聚合函数

11.4having语句

12、limit分页查询

12.1基本语法

12.2示例

三、DQL语句理解之多表查询

1.笛卡尔积

2、连接查询

3、子查询

四、总结


一、DQL介绍

1、DQL

DQL是Data Query Language缩写,数据查询语言,用于检索数据库中的数据。DQL是作为查询语句,不会对数据库的数据进行修改。

2、常见DQL语句

SELECT用于从数据库中查询数据
FROM指定要查询的数据表
WHERE指定查询过滤条件
GROUP BY按照指定的列对查询结果进行分组
HAVING指定对分组后的结果进行过滤的条件
ORDER BY指定查询结果的排序顺序,ASC升序,DESC降序
JOIN将多个表按照某些条件连接在一起进行查询

二、DQL语句理解之单表查询

1、准备数据

(1)数据库test中的表goods中的数据如下:

(2)表goods结构如下:

(3)数据库test中的表product中的数据如下(示例中的单表查询使用的是这个表):

(4)表product结构如下:

2、SELECT语句

2.1基本语法

SELECT [distinct]*|列名1, 列名2, ...
FROM 表名
WHERE 条件
GROUP BY 列名
HAVING 条件
ORDER BY 列名 [ASC|DESC]

2.2示例

(1)查询所有的商品

select *from product;

结果如下:

 

(2)查询商品名和商品价格

select pname,price from product;

结果如下: 

3、WHERE条件查询

3.1基本语法

SELECT 列名1, 列名2, ...
FROM 表名
WHERE 条件;

3.2条件查询分类

3.3示例

(1)查询表product中price等于5000的记录

select * from product where price=5000;

结果如下:

 4、范围查询

4.1BETWEEN AND进行范围查询

4.1.1基本语法
column_name BETWEEN value1 AND value2;
4.1.2示例

(1)查询表product中price在2000~5000的商品记录

select * from product where price BETWEEN 2000 AND 5000;

结果如下:

4.2IN进行范围查询

4.2.1基本语法
column_name IN (value1, value2, ...)
4.2.2示例

(1)查询表product中price等于2000或3000的商品记录

 select * from product where price in(2000,3000);

结果如下:

5、比较查询

5.1查询分类

操作符描述实例
=等号,检测两个值是否相等,如果相等返回true(10= 20) 返回false。
<>, !=不等于,检测两个值是否相等,如果不相等返回true(10 != 20) 返回 true。
>大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true(10 > 20) 返回false。
<小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true(10< 20) 返回 true。
>=大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true(10 >= 20) 返回false。
<=小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true(10 <= 20) 返回 true。

5.2示例 

 (1)查询表product中price不等于5000的商品记录

select * from product where price <> 5000;

结果如下:

6、Like模糊查询

6.1百分号(`%`)

(1)百分号(%)通配符:代表零个或多个字符。可以用在模式的任意位置。基本语法如下:

SELECT * FROM table_name WHERE column_name LIKE '%abc%';

(2)示例:查询以'香'开头的所有商品

6.2下划线(_)

(1)下划线( \_)通配符:代表一个单个字符。可以用在模式的任意位置。基本语法如下:

SELECT * FROM table_name WHERE column_name LIKE 'a_';

(2)示例:查询第二个字为'想'的所有商品

7、非空查询

7.1基础语法

SELECT * FROM table_name WHERE column_name IS NOT NULL;

7.2示例

8、逻辑查询

8.1AND运算符

(1)AND用于指定多个条件同时满足的查询,基本语法:

SELECT * FROM table_name WHERE condition1 AND condition2;

(2)示例

8.2OR运算符

(1)OR用于指定多个条件中任何一个满足的查询,基本语法:

SELECT * FROM table_name WHERE condition1 OR condition2;

(2)示例

8.3NOT运算符

(1)NOT用于指定条件的否定查询,基本语法:

SELECT * FROM table_name WHERE NOT condition;

(2)示例

9、ORDER BY排序查询

9.1基本语法

#ASC升序 DESC降序
SELECT column1, column2, ...
FROM table
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

9.2示例

10、聚合查询

10.1基本语法

SELECT aggregate_function(column1), aggregate_function(column2), ...
FROM table
WHERE condition
GROUP BY column1, column2, ... 
HAVING condition;

10.2分类

聚合函数作用
COUNT(column)统计某一列的非空值数量。
SUM(column)计算某一列的数据之和,如果指定列类型不是数值类型,则计算结果为0。
MAX(column)找出某一列中的最大值,如果指定列是字符串类型,使用字符串排序运算。
MIN(column)找出某一列中的最小值,如果指定列是字符串类型,使用字符串排序运算。
AVG(column)计算某一列的数据平均值,如果指定列类型不是数值类型,则计算结果为0。

10.3示例

(1)查询COUNT函数记录条数取别名叫total_products,AVG函数获取平均值取名average_price,MAX函数获取最大值取别名max_price,MIN函数最小值取别名min_price

SELECT COUNT(pid) AS total_products, AVG(price) AS average_price, MAX(price) AS max_price, MIN(price) AS min_price from product;

11、GROUP BY分组查询与having子句

11.1基本语法

SELECT column1, column2, ..., aggregate_function(column)
FROM table
WHERE condition
GROUP BY column1, column2, ...
HAVING condition;

11.2group by语句

(1)基本语法

select column1, column2, ... from table_name group by column1, column2, ...;

(2)示例

11.3聚合函数

(1)group by + 聚合函数的使用:查询每个商品数量和价格分别取别名

select pid,count(*) as total_count,avg(price) as averg_price from product group by pid;

11.4having语句

(1)`having`是过滤分组数据的,只能用于`group by`,示例如下

#统计各个分类商品的个数,且只显示个数大于1的信息
SELECT category_id ,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*) > 1;

12、limit分页查询

12.1基本语法

#`offset`:结果集的起始位置,表示返回结果时忽略前面的多少条记录。(起始位置从0开始)
# `count`:要返回的记录数,指定返回多少条记录。
SELECT column1, column2, ...
FROM table
LIMIT offset, count;

12.2示例

(1)查询从第八条数据开始后面的五条数据

select * from product limit 7,5;

三、DQL语句理解之多表查询

1.笛卡尔积

(1)笛卡尔积指的是通过对两个表进行交叉连接操作,生成一个包含了两个表中所有可能组合的结果集。比如说,两个表分别右两条记录,那么笛卡尔积就是2x2=4。

(2)示例

Table A:

IDName
1Alice
2Bob

Table B:

IDCourse
101Math
102English

通过对表A和表B执行交叉连接操作,可以得到它们的笛卡尔积结果:

Table C:

IDNameIDCourse
1Alice101Math
1Alice102English
2Bob101Math
2Bob102English

2、连接查询

2.1左外连接

(1)关系图如下

(2)基本语法

SELECT 列名
FROM 表A
LEFT JOIN 表B ON 关联条件;

(3)示例

2.2右外连接

(1)关系图如下

(2)基本语法

SELECT 列名
FROM 表A
RIGHT JOIN 表B ON 关联条件;

(3)示例

2.3内连接

(1)关系图如下

(2)基本语法

SELECT 列名
FROM 表A
INNER JOIN 表B ON 关联条件;

(3)示例

3、子查询

(1)基本语法:

SELECT 列名 FROM 表WHERE 列 IN (SELECT 列名 FROM 表 WHERE 条件);

(2)示例:查询product表中价格大于整个表价格平均值的记录

四、总结

数据库中查询很重要,尤其查询语句又多又杂,所以单独拎出来记一篇笔记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值