Java EE之旅08-数据库基础(2)

回顾

SQL的分类如下:

DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; CREATE、 ALTER、DROP

DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据); INSERT、 UPDATE、 DELETE

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;

DQL(Data Query Language):数据查询语言(主要是SELECT),用来查询记录(数据)。

上一篇文章主要介绍了DDL、DML,今天重点介绍DQL。

DQL-数据查询语言

数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端(虚拟,查出来放在内存里面)。

查询返回的结果集是一张虚拟表。

查询关键字:SELECT

为了更好地说明,我们以3张表为例:

相关的表创建以及数据插入SQL语句如下:

1 基础查询

2 条件查询

3 模糊查询

当想模糊匹配的时候就需要使用模糊查询了。模糊查询需要使用关键字LIKE。

4 字段控制查询

5 排序order by 列名 asc(默认) desc

6 聚合函数sum avg max min count

聚合函数是用来做纵向运算的函数:

COUNT():统计指定列不为NULL的记录行数;

MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

7 分组查询

当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部门来分组。

注:凡和聚合函数同时出现的列名,一定要写在group by 之后

having与where的区别:

having是在分组后对数据进行过滤。where是在分组前对数据进行过滤

having后面可以使用聚合函数(统计函数)。where后面不可以使用聚合函数。

WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

8 LIMIT

LIMIT用来限定查询结果的起始行,以及总行数。涉及到分页技术。

MySQL中有,Oracle中没有这个LIMIT关键字。

查询代码的书写顺序和执行顺序

我们用一个图来理解查询的过程(可以看到查询结果不断减少、分组化、有序化):

注意:排序和筛选的顺序不能够反过来(执行就会报错),因为筛选之后数据的顺序可能就乱了。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180104G05RYC00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区