化繁为简:Access 与 SQL 创新指南(第四篇)

化繁为简:Access 与 SQL 创新指南(第四篇)

第一章 化繁为简:Access 与 SQL 创新指南-生存的智慧------ 为什么是 Access?
第二章 化繁为简:Access 与 SQL 创新指南-生存的智慧------ 打破壁垒:Access 如何让普通人变身"开发者"
第三章 化繁为简:Access 与 SQL 创新指南-生存的智慧------ 查询,窗体和报表
第四章 化繁为简:Access 与 SQL 创新指南-生存的智慧------ SQL 编程核心

文章目录

  • [化繁为简:Access 与 SQL 创新指南(第四篇)](#化繁为简:Access 与 SQL 创新指南(第四篇))
  • [第四篇:SQL 编程核心](#第四篇:SQL 编程核心)
    • [4.1 Access 与 SQL](#4.1 Access 与 SQL)
    • [4.2 SQL 数据库管理工具介绍](#4.2 SQL 数据库管理工具介绍)
      • [4.2.1 DBeaver 安装和配置](#4.2.1 DBeaver 安装和配置)
      • [4.2.2 使用 DBeaver 操作 Access](#4.2.2 使用 DBeaver 操作 Access)
    • [4.3 Access 中常见的 SQL 语句分类](#4.3 Access 中常见的 SQL 语句分类)
      • [4.3.1 DQL:数据查询语言(Data Query Language)](#4.3.1 DQL:数据查询语言(Data Query Language))
      • [4.3.2 DML:数据操作语言(Data Manipulation Language)](#4.3.2 DML:数据操作语言(Data Manipulation Language))
      • [4.3.3 DDL:数据定义语言(Data Definition Language)](#4.3.3 DDL:数据定义语言(Data Definition Language))
    • 结束语

第四篇:SQL 编程核心

上几章中,我们学习了 Access 中表、查询、窗体和报表的创建与使用。这些对象似乎分别属于不同的功能模块:表负责存储数据,查询负责筛选数据,窗体负责输入和查看数据,报表负责输出和展示数据。

但如果再往深一点看,就会发现:这些功能几乎都离不开 SQL。

今天我们就在说一说这个古老的语言

为什么说他古老?,

SQL 的诞生 关系数据库理论,源于 上世纪 70年代,由英国计算机科学家 Edgar F. Codd 提出。Codd 在 IBM 工作期间发明了 关系模型(Relational Model),这是关系数据库管理系统(RDBMS)的理论基础。他提出了两种核心数学工具:关系代数(Relational Algebra)和关系演算(Relational Calculus),为 SQL 的设计提供了理论支撑。是不是很好奇,这个数据库语言视乎和 C++ 一样古老。

因为

  • SQL 解决的 "管好数据、查好数据" 这个核心需求,从 70 年代到现在从没变过,是刚需;
  • SQL 用起来简单,不用管底层细节,普通人也能上手,比其他方式更适配数据管理场景;
  • 全行业都认 SQL 这个 "标准",换语言成本太高,甚至新工具都要兼容它;
  • SQL 一直在加新功能,能适配大数据、AI 这些新场景,不是一成不变的老古董。

可以说,SQL 是数据库系统中的"核心语言",也是 Access 背后真正驱动数据操作的基础。无论是在设计查询时选择字段、设置条件,还是在生成报表时读取数据来源,甚至包括窗体中某些控件的数据绑定,本质上都和 SQL 有着密切关系。Access 虽然提供了图形化界面,使很多操作可以通过鼠标点击完成,但这些可视化操作的背后,最终仍然会被转换成 SQL 语句来执行。

因此,从这一篇开始,我们将把重点放到 SQL 与 Access 结构之间的关系 上,进一步理解数据库"为什么能工作",以及 Access 是如何借助 SQL 把前面所学的表、查询、窗体和报表组织成一个完整应用的。

4.1 Access 与 SQL

使用access 你会发现很多时候,我们不需要自己手写代码,只要通过向导或者设计视图,就可以完成表、查询、窗体和报表的创建。和个 数据工程师使用 mysql,使用sql server 80%都是和sql 有关。这也是 Access 非常适合教学和中小型信息管理系统开发的重要原因。

但是,这种"容易上手"并不代表 Access 不需要 SQL。恰恰相反,Access 的很多功能,本质上都是 SQL 的可视化封装。

例如,当我们创建一个选择查询时,表面上只是从设计网格中勾选字段、填写条件;当我们创建一个参数查询时,看起来只是输入一句提示语;

当我们在查询中设置排序、分组和汇总时,也只是点击了几个按钮;甚至当窗体或报表绑定到某个查询时,本质上也仍然是在调用查询返回的数据结果。

而这些操作,最终都会对应到 SQL 语句中的相关结构:

创建选择查询,对应的是 SELECT

添加条件筛选,对应的是 WHERE

设置排序,对应的是 ORDER BY

设置分组与汇总,对应的是 GROUP BY

追加、更新、删除记录,对应的是 INSERT、UPDATE、DELETE

创建表,对应的是 CREATE TABLE

这也说明,Access 提供的是"看得见的操作界面",而 SQL 提供的则是"真正执行任务的底层逻辑"。用户虽然不一定直接看到 SQL,但 SQL 实际上始终在后台发挥作用。

比如,之前我们创建查询 order_total 时,如果右键点击该查询并选择 SQL View,就会看到 Access 自动生成的 SQL 代码。这个过程其实就像打开了一扇窗,让我们第一次真正看到:原来设计视图中的每一步操作,背后都能对应成一条具体的 SQL 语句。也正是通过这种方式,我们能够更清楚地理解查询到底是如何工作的,数据又是如何被提取、连接、分组和汇总的。

你将看到如下代码 ,这些代码是自动生成

SELECT Customers.FirstName, Customers.LastName, Sum(Orders.Quantity) AS QuantityOfSum, Sum(Orders.TotalAmount) AS TotalAmountOfSum

FROM Products INNER JOIN (Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID) ON Products.ProductID = Orders.ProductID

GROUP BY Customers.FirstName, Customers.LastName;

因此,学习 Access 不能只停留在"会点按钮、会用向导"的层面。前几章中,我们更多接触的是 Access 的"表面操作",也就是如何通过界面完成数据库对象的创建和使用;而从这一章开始,我们需要进一步看到这些操作背后的"SQL 逻辑"。只有理解了 SQL,才能真正明白数据库是如何组织数据、筛选数据、更新数据,并最终生成查询结果、窗体界面和报表输出的。

4.2 SQL 数据库管理工具介绍

SQL 数据库管理工具就是 可视化操作数据库的软件,核心作用是替代 / 辅助纯手写 SQL,降低操作难度;

之前我们使用 access 自带的数据库管理工具工具是 SQL Query ,但是它对初学者视乎并不友好。

如下所示,红色的线就是 写sql的区域。

我们可以使用dbeaver 开源软件来连接 access。

4.2.1 DBeaver 安装和配置

DBeaver 是一款开源的、多平台的数据库管理工具,支持SQL 开发、数据库管理、数据可视化等功能,适用于开发人员、数据库管理员(DBA)和数据分析师。

With DBeaver, you can manipulate your data as if working in a regular spreadsheet, create analytical reports from records across various data storages, and export information in the desired format. For advanced database users, DBeaver offers a powerful SQL editor, extensive administration features, tools for data and schema migration, database connection session monitoring, and much more.

它支持 几乎所有主流数据库,如 MySQL、PostgreSQL、Oracle、SQL Server、SQLite、MariaDB、IBM DB2、Sybase、Apache Hive、ClickHouse、MongoDB 。当然也包括 access 。

官网下载url:https://dbeaver.io/download/

帮助文档url: https://dbeaver.com/docs/

开源版本:DBeaver Community(免费)

商业版本:DBeaver PRO(付费,支持 NoSQL、云数据库、高级功能)

DBeaver 安装(windows)

1)下载 DBeaver Community (目前版本已经了 26)

2)运行安装程序 dbeaver-ce-x.x.x-win32.win32.x86_64.exe

3)选择安装路径,点击 Next

4)选择是否安装 JRE(默认选择)

5)点击 Install 进行安装

6)完成后,打开 DBeaver,开始使用

然后我们来配置 DBeaver

第一步 选择 菜单中的 Database ,并点击 New Database Connection

第二步 Select your database, 选择 MS access,并点击 Next

第三步 在 path 中选择 Access 的路径

如果配置过 username,和 password 需要填写,没有就为空,

第四步 点击 test Connection button ,测试并确认是否连接成功。

如果是第一次链接,dbeaver 会自动下载 access 驱动 (Ucanaccess )

如果链接成功,会提示 Connected

第五步 点击 Finish 。

在 DBeaver 左侧的导航区域中,会显示当前 Access 数据库的对象结构。此时,我们可以展开相应的目录,查看数据库中已经创建好的 Tables 和 Views。如果前面已经在 Access 中创建过客户表、订单表、商品表,或者建立过查询对象,那么在这里通常都可以看到对应的内容。

4.2.2 使用 DBeaver 操作 Access

完成 DBeaver 的安装与连接配置之后,我们就可以借助它来进一步查看和管理 Access 数据库中的内容了。相比 Access 自带的 SQL 窗口,DBeaver 提供了更清晰的界面和更直观的操作方式,因此对于初学者来说,会更容易理解数据库中的结构,也更方便练习 SQL。

从学习角度来看,使用 DBeaver 操作 Access 有一个很大的优势,那就是它让我们更容易把"可视化操作"和"SQL 语句"对应起来。在 Access 中,很多时候我们只是点击按钮、选择字段、设置条件,而在 DBeaver 中,我们可以直接看到并编写 SQL。这种方式有助于我们逐步理解:数据库并不只是一个界面工具,它背后真正起作用的,是 SQL 这套逻辑。

具体如下

SELECT [Customers].[CustomerID] , [Customers].[FirstName], [Customers].[LastName],

FROM [Customers]

WHERE [Customers].[PhoneNumber] ='555-0101'

自带有 字段联想功能 ,如果要在原来字段的基础上email 字段,系统会自动显示,很方便 。

4.3 Access 中常见的 SQL 语句分类

在学习 Access SQL 时,如果只是一条一条地记忆 SELECT、INSERT、UPDATE、DELETE,虽然也能上手,但从整体上看,理解还不够系统。

更常见、更规范的方式,是按照 SQL 的功能来分类。通常来说,SQL 语句可以分为 DQL、DML、DDL、DCL,有时还会提到 TCL。

三类最常见、最基础的语句类型:DQL、DML 和 DDL。

其中,DQL 主要用于查询数据,重点在于"把数据找出来、筛出来、排好序、分好组";

DML 主要用于操作数据,重点在于"向表中新增、修改和删除记录";

DDL 主要用于定义数据库对象结构,重点在于"创建表、修改表结构以及删除表"。

如果用一个比较形象的方式来理解:

DQL 是"看数据"

DML 是"改数据"

DDL 是"定结构"

在 Access 的实际学习中,最常接触的主要是 DQL、DML 和 DDL。至于 DCL 和 TCL,在 Access 中相对较少单独使用,但了解它们的概念仍然很有必要。

4.3.1 DQL:数据查询语言(Data Query Language)

DQL 主要用于从数据库中查询数据,其中最典型、最常见的语句就是 SELECT。

SELECT 用于从一个或多个表中提取数据,也是我们在 Access 中最常用的 SQL 语句之一。

  1. SELECT:基础查询

    SELECT 用于从一个或多个表中提取数据。

    例如:SELECT * FROM Customers;

    这条语句的含义是:从 Customers 表中选出所有字段和所有记录。

    notes: 但是请不要写成 "select * from"

    如果想显示全部的字段,那就每个字段都写一遍,如果一张表有50个字段,那就写 50个字段,而不是直接写 select *.因为如果写 select * from ,有新的字段加入或者减少,都有可能导致软件错误。

  2. WHERE:条件筛选

WHERE 用于设置查询条件,只返回满足条件的记录。

SELECT CustomerID, FirstName, LastName

FROM Customers

WHERE CustomerID = 1;

这表示只查询 CustomerID 等于 1 的客户记录。

也可以用于文本条件:

SELECT FirstName, LastName, PhoneNumber

FROM Customers

WHERE PhoneNumber = '555-0101';

  1. ORDER BY:排序
    ORDER BY 用于对查询结果进行排序。
    SELECT CustomerID, FirstName, LastName
    FROM Customers
    ORDER BY LastName ASC;

这表示按照姓氏升序排列。

如果想按编号降序排列,可以写成:

SELECT CustomerID, FirstName, LastName

FROM Customers

ORDER BY CustomerID DESC;

  1. GROUP BY:分组与汇总

GROUP BY 用于将具有相同值的记录归为一组,通常会和聚合函数一起使用,例如 SUM()、COUNT()、AVG()、MAX()、MIN()。

SELECT CustomerID, SUM(TotalAmount) AS TotalSales

FROM Orders

GROUP BY CustomerID;

这表示按照客户编号分组,并统计每位客户的总消费金额。

如果要统计每位客户的订单数量,也可以写成:

SELECT CustomerID, COUNT(OrderID) AS OrderCount

FROM Orders

GROUP BY CustomerID;

这表示统计每位客户对应的订单数。

  1. HAVING:分组后的条件筛选

当使用 GROUP BY 后,如果还需要对分组结果进一步筛选,就要使用 HAVING。

SELECT CustomerID, SUM(TotalAmount) AS TotalSales

FROM Orders

GROUP BY CustomerID

HAVING SUM(TotalAmount) > 10;

这表示只显示总消费金额大于 1000 的客户。

  1. INNER JOIN:内连接

INNER JOIN 用于连接两个有关系的表,并只返回两个表中匹配成功的记录。

SELECT Customers.FirstName, Customers.LastName, Orders.OrderID

FROM Customers

INNER JOIN Orders

ON Customers.CustomerID = Orders.CustomerID;

这表示将 Customers 表和 Orders 表按 CustomerID 进行连接,并只显示有订单记录的客户。

  1. LEFT JOIN:左连接

LEFT JOIN 用于返回左表中的所有记录,以及右表中匹配的记录。如果右表没有匹配项,也会显示左表数据,只是右表字段为空。

SELECT Customers.FirstName, Customers.LastName, Orders.OrderID

FROM Customers

LEFT JOIN Orders

ON Customers.CustomerID = Orders.CustomerID;

这表示显示所有客户,不管他们是否有订单。如果某个客户没有订单,那么 OrderID 会显示为空。

这类查询在实际工作中非常常见,因为它可以帮助我们找出"没有对应数据"的对象,例如"没有订单的客户"或"没有分配商品的订单"。

  1. 常用日期函数

在 Access SQL 中,日期相关函数也非常常用,尤其是在筛选订单日期、统计月份数据、计算时间差时。

(1)Year() / Month() / Day():提取日期中的年、月、日,返回当前系统日期和时间,返回当前系统日期

SELECT OrderID, Year(OrderDate),now(),date() AS OrderYear

FROM Orders;

SELECT OrderID, Month(OrderDate) AS OrderMonth

FROM Orders;

(2)DateAdd():对日期加减时间

SELECT OrderID, DateAdd('d', 7, OrderDate) AS NewDate

FROM Orders;

这表示在原订单日期基础上加 7 天。

(3)DateDiff():计算两个日期之间的差值

SELECT OrderID, DateDiff('d', OrderDate, Date()) AS DaysPassed

FROM Orders;

这表示计算订单日期距离今天已经过去了多少天。

在 Access 中,如果直接写固定日期,一般使用 # 包住日期值,例如:

SELECT [OrderID], [CustomerID], [ProductID], [OrderDate], [Quantity], [TotalAmount], [Status] FROM Orders o

WHERE o.OrderDate >= #2025-03-06#;

这表示查询 2025 年 3 月 6 日及之后的订单记录。

因此,从实际使用角度来看,DQL 不只是简单的 SELECT,而是一个完整的查询体系,通常会结合条件、排序、分组、连接以及日期函数来一起使用。

4.3.2 DML:数据操作语言(Data Manipulation Language)

DML 主要用于对表中的数据进行操作,也就是对记录进行新增、修改和删除。

在 Access 中,最常见的 DML 语句包括:INSERT、UPDATE 和 DELETE。

  1. INSERT:追加数据

INSERT INTO 用于向表中添加新记录。

INSERT INTO [Customers]

( [LastName],[FirstName], [Email], [PhoneNumber], [Address], [JoinDate])

VALUES

(

'Li', 'Ming',

'm.li@demo.com',

'86-13987654321',

'50 North Chang an Avenue, Beijing, China',

#2025-03-05#

);

这条语句会向 Customers 表中新增一条客户记录。

  1. UPDATE:更新数据

UPDATE 用于修改已有记录中的字段内容。

UPDATE Customers

SET PhoneNumber = '86-13419232329'

WHERE CustomerID = 4;

这表示将客户编号为 1 的电话号码更新为新的值。

  1. DELETE:删除数据

DELETE 用于删除表中的记录。

DELETE FROM Customers

WHERE CustomerID = 4;

这表示删除客户编号为 4 的记录。

因此,可以把 DML 理解为"直接操作表中数据内容"的语句集合。

如果说 SELECT 是"查看数据",那么 INSERT、UPDATE 和 DELETE 就是"改变数据"。

4.3.3 DDL:数据定义语言(Data Definition Language)

DDL 主要用于定义和管理数据库对象的结构,例如创建表、修改表、删除表等。

它操作的重点不是"表中的数据",而是"表本身的结构"。

在 Access 中,最常见的 DDL 语句包括:CREATE TABLE、ALTER TABLE 和 DROP TABLE。

  1. CREATE TABLE:创建表

CREATE TABLE 用于创建新表。

CREATE TABLE [Stores] (

StoreID\] AUTOINCREMENT PRIMARY KEY, \[StoreName\] TEXT, \[City\] TEXT, \[Address\] TEXT, \[PhoneNumber\] TEXT, \[ManagerName\] TEXT, \[OpenDate\] DATETIME, \[IsActive\] bit ); 这条语句创建了一个 Products 表,并定义了字段类型。 2. ALTER TABLE:修改表结构 ALTER TABLE 用于修改已有表的结构,例如添加新字段。 ALTER TABLE Products ADD COLUMN Stock INTEGER; 这表示在 Products 表中新增一个名为 Stock 的字段,字段类型为 INTEGER。 3. DROP TABLE:删除表 DROP TABLE 用于删除整张表。 drop table stores 这表示将 Products 表从数据库中删除。 因此,DDL 更关注数据库对象本身的创建与结构定义。 如果把数据库比作一栋房子,那么 DDL 做的事情就是"搭建房间、修改结构、拆除房间",而不是搬动房间里的具体物品。 ### 结束语 这里引用中国的一句古话 ""千里之行,始于足下" 意思是走千里远的路程,都是从迈开脚下第一步开始的。任何伟大事业或目标的成功,都必须由小到大、由少到多,脚踏实地地通过积累和实干才能完成。不论理想多远大,都需要从小事做起,扎实迈出第一步。 Access 与 SQL 的学习也是如此。看似复杂的数据库与编程世界,往往正是从一张表、一次查询、一条语句开始。真正的成长,不在于一下子掌握多少技巧,而在于是否愿意从基础出发,把工具变成能力,把知识变成方法。愿读者在由浅入深的学习中,逐步建立起自己的数据思维与开发意识,让技术不再高高在上,而真正成为解决实际问题的力量。

相关推荐
cyber_两只龙宝1 小时前
【MySQL】MySQL主从复制架构
linux·运维·数据库·mysql·云原生·架构
D.不吃西红柿1 小时前
【无标题】
数据库·database·ai编程·数据库设计
Dylan~~~2 小时前
PostgreSQL 数据库性能问题定位完全指南
数据库·postgresql
原来是猿2 小时前
MySQL数据库基础
数据库
江不清丶2 小时前
Text-to-SQL实战:从自然语言到数据库查询的智能数据分析Agent设计
数据库·sql·ai·数据分析
初次攀爬者2 小时前
Redis与数据库的数据一致性方案解析
数据库·redis·分布式
橘颂TA2 小时前
【MySQL】内置函数
数据库·mysql
八月瓜科技2 小时前
擎策·知海全球专利数据库 凭差异化优势 筑科技创新检索壁垒
大数据·数据库·人工智能·科技·深度学习·机器人
搜佛说2 小时前
sfsEdgeStore轻量级边缘计算数据存储适配平台
数据库·人工智能·物联网·边缘计算·iot