Sql学习6-2_数据库查询语言DQL

MySQL数据查询SQL-DQL

语法格式

select 字段列表|* from 表名
[where 搜索条件]
[group by 分组字段 [having 分组条件]]
[order by 排序字段 排序规则]
[limit 分页参数]

查询语句概括说明

子句说明是否必须
select要返回的列或表达式,字段列表
from查询的数据表需要在表中查询时
where数据行的过滤
group by分组仅在分组聚合计算时
having分组后的数据过滤
order by输出排序
limit要提取的结果行数

一、基础查询

-- 查询表中所有列 所有数据
select * from student;
-- 指定字段列表进行查询
select id,name,phone from student;

二、条件查询

  • 可以在where子句中指定任何条件
  • 可以使用 and 或者 or 指定一个或多个条件
  • where条件也可以运用在update和delete语句的后面
  • where子句类似程序语言中if条件,根据mysql表中的字段值来进行数据的过滤
-- 查询 student 表中 age > 22的数据
SELECT * FROM student WHERE age > 18;

-- 查询 student 表中 name=某个条件值 的数据
SELECT * FROM student WHERE name = '王五';

-- 查询 student 表中 年龄在22到25之间的数据
SELECT * FROM student WHERE age >= 22 and age <= 25;
SELECT * FROM student WHERE age between 22 AND 25;

-- 查询 student 表中 年龄不在22到25之间的数据
SELECT * FROM student WHERE age < 22 OR age > 25;
SELECT * FROM student WHERE age NOT BETWEEN 22 AND 25;

-- 查询 student 表中 年龄在22到25之间的女生信息
SELECT * FROM student WHERE age >= 22 AND age <= 25 AND sex = '女';
2.1 AND 和 OR

要注意的是:当 ANDOR 一起使用时, sql会优先处理 AND 条件,如有需要应该使用括号来关联条件

2.2 LIKE 子句

可以只用LIKE语句进行模糊查询

-- 使用 % 模糊搜索。%代表任意个任意字符

-- 查询name字段中包含五的
SELECT * FROM student WHERE name LIKE '%五%';
-- 查询name字段中最后一个字符 为 五的
SELECT * FROM student WHERE name LIKE '%五';
-- 查询name字段中第一个字符 为 王 的
SELECT * FROM student WHERE name LIKE '王%';

-- 使用 _ 单个的下划线。表示一个任意字符,使用和%类似

-- 查询表中 name 字段为两个字符的数据
SELECT * FROM student WHERE name LIKE '__';
-- 查询 name 字段最后为五,的两个字符的数据
SELECT * FROM student WHERE name LIKE '_五';

要注意的是:where子句中的like在使用%或者_进行模糊搜索时,效率不高,使用时注意:
尽可能的不去使用%或者_,如果需要使用,也尽可能不要把通配符放在开头处

三、 Mysql 统计函数(聚合函数)

函数说明
max()返回查询列中的最大值
min()返回查询列中的最小值
count()用来计算表中记录的个数或者列中值的个数,计算内容由SELECT语句指定。当单行时,不计算空值NULL
sum()用于对数据求和,返回选取结果集中所有值的总和。
avg()计算一列中数据值的平均值。
-- 计算 users 表中 最大年龄,最小年龄,年龄和及平均年龄
SELECT max(age) AS max_age,min(age) AS min_age,sum(age) AS sum_age,avg(age) AS avg_age FROM student;

-- 统计 users 表中的数据量
SELECT COUNT(*) FROM users;

聚合函数除了以上简单的使用意外,通常情况下都是配合着分组进行数据的统计和计算

四、Group BY 分组

group by 语句根据一个或多个列对结果集进行分组。一般情况下,是用与数据的统计或计算,配合聚合函数使用

-- 统计 student 表中 男女生人数,
-- 很明显按照上面的需要,可以写出两个语句进行分别统计
SELECT COUNT(*) FROM student WHERE sex = '女';
SELECT COUNT(*) FROM student WHERE sex = '男';

-- 可以使用分组进行统计,更方便
SELECT sex,COUNT(*) FROM student GROUP BY sex;

-- 统计1班和2班的人数
SELECT classid,COUNT(*) FROM student GROUP BY  classid;

-- 分别统计每个班级的男女生人数
SELECT classid,sex,COUNT(*) AS num FROM student GROUP BY  classid,sex;

注意,在使用。group by分组时,一般除了聚合函数,其它在select后面出现的字段列都需要出现在grouop by 后面

4.1 Having 子句

having是在分组聚合计算后,对结果再一次进行过滤,类似于where,where过滤的是行数据,having过滤的是分组数据

五、Order by 排序

我们在mysql中使用select的语句查询的数据结果是根据数据在底层文件的结构来排序的, 首先不要依赖默认的排序,另外在需要排序时要使用orderby对返回的结果进行排序 Asc 升序,默认 desc降序

-- 按照年龄对结果进行排序,从大到小
SELECT * FROM users ORDER BY age DESC;
-- 从小到大排序 asc 默认就是。可以不写
SELECT * FROM users ORDER BY age;
-- 也可以按照多个字段进行排序
SELECT * FROM users ORDER BY age,id; -- 先按照age进行排序,age相同情况下,按照id进行排序
SELECT * FROM users ORDER BY age,id DESC;

六、Limit 数据分页

  • limit n 提取n条数据
  • limit m,n 跳过m跳数据,提取n条数据
-- 查询users表中的数据,只要3条
SELECT * FROM users LIMIT 3;
-- 跳过前4条数据,再取3条数据
SELECT * FROM users LIMIT 4,3;
-- limit一般应用在数据分页上面
-- 例如每页显示10条数据,第三页的 limit应该怎么写? 思考
--第一页
LIMIT 0,10
--第二页
LIMIT 10,10
--第三页
LIMIT 20,10
--第四页
LIMIT 30,10
-- 提取 user表中 年龄最大的三个用户数据 怎么查询?
SELECT * FROM users ORDER BY age DESC LIMIT 3;
6.1 分页查询的使用

与前端页面交互就是,前端页面传入页数,然后,页数也就是limit的第一个参数page,每页行数就是limit的第二个参数row

SELECT * FROM users LIMIT page,row
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值