SQL - DQL 数据查询语言
发布日期:2021-05-15 16:26:50 浏览次数:11 分类:精选文章

本文共 2482 字,大约阅读时间需要 8 分钟。

数据库查询是数据库操作的核心技能之一,主要用于从数据库中获取所需数据。在实际应用中,数据库执行DQL(Data Query Language)语句不会修改数据,而是将结果集返回给客户端。下文将详细介绍数据库查询的基本原理、关键语法和实际应用案例。

1. 基本查询

在数据库中执行查询操作的第一步是使用SELECT语句。该语句用于定义要 retrieval 的数据 columns,指定要从哪个 table 中查询。

1.1 全选查询

查询所有表字段,可以通过使用*来表示所有列。

select * from stu;

1.2 特定列查询

如果需要只查询特定的列,可以在查询列表中明确指定这些 column。

select sid, sname, age from stu;

2. 条件查询

在实际应用中,往往需要根据特定条件筛选查询结果。WHERE子句用于定义这些筛选条件。常用的比较运算符包括>、>=、<、<=、!=、<>、=等

2.1 conditions

查询性别为“女”,年龄小于等于50岁的学生。

select * from stu where gender = 'female' and age <= 50;

2.2 OR条件

查询学号为s_1001或姓名为LiuSD的学生。

select * from stu where sid = 's_1001' or sname = 'LiuSD';

2.3 IN条件

查询学号为s_1001s_1003s_1004的学生。

select * from stu where sid in('s_1001', 's_1003', 's_1004');

2.4 NOT IN条件

查询学号不在s_1001s_1003s_1004中的学生。

select * from stu where sid not in('s_1001', 's_1003', 's_1004');

2.5 NULL值查询

查询年龄为空的记录。

select * from stu where age is null;

2.6 范围查询

查询年龄在20岁到40岁之间的学生。

select * from stu where age between 20 and 40;

2.7 非男性查询

查询所有非男性的学生。

select * from stu where gender != 'male';

3. 模糊查询

在实际业务场景中,对于特定字符进行模糊匹配常常是必需的。LIKE子句用于实现这一功能。使用通配符_%可以对字段进行部分匹配。

3.1 特定字符开头或结尾

查询姓名以“z”开头的学生。

select * from stu where sname like 'z%';

3.2 包含特定字符

查询姓名中包含“a”字符的学生。

select * from stu where sname like '%a%';

4. 字段控制查询

在某些场景下,为了保护敏感信息或限制结果的数据量,可以对查询结果的字段进行限制。

4.1 去重复记录

对于 emp table 中可能存在的重复记录,可以使用DISTINCT去重。

select distinct sal from emp2;

4.2 计算字段值

查询月薪加上佣金的总和,并处理可能的 Null 值。

select ifnull(sal, 0) + ifnull(comm, 0) as total from emp2;

4.3添加列别名

在结果列中为计算结果字段命名。

select ifnull(sal, 0) + ifnull(comm, 0) as total from emp2;

5. 排序

为了方便数据查看和分析,可以对查询结果进行排序。ORDER BY子句用于定义排序依据。

5.1 按年龄升序排序

查询所有学生按年龄升序排列。

select * from stu order by age;

5.2 多层排序

查询雇员按月薪降序排列,月薪相同则按员工编号升序排列。

select * from emp2 order by sal desc, empno;

6. 聚合函数

聚合函数是数据处理的重要工具,用于对多个数据进行归类计算。

6.1 COUNT函数

统计表中记录的总数。

select count(*) as cnt from emp2;

6.2 SUM和AVG函数

计算所有雇员月薪和,并计算平均工资。

select sum(sal) from emp2;select avg(sal) from emp2;

6.3 MAX和MIN函数

查询部门最大和最小工资。

select max(sal), min(sal) from emp2;

7. 分组查询

在需要对数据进行分组统计时,可以使用GROUP BY子句。having子句用于对分组后的结果进一步筛选。

7.1 分组查询

查询每个部门的工资总和。

select sum(sal), deptno from emp2 group by deptno;

7.2 过滤分组结果

查询工资总和大于9000的部门编号和总工资。

select deptno, sum(sal) as totalSal from emp2 group by deptno having totalSal > 9000;

7.3 多列分组

统计每个部门的男女生人数。

select gradename, gender, count(*) from stu group by gradename, gender;

8. 限制

LIMIT子句用于限制结果的显示行数或起始位置。

8.1 限定起始行和显示行数

从第3行开始显示接下来的10行数据。

select * from emp2 limit 3, 10;``]通过以上方法,数据库查询可以灵活地满足不同的数据需求。熟练掌握这些查询技巧,可以显著提升工作效率和数据分析能力。
上一篇:mysql高级
下一篇:二维码图片生成(带文字显示)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月15日 14时56分22秒