第十三章:数据库技术

文章目录:

一:基础

1.概念

2.特点

3.常见数据库品牌

4.数据库应⽤系统

[4.1 C/S](#4.1 C/S)

[4.2 B/S](#4.2 B/S)

5.数据模型的分类

6.名词解析

7.关系运算

二:Access

1.基础

2.操作

[2.1 建立表](#2.1 建立表)

[2.2 维护表](#2.2 维护表)

[2.3 创建查询](#2.3 创建查询)

[2.4 创建窗体](#2.4 创建窗体)

[2.5 创建报表](#2.5 创建报表)

3.处理

[3.1 运算符](#3.1 运算符)

[3.2 表达式](#3.2 表达式)

[3.3 函数](#3.3 函数)

三:SQL

1.概念

2.DDL和DML

[2.1 DDL数据定义](#2.1 DDL数据定义)

[2.2 DML数据操作](#2.2 DML数据操作)

[2.2.1 增](#2.2.1 增)

[2.2.3 删](#2.2.3 删)

[2.2.4 改](#2.2.4 改)

[2.2.5 查](#2.2.5 查)

[a 语法](#a 语法)

[b 简单查询](#b 简单查询)

[c 分组查询](#c 分组查询)

[d 排序查询](#d 排序查询)

[e 连接查询](#e 连接查询)

3.关系数据库设计方法


可参考:Access数据库教案(Excel+VBA+Access数据库/SQL Server编程)SQL/MySQL数据库教案(入门必备)

一:基础

1.概念

阶段:数据库技术是数据管理的技术,经历了⼈⼯管理、⽂件系统管理和数据库系统3个阶段
    ⼈⼯管理阶段
        20世纪50年代中期以前
        没有进⾏数据管理的软件,计算机主要⽤于数值计算
        程序和数据放在⼀起,每个程序都有属于⾃⼰的⼀组数据,数据不单独保存,没有独⽴性
        数据不能在程序之间共享,数据冗余很⼤
    ⽂件系统阶段
        20世纪60年代中期以前
        数据以⽂件的形式⻓期保存在外存储器上,由操作系统统⼀管理,操作系统为⽤⼾提供了按名存取的存取⽅式
        ⽂件的逻辑结构与物理结构脱钩,程序与数据分离,数据与程序之间有了⼀定的独⽴性
        不同的应⽤程序可以共享⼀组数据,实现了数据以⽂件为单位的共享
        数据独⽴性差,数据冗余较⼤
    数据库系统阶段
        20世纪60年代后期之后
        它的出现解决了数据的独⽴性问题,实现了数据的统⼀管理,达到了数据共享的⽬的
        不同的应⽤程序通过数据库管理系统共享数据,满⾜了集中存储⼤量数据以⽅便众多⽤⼾使⽤的需求
        在数据库系统中,⽤⼾处理数据时不必关⼼数据是如何存储以及存储在何处的,只需要执⾏标准化的语句,具体的⼯作由数据库管理系统完成
        总之,数据库系统能够实现有组织地、动态地存储⼤量有关连的数据,能⽅便多个⽤⼾访问
        ⽬前,数据库系统成了各种计算机应⽤系统和信息系统不可或缺的核⼼和基础


术语
    数据
        是指存储在某一种媒体上能够识别的物理符号
        数据库的概念包括两个方面
            一是描述事物特性的数据内容
            二是存储在某一种媒体上的数据形式
        数据是数据库中存储的基本对象
    数据库:DataBase,DB
        数据库是⻓期存储在计算机外存上的有结构、可共享的数据集合,数据是数据库中存储的基本对象
        数据库中数据按照⼀定的数据模型描述、组织和存储,具有较小的冗余度、较⾼的独⽴性和可扩展性,并可为不同的⽤⼾共享
    数据库管理系统:DataBase Management System,DBMS
        DBMS是位于⽤⼾(或应⽤程序)和操作系统之间的系统软件,它与⽤⼾之间的接口称为⽤⼾接口
        是对数据库进⾏管理的软件系统,是数据库系统(DBS)的核⼼组成部分,为⽤⼾或应⽤程序提供访问数据库的⽅法
        DBMS的主要功能包括数据库的创建和维护、数据的组织、存储和管理、数据定义和数据操纵、数据库的事务管理和运⾏管理等
        数据库的⼀切操作,如查询、更新、插⼊、删除以及各种控制,都是通过DBMS进⾏的
        ⽬前常⽤的DBMS有Access、SQL Server、MySQL和Oracle等
    数据库系统:DataBase System,DBS
        是由硬件系统、数据库管理系统、数据库、数据库应⽤程序和数据库系统相关⼈员等构成的⼈机系统
        数据库系统并不单指数据库或数据库管理系统,而是指带有数据库的整个计算机系统,DBS > DB + DBMS
        数据库系统相关⼈员分三类,即数据库管理员、应⽤程序开发⼈员和最终⽤⼾
    数据库应用程序
        是指利用各种开发工具开发的、满足特定应用环境的数据库应用程序
        应用程序开发工具分两类
            一是用于开发客户机/服务器模式中的客户端程序,eg:Visual Basic、Visual C++等
            二是用于开发浏览器/服务器模式的服务端程序,eg:ASP.NET等
    数据库系统相关人员
        数据库系统相关人员是数据库系统的重要组成部分
        分三类人员
            数据库管理员
            应用程序开发人员
            最终用户
    数据库系统(DBS)
        数据库系统是由硬件系统、数据库、数据库管理系统、数据库应用程序、数据库系统相关人员等构成的人机系统
        数据库系统并不单指数据库或数据库管理系统,而是指带有数据库的整个计算机系统 DBS>DB+DBMS
        数据库系统的组成
        数据库系统特点
            ①采用一定的数据模型:数据结构化是数据库的主要特征之一,也是数据库系统与文件系统的本质区别
            ②最低的冗余度:数据冗余是不可避免的,但是数据库可以最大限度地减少数据的冗余
            ③数据独立性:数据独立性是数据与程序间的互不依赖性
            ④安全性
            ⑤数据完整性
    数据库应用系统
        数据库应用系统包括数据库、数据库管理系统、应用程序及其开发工具
        在进行数据库应用系统的开发时,通常需要两个团队:前端团队和后端团队
            前端团队负责设计与用户交互的界面
            后端团队负责业务逻辑的实现与数据库设计
        分类:C/S(客户机/服务器)、B/S(浏览器/服务器)
    云数据库
        指被优化或部署到"云端"的数据库,属于PaaS(平台及服务)
        常见的国产云平台有华为云、百度云、阿里云、腾讯云等
        优势
            ①管理便捷
            ②稳定可靠
            ③性能卓越
            ④性价比高

2.特点

数据库系统的主要特点有:采⽤⼀定的数据模型,有最低的冗余度、较⾼的数据独⽴性、较⾼的安全性和较好的数据完整性
    数据模型:在数据库中,数据按⼀定⽅式存储,按特定的数据模型组织数据
    最低冗余度
        数据冗余是指在数据库中数据的重复存放,不仅浪费了⼤量的存储空间,而且还会影响数据的正确性
        数据冗余不可避免,但数据库技术可以最⼤限度地减少数据的冗余,确保最低的冗余度
    数据独⽴
        有较⾼的数据独⽴性,处理数据时⽤⼾⾯对的是简单的逻辑结构,而不涉及具体的物理存储结构
        数据存储结构的变化尽量不影响⽤⼾程序的使⽤,使得应⽤程序保持不变
    安全性
        通过设置⽤⼾的使⽤权限以防⽌数据的⾮法使⽤,能防⽌数据的丢失
        在数据库被破坏时,系统有能⼒把数据库恢复到可⽤状态
    完整性:系统采⽤⼀些完整性检验以确保数据符合某些规则,保证数据库中的数据始终是正确的

3.常见数据库品牌

桌⾯型数据库:运⾏在个⼈计算机上,没有或只提供有限的⽹络功能的数据库,例如Access等
    举例:Access、Visual FoxPro、Excel等‌
    功能‌:适用于单机环境,提供有限的网络应用功能,数据安全性较弱,主要用于日常小型办公和简单的Web站点‌
    ‌适用场景‌:适合小型企业和个人使用,特别是在需要快速开发和部署的情况下‌


⽹络数据库:运⾏在⽹络操作系统上,具有强⼤的⽹络功能和分布式功能的数据库,例如SQL Server、MySQL、Oracle等
    举例:SQL Server、MySQL、Oracle等 
    功能‌:具有强大的网络功能和分布式功能,支持大规模数据存储和处理,提供完备的数据安全方案和备份恢复手段‌
    ‌适用场景‌:适合大容量数据和大容量网站的应用,特别是在需要高性能、高安全性和高可扩展性的场景中‌


云数据库
    云数据库是指被优化或部署到"云端"的数据库,属于PaaS(Platform as a Service,平台即服务)
    优点
        管理便捷 ⽆需关⼼DBMS的安装、部署等,不必管理运⾏数据库的物理计算机,这类⼯作由云端⾃动完成
        稳定可靠 云数据库存在多个镜像,发⽣故障⽴即切换,可以⾃动备份
        性能卓越 提供很强的I/O吞吐能⼒,⽀撑更⾼的并发请求,性能优于⾃建
        性价⽐⾼ 按需扩展,租⽤付费,价格低廉

4.数据库应⽤系统

数据库应⽤系统:数据库应⽤系统包括数据库、数据库管理系统、应⽤程序及其开发⼯具

4.1 C/S

概念
    客⼾机/服务器(Client/Server,C/S)模式具有两层结构,包括前端的应⽤程序和后台数据库
    前端的客⼾机上安装了专⻔的应⽤程序,完成接收、处理数据的⼯作,后台的数据库服务器主要完成数据的管理⼯作
    由于每个客⼾机都要安装应⽤程序,而客⼾机往往分布在不同的地⽅,因此维护、升级很不⽅便
    从应⽤的⻆度来说,C/S模式主要应⽤在基于⾏业的数据库应⽤系统中,例如Outlook Express、QQ、股票信息接收系统等


组成
    应⽤程序
        客⼾机上的应⽤程序开发⼯具很多,⽬前常⽤的由Visual Basic、Visual C++、Delphi和PowerBuilder
        服务器上的数据库通过数据库管理系统建⽴、维护和管理,应⽤程序通过SQL命令对数据库进⾏查询、更新、插⼊和删除等操作
    DBMS
        Microsoft Access,桌⾯型数据库管理系统,适⽤于中、小型数据库应⽤系统
        SQL Server,Microsoft公司开发的⾯向⾼端的数据库管理系统,适⽤于中、⼤型数据库应⽤系统
        Oracle,⽬前功能最强⼤的数据库管理系统,适⽤于⼤型数据库应⽤系统
        MySQL,开放源代码软件,最流⾏的关系型数据库管理系统之⼀,主要应⽤在Web领域

4.2 B/S

概念
    浏览器/服务器(Browser/Server,B/S)模式是C/S模式的⼀种特例
    B/S模式具有三层结构,包括前端的浏览器、中间的Web服务器和后台数据库
    从应⽤的⻆度上来说 ,B/S模式特别适合⾮特定的⽤⼾,例如Internet上的购物系统、订票系统以及在IE中收发电⼦邮件


组成
    在B/S模式中,前端的客⼾机上只需要安装Web浏览器,不需要开发和安装客⼾机应⽤程序,⽤⼾在客⼾端通过浏览器实现输⼊输出
    中间的Web服务器是连接客⼾端和后台数据库的桥梁,主要的数据计算和应⽤都在此完成
    后台的数据库服务器安装了数据库和数据库管理系统,主要完成数据的管理⼯作


说明
    把⼀些开源软件组合在⼀起,是⽬前流⾏的搭建Web应⽤平台的⽅式
    例如,Linux作为操作系统,Apache或Nginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器
    Web服务器上的⽹⻚由HTM和ASP⽂件组成,⽤⼾通过浏览器访问⽹⻚,ASP⽂件通过SQL命令对数据库进⾏查询
    在这种数据库系统中,开发技术主要有ASP/ASP.NET、PHP和JSP

5.数据模型的分类

概念
    数据模型(Data Model,DM)是对现实世界数据特征的抽象,是⽤来描述数据、组织数据和对数据进⾏操作的
    数据模型是数据库中数据的存储⽅式,是数据库系统的核⼼和基础


组成要素:数据结构、数据操作、数据的完整性约束条件


分类
    概念模型:用E-R图来描述实体-联系方法
        概念
            描述现实世界的概念模型
            实体-联系模型,常用于数据库系统的设计中
        符号
            ①实体:表示一个对象,使用矩形框
            ②属性
                用以描述实体或联系某方面的属性,使用椭圆形
                如果某特性是主键,则在该特性的名称下加上下划线
            ③码:唯一标识实体的属性集称为码
            ④实体型
            ⑤实体集
            ⑥联系
                描述了两个或更多实体之间相互如何关联,使用菱形框
                包括一对一、一对多和多对多的联系

    逻辑模型
        层次模型 
            ⽤树形结构来表⽰实体及实体间的联系,如1968年IBM公司推出的IMS(Information Management System)

        ⽹状模型 
            ⽤⽹状结构来表⽰实体及实体间的联系,如1969年CODASYL组织推出的DBTG

        关系模型:Access、SQL Server、Oracle和MySQL
            ⽤⼀组"⼆维表"表⽰实体及实体间的关系,其理论基础是IBM公司研究⼈员E.F.Codd在1970年代发表的⼤量论⽂
            关系模型最⼤的优点是简单,⼀个关系就是⼀个数据表格,⽤⼾容易掌握,只需要⽤简单的查询语句就能对数据库进⾏操作
            关系模型中⽤查表的⽅法查找数据,层次模型和⽹状模型中通过指针链查找数据,这是关系模型和其它两类模型的⼀个很⼤的区别

    物理模型

6.名词解析

关系:关系模型将数据组织成⼆维表的形式,这个⼆维表在数学上被称为关系,⼀个关系对应⼀张⼆维表
    基本表 
        基本表就是关系模型中实际存在的表
    查询表 
        查询表是查询结果或查询过程中⽣成的临时表
    视图
        视图是由基本表或其它视图导出的表
        视图是为了满⾜数据查询⽅便、数据处理简便和数据安全要求而设计的虚表,不对应实际存储的数据
        利⽤视图可以进⾏数据查询,也可以对基本表进⾏数据维护

关系模式:关系模式是对关系的描述,⼀般形式为"关系名(属性1, 属性2, ..., 属性n)"

记录:表中的⼀⾏称为⼀条记录,记录也称元组

属性:表中的⼀列称为⼀个属性,属性也称为字段,每个属性都有⼀个名称,称为属性名

关键字:⼜称为"键(Key)",表中的某个属性集,它可以唯⼀确定⼀条记录

主关键字:⼜称为"主键(Primary Key,PK)",⼀个表中可以有多个关键字,但在实际的应⽤中只能选择⼀个,被选⽤的关键字称为主关键字

值域:⼜称为"域",即属性的取值范围

范式
    关系模型要求关系必须是规范化的,即要求关系必须满⾜⼀定的规范条件,称为范式(Normal Form,NF)
    关系的最低规范化要求是第⼀范式(1NF),最⾼要求是第六范式(6NF),在⼀个实际可⽤的数据库中,通常应该满⾜2NF或3NF
    更⾼层的范式对关系有更好的约束,但会导致数据库的复杂程度增加、性能降低
    1NF
        必须:关系的每个分量必须是⼀个不可再分的数据项,即每个字段都必须是原⼦的
        可选:每个关系都应该设置⼀个主键,但也可以没有主键

联系:这⾥的联系,指的是"关系与关系之间的关系",即两张⼆维表之间的关系
    ⼀对⼀,记为1:1 A中的⼀条记录对应B中的⼀条记录,B中的⼀条记录也只对应A中的⼀条记录
    ⼀对多,记为1:n A中的⼀条记录对应B中的多条记录,B中的⼀条记录只对应A中的⼀条记录, 称为"从A到B的⼀对多关系"
    多对⼀,记为n:1 A中的⼀条记录只对应B中的⼀条记录,B中的⼀条记录对应A中的多条记录, 称为"从A到B的多对⼀关系"
    多对多,记为m:n
        A中的⼀条记录对应B中的多条记录,B中的⼀条记录也对应A中的多条记录
        ⼀个多对多的关系需要拆分成两个⼀对多的关系才能保存在数据库中

7.关系运算

传统的集合运算(集合运算符)
    并∪
    差-
    交∩
    笛卡尔积x 设集合a={a,b},集合b={0,1,2},则两个集合的笛卡尔积a×b={(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}


专门的集合运算(关系运算符)
    选择
        从关系模式中找出满足某条件的元组(行)组成一个新的关系的操作称为选择
        对应SQL中的"where"子句
    投影
        从关系模式中指定若干个属性(列)组成新的关系称为投影
        对应SQL中的"select"子句
    连接
        连接式关系的横向结合
        连接运算将两个关系模式拼成一个包含更多列的关系模式,生成新的关系中包含满足条件的元组
        对应SQL中的"join"子句
        等值连接:两个关系中,按照对应属性值等作为连接条件进行的连接为等值连接
        自然连接:去掉重复属性的等值连接为自然连接
    除

二:Access

1.基础

概念
    Access是⼀种关系型数据库管理系统,由Microsoft公司研制、随Office套件⼀起发⾏
    Access是⼀种桌⾯型的数据库管理系统,⽹络功能相对简单,使⽤⽅便,可以满⾜⽇常的办公需要
    Access的应⽤⾮常⼴泛,可⽤于中、小型的数据库管理,也可作为C/S或B/S模式中数据库服务器上的数据库管理系统
    它提供了⼀套完整的⼯具和向导,即使是初学者,也可以通过可视化的操作来完成⼤部分的数据库管理和开发⼯作
    对⾼级数据库系统开发⼈员来说,可以通过VBA(Visual Basic for Application)开发⾼质量的数据库系统


对象
    说明
        Access中包含的对象有表、查询、窗体、报表、宏、模块等,存放在数据库⽂件("*.accdb")中
        其中,基本表是数据库的基础,保存着数据库中的全部数据,其它对象只是Access提供的⼯具,⽤于对数据库进⾏维护和管理
    表(Table)
        表是数据库的核⼼和基础,存放着数据库中的全部数据信息,设计⼀个数据库的关键集中体现在建⽴基本表上
        表是⽤于保存数据的⼆维表格,是数据库中最基本的对象,没有表就没有其它对象,从本质上来说,查询是对表中数据的查询,窗体和报表也是对表中数据的维护
        ⼀个数据库中可以有多个表,表与表之间通常是有关系的,可以通过相关的字段建⽴关联
    查询(Query)
        查询就是将⼀个或多个表中符合条件的数据记录组成⼀个集合,并以表的形式保存,以便⽤⼾查看或编辑
        查询作为数据库中的⼀个对象保存后,可以作为窗体、报表或另⼀个查询的数据源
    窗体(Form)
        窗体提供了⼀种良好的⽤⼾操作界⾯,是维护数据库的⼀种最灵活的⽅式,窗体的数据来源可以是表,也可以是查询
        窗体最基本的功能是显⽰与编辑数据,⽤⼾可以对表(或查询)中的数据进⾏修改、添加、删除等操作
    报表( Report) 
        报表是专⻔⽤于打印输出的设计,它不但能提供完善的打印功能,而且还能对打印内容进⾏格式处理
        报表只是⼀种特定的显⽰⽅式,其中的数据不能直接进⾏修改,其实质就是版⾯的预览,⼀般⽤来查看报表的外观和版⾯的布局等
        与窗体⼀样,报表的数据源可以是⼀个或多个表,也可以是查询
    宏(Macro)
    模块(Module)

2.操作

2.1 建立表

说明:建⽴基本表的前提是确定表的结构,即确定表中各字段的名称、类型、属性等


字段类型
    类型
        ⽂本型 Text:⼜称为"短⽂本型",存储较短的⽂本,可保存1~255个字符
            不需要计算的数值数据都应设置为文本型,例如学号,身份证号码,电话号码等
            在Access中,文本型数据的单位是字符不是字节,一个英文字符算一个字符,一个汉字也算一个字符
        备注型 Memo:⼜称为"⻓⽂本型",存储较⻓的⽂本,最多可存储6.4万个字符
        数字型 Number:存储数值,包括字节(1个字节)、整形(2个字节)、单精度(4个字节)、双精度(8个字节)
        货币型 Currency:存储货币值,8个字节(系统固定的)
        编号型 AutoNumber:⼜称为"⾃动编号型",存储⾃动编号,4个字节(系统固定的)
        ⽇期型 Date/Time:⼜称为"⽇期/时间型",存储⽇期和时间,8个字节(系统固定的)
        是否型 Yes/No:存储逻辑型数据,1位(bit)(系统固定的)
        对象型 OLE Object:⼜称为"OLE对象型",可存储图像、声⾳等,不定⻓,最多可存储1GB的数据
    说明
        ①⽂本型数据⽤⼀对双引号或⼀对单引号括起来,⽇期型数据⽤⼀对"#"括起来
         是否型数据的值是True/False、Yes/No或On/Off,⽇期的格式⼀般为"YYYY/MM/DD"
        ②不需要计算的数值型数据都应设置为⽂本型,例如学⽣学号、⾝份证号码、电话号码等
         ⽂本型数据的单位是字符不是字节,不管是⼀个英⽂字符还是⼀个中⽂字符,都只算⼀个字符
        ③⾃动编号型⽤于对表中的记录进⾏⾃动编号,以确保记录的唯⼀性
         当添加⼀条新记录时,⾃动编号型字段的值⾃动产⽣,默认⾃动增加1,也可按设定的增量值增加或产⽣随机编号
        ④OLE对象⽤于存储如Word⽂档、Excel表格、图像、声⾳或其它⼆进制数据,最多可达1GB
         OLE对象只能在窗体或报表中使⽤对象框显⽰


字段属性
    说明:确定了字段的数据类型后,还应设定字段属性,才能更准确地确定数据的存储,不同的数据类型有不同的属性
    包括
        字段⼤小:⽤于设定⽂本型字段和数字型字段的⻓度,⽂本型字段⻓度为1~255个字符,数字型字段的⻓度由数据类型决定
        格式:⽤于设定字段的数据显⽰格式(除了"OLE对象型"),可从预定义字段格式的列表中选择,也可创建⾃定义格式
        默认值:即添加新记录时,⾃动加⼊到字段中的值,是/否型字段的默认值为"否(No)",数字型字段的默认值为0
        小数位数:可以设定小数的位数,只⽤于数字型和货币型数据
        标题:⽤于在窗体和报表中取代字段的名称
        有效性规则:字段的有效性规则⽤于检查字段中的输⼊值是否符合要求
        有效性⽂本:当数据不符合有效性规则时显⽰的信息
        索引:可⽤来确定某字段是否作为索引,索引可以加快对索引字段的查询、排序、分组等操作


表的建立
    ①确定表的结构:建立基本表的前提是确定表的结构,即确定表中各字段的名称、类型、属性等
    ②创建名称为xxx.accdb的"空数据库",默认由表1及其字段ID
    ③在表1的属性窗口中选择"设计视图",输入表的名称xxx,进入设计视图,删除ID字段,输入表xxx各个字段的信息
     字段大小以外的字段属性可以不要
    ④定义主键


创建表间关系:创建关系之前应先关闭已经打开的表

2.2 维护表

数据库的管理与维护主要就是表的管理与维护

输⼊数据 选定基本表,然后进⼊数据表视图,即可输⼊数据


修改结构:选定基本表,然后进⼊设计视图,即可修改表结构
         可以修改字段名称、字段类型和字段属性,可以对字段进⾏插⼊、删除、移动等操作,还可以重新设置主键
    注意
        ①表是数据库的核⼼,它的修改将会影响到整个数据库,因此在修改表的结构之前,应该进⾏仔细考虑
         在已设定了关系的数据库中进⾏修改,必须将相互关联的表同时进⾏修改,如果出现遗漏,将导致出错
         ⽤⼾在设计数据库时,有必要详细记录数据库的设计结构,以备⽇后恢复数据库的结构时使⽤
        ②打开的表或正在使⽤的表是不能修改的,要修改必须先将此表关闭
         如果是在⽹络中使⽤,必须要保证所有使⽤该表的⽤⼾都已退出才能进⾏修改
        ③修改字段名称不会影响到字段中存放的数据,但是会影响到⼀些相关的部分
         如果在查询、报表或窗体等对象中使⽤了这个更换名称的字段,那么在这些对象中也要进⾏相应的修改
        ④关系表中互相关联的字段是⽆法修改的,如果需要修改,必须先将关联去掉
         修改时,原来互相关联的字段都要同时修改,修改之后,再重新设置关联
        ⑤为了确保安全,修改之前最好做好数据库备份,以备修改出错之后恢复时使⽤

导⼊数据
    选定基本表→右键快捷菜单→[导⼊]命令→选择数据源
    可以从其它的Access数据库、XML⽂件、HTML⽂件、⽂本⽂件、Excel表格、SQL Server数据库等数据源导⼊数据

导出数据
    选定基本表→右键快捷菜单→[导出]命令→选择导出的⽂件格式
    可以把表中的数据导出为其它的Access数据库、XML⽂件、HTML⽂件、⽂本⽂件(.txt)、Excel表格等

其它操作:表的复制、删除、恢复和更名,在进⾏这些操作时,必须关闭有关的表,否则不能进⾏操作

2.3 创建查询

说明
    Access中可以在SQL视图中直接编写SQL语句创建查询,但直接输⼊SQL语句⾮常繁琐,容易出错
    因此,Access中提供了两种⾃动⽣成SQL语句的⼯具,可以使⽤向导创建查询和在设计视图中创建查询
    使⽤向导只能创建简单的查询,不能设置查询条件,也不能直接在两个表中进⾏查询


操作
    [创建]选项卡→[查询]组→[查询向导]命令
    [创建]选项卡→[查询]组→[查询设计]命令

2.4 创建窗体

说明
    窗体上可以放置各种控件,⽤于对表中记录进⾏添加、删除和修改等操作
    窗体也可以接受⽤⼾的输⼊或选择,并根据⽤⼾提供的信息执⾏相应的操作,调⽤相应的对象
    通常情况下,⼀个窗体中只显⽰⼀条记录的信息,⽤⼾可以利⽤窗体上的移动按钮或滚动条查看其它记录
    创建窗体的⽅法有两个:⼀是使⽤向导创建窗体,⼆是在设计视图中创建窗体


操作:[创建]选项卡→[窗体]组

2.5 创建报表

说明
    报表也是Access数据库的重要对象,主要⽤来把表、查询或窗体中的数据⽣成报表,供打印使⽤
    创建报表的⽅法有两个:⼀是使⽤向导创建报表,⼆是在设计视图中创建报表


操作:[创建]选项卡→[报表]组

3.处理

3.1 运算符

概念:运算符是表⽰实现某种运算的符号


分类
    算术运算符:+(加)、-(减)、*(乘)、/(除)、\(整除)、^(乘⽅)、mod(求余)
    字符运算符:&
    关系运算符:<、<=、<>、>、>=、between、like
        Like通常与?、*、#等通配符结合使用,主要用于模糊查询
        ?表示任何单一字符
        *表示零个、一个或多个字符
        #表示任何一个数字(0~9)
    逻辑运算符:not、and、or

    在表达式中,字符型数据通常用" ' "或" " "括起来,日期型数据用"#"括起来


说明
    ① "mod"是求余运算,例如"5 mod 3"的结果为2
    ② "\"是整除运算,例如"5 \ 3"的结果为1
    ③ "like"通常与"?"、"*"和"#"等通配符结合使⽤,主要⽤于模糊查询
      其中"?"表⽰任何单⼀字符,"*"表⽰零个或多个字符,"#"表⽰任何⼀个数字(0-9)
      例如,查找姓"张"的学⽣,则表达式为"姓名 like "张*"";查找不姓"张"的学⽣,则表达式为"姓名 not like "张*""
    ④ "between"通常与"and"搭配使⽤,表⽰"介于"
        3 between 1 and 10,结果为true;3 between 1 and 2,结果为false
        ?ab? between ?a? and ?c?,结果为true;?ac? between ?aa? and ?ab?,结果为false
    ⑤ "&"⽤于连接两个字符串,例如?abc?&?123?的结果为?abc123?

3.2 表达式

概念
    表达式由数据(变量(包括字段名称)、常量)和处理数据的⽅法(运算符、函数和圆括号)按⼀定的规则组成
    表达式通过运算后有⼀个结果,运算结果的类型由数据和运算符共同决定


应⽤
    ① 查询的SQL视图:即在SQL语句中使⽤,必须输⼊完整的表达式,也是表达式最主要的使⽤场合
    ② 查询的设计视图:在使⽤时,表达式最左边的字段名可以缺省
    ③ 字段有效性规则
        在设计表时,可以为字段输⼊⼀个表达式(有效性规则),⽤来指定该字段可接受的数据范围
        例如,为"成绩"字段输⼊⼀个表达式"[成绩] between 0 and 100",则"成绩"字段只能接受0~100之间的分数
        需要注意的是,字段名两边可以加"[]",between左边的"[成绩]"可以缺省


⽣成
    Access提供了表达式⽣成器,⽤于输⼊表达式
    [查询设计]选项卡→[查询设置]组→[⽣成器]

3.3 函数

内部函数
    date() :返回系统⽇期,例如,在2022年2⽉9⽇执⾏该函数,返回的结果为#2022-2-9#
    year(d) :返回⼀个⽇期型数据的年,其中"d"表⽰⽇期型数据,例如year(#2022-2-9#)返回的结果是2022(数字型)
    month(d):返回⼀个⽇期型数据的⽉,其中"d"表⽰⽇期型数据,例如month(#2022-2-9#)返回的结果是2(数字型)
    day(d) :返回⼀个⽇期型数据的⽇,其中"d"表⽰⽇期型数据,例如day(#2022-2-9#)返回的结果是9(数字型)


合计函数
    count(*) :统计记录的条数
    count(列名) :统计某⼀列值的个数(不统计空值)
    sum(列名) :计算某⼀列的和
    avg(列名) :计算某⼀列的平均值
    max(列名) :返回某⼀列的最⼤值
    min(列名) :返回某⼀列的最小值
    first(列名) :分组查询时,使⽤同⼀组中第⼀条记录在指定列上的值作为查询结果
    last(列名) :分组查询时,使⽤同⼀组中最后⼀条记录在指定列上的值作为查询结果

三:SQL

1.概念

Structured Query Language, SQL,是⼀种⾯向问题的、⾼度⾮过程化的操作关系数据库的⼯业标准语⾔


关系运算:SQL的基础是关系的集合运算,常⻅的有关系的投影、选择和连接等
    选择
        从关系中找出满⾜给定条件的那些元组称为选择,相当于从⽔平(⾏)⽅向抽取元组,即对关系进⾏⽔平分割
        对应SQL中的"where"⼦句
    投影
        从关系模式中挑选若⼲属性组成新的关系称为投影,相当于从垂直(列)⽅向进⾏的运算,即对关系进⾏垂直分割
            对应SQL中的"select"语句
    连接
        从两个关系的笛卡尔积中选择属性间满⾜⼀定条件的元组
        对应SQL中的"join"语句


执⾏SQL:在Access中,不能直接执⾏SQL语句,但是可以在查询视图中运⾏
    ① [创建]选项卡→[查询设计]命令,直接关闭弹出的对话框,此时建⽴了⼀个空查询
    ② 右键快捷菜单→[SQL视图]命令,或通过"[查询设计]选项卡→[结果]组→[SQL视图]命令",切换到SQL视图
    ③ 在SQL视图中直接输⼊SQL语句
    ④ 通过"[查询设计]选项卡→[结果]组→[运⾏]命令",执⾏查询

2.DDL和DML

2.1 DDL数据定义

概念
    Data Definition Language,数据定义语⾔
    ⽤于创建数据库和数据表,以及对表的结构进⾏编辑的语句


包括
    创建表:create table ...
    编辑表:alter table ...
        在表中增加一个字段 add column...
        修改字段的数据类型 alter column...
        在表中删除一个字段 drop column...
        创建字段的索引 create index...
        删除字段的索引 drop index...
    删除表:drop table ...

2.2 DML数据操作

概念:Data Manipulation Language,数据操纵语⾔
     ⽤于对表中保存的数据进⾏CRUD操作(增、删、改、查)的语句
     数据操纵语⾔包含两类语句,即数据查询语句select和数据更新语句insert、update、delete
     数据查询是数据库的核⼼操作,不论采⽤何种⼯具创建查询,Access都会在后台构造等效的select语句,执⾏查询实质就是运⾏相应的select语句
2.2.1 增
语法
	① insert into 表名 values(值1, 值2, ... , 值n)
	② insert into 表名(字段1, 字段2, ..., 字段m) values(值1, 值2, ..., 值m)
	③ insert into 表名(字段1, 字段2, ..., 字段n) ⼦查询


说明
	① "语法①"和"语法②"⼀次只能插⼊⼀条记录,"语法③"可⼀次插⼊多条记录
	② "语法①"中,必须指定每⼀个将被赋值的记录字段,并且要给出每⼀个字段的值
	③ "语法②"中,values后的值必须与表名后的字段⼀⼀对应,如果表中某个字段没有出现,则这些字段上取空值(NULL)
	④ ⾃动编号型(AutoNumber)字段的数据在插⼊时可以不指定
2.2.3 删
语法:delete from 表名 [where 条件]


说明
	① delete语句从表中删除满⾜条件的记录,如果没有where⼦句,则删除表中所有的记录
	② delete语句只删除了表中记录而不是删除表本⾝,删除表的语句是"drop table 表名"
2.2.4 改
语法:update 表名 set 字段1=值1, ..., 字段n=值n [where 条件]


说明
	① update语句更新和修改指定表中满⾜条件的记录,如果没有where⼦句,则修改表中所有的记录
	② update语句⼀次只能对⼀个表进⾏修改,有可能破坏数据库中数据的⼀致性
2.2.5 查
a 语法
语法
	① select [all|top|distinct] ⽬标列 from 表名(或查询)         基本部分,选择字段
	② [where 条件表达式]                                         选择满⾜条件的记录
	③ [group by 列名1 [having 过滤表达式]]                       分组并过滤
	④ [order by 列名2 [asc|desc]]                               排序
	
	
说明
	① select语句是数据查询语句,不会更改数据库中的数据
	② "语法①"是最基本的、不可缺少的,称为基本部分或主句,其它部分都是可以省略的,称为⼦句
	② 整个语句的功能
		根据where⼦句中的表达式,从from⼦句指定的表或查询中找出满⾜条件的记录,再按select⼦句中的⽬标列显⽰数据
		如果有group by⼦句,则按"列名1"的值进⾏分组,值相等的记录分在⼀组,每⼀组产⽣⼀条记录
		如果有group by⼦句且带有having短语,则只有满⾜过滤表达式的组才予以输出
                如果有order by⼦句,则查询结果按"列名2"的值进⾏排序
b 简单查询
投影
	概念:投影即将基本表在垂直⽅向上进⾏选择
	语法:select [all|top|distinct] ⽬标列 from 表或查询
	功能:从from⼦句指定的表或查询中找出满⾜条件的记录,再按照⽬标列显⽰数据
	说明
		①若⽬标列是"*",表⽰输出所有的字段
		 可以使⽤as⼦句来为字段指定别名,格式为"列名1 [as 别名1], ..., 列名n [as 别名n]"

		②from⼦句是必须的,不能缺省,格式为"from 表1,表2, ..., 表n"
		 当查询数据来⾃多个表并且列名有相同的情况出现时,应该使⽤"表名.列名"的格式

		③"all|top|distinct"称为"谓词(predicate)",缺省值是"all"
		 "top m"可以限定最多返回m条记录,例如"select top 1 * from 表"表⽰只返回第⼀条记录
		 "distinct"表⽰查询结果中不能出现重复的记录,如果有相同的记录只保留⼀条

		④⽬标列的列名可以是⼀个使⽤合计函数的表达式,常⽤的函数有count、sum、avg、max和min
		 果没有group by⼦句,则这些合计函数是对整个表进⾏统计,产⽣⼀条记录
		 如果有group by⼦句,则合计函数对分组进⾏统计,⼀组产⽣⼀条记录
		 
		 
选择
	概念:选择即将基本表在⽔平⽅向上进⾏选择
	语法:where 条件表达式
	功能:选择满⾜条件(使条件表达式返回逻辑真)的记录
	说明
	   ①where⼦句的条件表达式中不能使⽤合计函数
	   ②where⼦句也可⽤于建⽴多个表或查询之间的连接
		例如,select ... from 表1, 表2 where 表1.连接字段=表2.连接字段
c 分组查询
语法:group by 字段1[, ..., 字段m] [having 过滤表达式]


功能:对查询结果进⾏分组,即把某⼀列上值相同的记录分成⼀组,⼀组产⽣⼀条记录
     where子句用来选择记录, group by子句将所选择的记录分组, having子句确定需要输出的分组


顺序:select<字段名称> from<表明或查询>where<条件>group by<字段名称>having<条件>


说明
	①group by之后的字段称为"分组字段"
	 在使⽤了group by⼦句后,select中只能出现分组字段和合计函数

	②group by之后只有⼀个列时,相当于Excel中分类汇总的功能
	 例如,select avg(助学⾦) from students group by 性别
	 其中,性别就是"分类字段",avg就是"汇总⽅式"(求平均值),助学⾦就是"汇总字段"

	③group by之后有多个列时,分组时把在这些列上值相同的记录分在⼀组,相当于数据透视表的功能
	 例如,group by 专业, 性别,则只有专业和性别两个字段上都相同的值才会被分为⼀组

	④having后的过滤条件中⼀般要使⽤合计函数,而where后的条件不能出现合计函数
	 有group by⼦句时,having⽤来对分组后的结果进⾏过滤,否则having的作⽤等同于where⼦句
d 排序查询
语法:order by 字段1 [asc|desc], ..., 字段m [asc|desc]


功能:order by子句用于指定查询结果的排序顺序,asc表示顺序(可省略),desc表示降序


说明
    ①asc表⽰升序(从小到⼤),desc表⽰降序(从⼤到小),缺省是asc

    ②可以指定多个列作为排序关键字,即多关键字排序
      例如,order by 专业, 助学⾦ desc,表⽰查询结果先按专业升序,专业相同再按助学⾦降序
      专业是第⼀排序关键字(主关键字),助学⾦是第⼆排序关键字(次要关键字)

    ③order by后不能使⽤字段的别名
e 连接查询
语法
	select ... from 表1, 表2 where 表1.连接字段=表2.连接字段
	select ... from 表1 inner join 表2 on 表1.连接字段=表2.连接字段
	
	
功能:将表1和表2连接起来,形成⼀个新的、拥有两个表中的数据的临时表


说明
	① 当需要的数据分布在不同的表中时,就需要使⽤连接查询把它们连接起来
	② 如果不同的表中存在列名相同的情况,列名之前要加前缀,格式为"表名.列名"
	③ 不管表之间是⼀对⼀关系还是⼀对多关系,连接查询的语法都⼀摸⼀样
	④ "语法①"的功能和"语法②"完全相同

3.关系数据库设计方法

1.需要分析

2.概念设计
    (1)E-R模型
    (2)数据抽象

3.逻辑设计 新设计的数据库系统普遍采用支持关系数据模型的DBMS

4.物理设计

5.验证设计
相关推荐
霍格沃兹测试开发学社测试人社区13 分钟前
三大智能体平台对比分析:FastGPT、Dify、Coze 哪个更适合你?
大数据·软件测试·数据库·人工智能·测试开发
专注VB编程开发20年27 分钟前
.NET Core封装Activex Dll,向COM公开.NET Core组件
数据库·ui·.netcore·dll·com·activex
少年攻城狮1 小时前
Oracle系列---【Oracle中密码的策略如何设置】
数据库·oracle
小蒜学长1 小时前
疾病防控综合系统设计与实现(代码+数据库+LW)
前端·数据库·vue.js·spring boot·后端·oracle
少年的云和月(^~^)1 小时前
MySQL存储过程
数据库·mysql
TiDB_PingCAP1 小时前
唐刘:TiDB 的 2024 - Cloud、SaaS 与 AI
数据库·人工智能·ai·tidb·saas
yuanpan2 小时前
MongoDB中游标的使用
数据库·mongodb
我是單身你是狗2 小时前
Jmeter数据库
数据库·jmeter
数巨小码人3 小时前
PostgreSQL-WAL日志介绍(二)
数据库·postgresql
丁总学Java3 小时前
在 macOS 上,用命令行连接 MySQL(/usr/local/mysql/bin/mysql -u root -p)
数据库·mysql·macos