第08章_聚合函数
第08章_聚合函数
我们上一章讲到了 SQL 单行函数。实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。
1. 聚合函数介绍
什么是聚合函数
聚合函数作用于一组数据,并对一组数据返回一个值。
聚合函数类型
AVG()
SUM()
MAX()
MIN()
**COUNT() **
聚合函数语法
聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。
1.1 AVG和SUM函数可以对数值型数据使用AVG 和 SUM 函数。
123SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)FROM employeesWHERE job_id LIKE '%REP%';
1.2 MIN和MAX函数可以对任意数据类型的数据使用 MIN 和 MAX 函数。
12SELECT MIN(hire_date), MAX(hire_date)FROM employees;
1.3 ...
第07章_单行函数
第07章_单行函数
1. 函数的理解1.1 什么是函数函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在 SQL 中我们也可以使用函数对检索出来的数据进行函数操作。使用这些函数,可以极大地提高用户对数据库的管理效率。
从函数定义的角度出发,我们可以将函数分成内置函数和自定义函数。在 SQL 语言中,同样也包括了内置函数和自定义函数。内置函数是系统内置的通用函数,而自定义函数是我们根据自己的需要编写的,本章及下一章讲解的是 SQL 的内置函数。
1.2 不同DBMS函数的差异我们在使用 SQL 语言的时候,不是直接和这门语言打交道,而是通过它使用不同的数据库软件,即 DBMS。DBMS 之间的差异性很大,远大于同一个语言不同版本之间的差异。实际上,只有很少的函数是被 DBMS 同时支持的。比如,大多数 DBMS 使用(||)或者(+)来做拼接符,而在 MySQL 中的字符串拼接函数为concat()。大部分 DBMS 会有自己特定的函数,这就意味着采用 SQL 函数的代码可移植性是 ...
第06章_多表查询
第06章_多表查询
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。
前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联。
1. 一个案例引发的多表连接1.1 案例说明
从多个表中获取数据:
123#案例:查询员工的姓名及其部门名称SELECT last_name, department_nameFROM employees, departments;
查询结果:
12345678910111213141516171819202122232425+-----------+----------------------+| last_name | department_name |+-----------+----------------------+| King | Administration || King | Marketing || King | Pur ...
第05章_排序与分页
第05章_排序与分页
1. 排序数据1.1 排序规则
使用 ORDER BY 子句排序
ASC(ascend): 升序
DESC(descend):降序
ORDER BY 子句在SELECT语句的结尾。
1.2 单列排序123SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date ;
123SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date DESC ;
123SELECT employee_id, last_name, salary*12 annsalFROM employeesORDER BY annsal;
1.3 多列排序123SELECT last_name, department_id, salaryFROM employeesORDER BY department_id, salary DE ...
第04章_运算符
第04章_运算符
1. 算术运算符算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算。
1.加法与减法运算符
1234567mysql> SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 -30, 100 + 35.5, 100 - 35.5 FROM dual;+-----+---------+---------+----------+--------------+------------+------------+| 100 | 100 + 0 | 100 - 0 | 100 + 50 | 100 + 50 -30 | 100 + 35.5 | 100 - 35.5 |+-----+---------+---------+----------+--------------+------------+------------+| 100 | 100 | 100 | 150 | 120 | ...
第03章_基本的SELECT语句
第03章_基本的SELECT语句
1. SQL概述1.1 SQL背景知识
1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖。在这几十年里,无数的技术、产业在这片江湖里沉浮,有的方兴未艾,有的已经几幕兴衰。但在这片浩荡的波动里,有一门技术从未消失,甚至“老当益壮”,那就是 SQL。
45 年前,也就是 1974 年,IBM 研究员发布了一篇揭开数据库技术的论文《SEQUEL:一门结构化的英语查询语言》,直到今天这门结构化的查询语言并没有太大的变化,相比于其他语言,SQL 的半衰期可以说是非常长了。
不论是前端工程师,还是后端算法工程师,都一定会和数据打交道,都需要了解如何又快又准确地提取自己想要的数据。更别提数据分析师了,他们的工作就是和数据打交道,整理不同的报告,以便指导业务决策。
SQL(Structured Query Language,结构化查询语言)是使用关系模型的数据库应用语言,与数据直接打交道,由IBM上世纪70年代开发出来。后由美国国家标准局(ANSI)开始着手制定SQL标准,先后有SQL-86,SQL-89,SQL-92,SQL ...
第02章_MySQL环境搭建
第02章_MySQL环境搭建
1. MySQL的卸载步骤1:停止MySQL服务在卸载之前,先停止MySQL8.0的服务。按键盘上的“Ctrl + Alt + Delete”组合键,打开“任务管理器”对话框,可以在“服务”列表找到“MySQL8.0”的服务,如果现在“正在运行”状态,可以右键单击服务,选择“停止”选项停止MySQL8.0的服务,如图所示。
步骤2:软件的卸载方式1:通过控制面板方式
卸载MySQL8.0的程序可以和其他桌面应用程序一样直接在“控制面板”选择“卸载程序”,并在程序列表中找到MySQL8.0服务器程序,直接双击卸载即可,如图所示。这种方式删除,数据目录下的数据不会跟着删除。
方式2:通过360或电脑管家等软件卸载
略
方式3:通过安装包提供的卸载功能卸载
你也可以通过安装向导程序进行MySQL8.0服务器程序的卸载。
① 再次双击下载的mysql-installer-community-8.0.26.0.msi文件,打开安装向导。安装向导会自动检测已安装的MySQL服务器程序。
② 选择要卸载的MySQL服务器程序,单击“Remove”(移除),即可进行卸 ...
第01章_数据库概述
第01章_数据库概述
1. 为什么要使用数据库
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。
持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。
生活中的例子:
2. 数据库与数据库管理系统2.1 数据库的相关概念
DB:数据库(Database)
即存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。
DBMS:数据库管理系统(Database Management System)
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。
SQL:结构化查询语言(Structured Query Language)
专门用来与数据库通信的语言。
2.2 数据库与数据库管理系统的关系数据库管理系统(DBMS)可以管理多个数据库,一般开发人 ...
LC.P745[前缀和后缀搜索]
LC.P745[前缀和后缀搜索]
方法一:暴力(哈希表)1234567891011121314151617181920212223242526class WordFilter { Map<String, Integer> map; public WordFilter(String[] words) { map = new HashMap<>(); for (int i = 0; i < words.length; ++i) { String word = words[i]; int n = word.length(); for (int pref = 1; pref <= n; ++pref) { for (int suff = 1; suff <= n; ++suff) { map.put(word.substring(0 ...
LC.P2455[可被三整除的偶数的平均值]
LC.P2455[可被三整除的偶数的平均值]
方法一:模拟123456789101112class Solution { public int averageValue(int[] nums) { int sum = 0, cnt = 0; for (int num : nums) { if (num % 6 == 0) { ++cnt; sum += num; } } return cnt == 0 ? 0 : sum / cnt; }}
时间复杂度:$O(n)$
空间复杂度:$O(1)$