当前位置: 首页 > news >正文

cdn网站加速原理广州网站建设案例

cdn网站加速原理,广州网站建设案例,wordpress支持HTML么,wordpress安装ssl证书目录 第 1 章 概述 第 2 章 关系模型的基本概念 第 3 章 SQL 语言 第 4 章 中级 SQL 第 5 章 高级 SQL 第 6 章 关系代数语言 第 7 章 数据库设计和 ER 模型 第 8 章 关系数据库设计 第 13 章 事务 第 14 章 并发控制与恢复 第 1 章 概述 Database-management system…目录 第 1 章 概述 第 2 章 关系模型的基本概念 第 3 章 SQL 语言 第 4 章 中级 SQL 第 5 章 高级 SQL 第 6 章 关系代数语言 第 7 章 数据库设计和 ER 模型 第 8 章 关系数据库设计 第 13 章 事务 第 14 章 并发控制与恢复 第 1 章 概述 Database-management system (DBMS) 功能概述 是用于管理数据库的软件系统在数据库系统中起着核心作用负责数据的存储、检索、更新和管理等操作为用户和应用程序提供了对数据库进行操作的接口。与数据库系统应用的关系 在线事务处理Online transaction processingDBMS 支持大量并发用户执行实时事务如银行转账、电子商务交易等确保事务的原子性、一致性、隔离性和持久性ACID 特性。例如在电商平台的购物流程中用户下单、支付、库存更新等操作都需要 DBMS 保证事务处理的正确性和高效性。数据分析Data analyticsDBMS 可以存储和管理大量数据为数据分析提供基础。通过查询和分析工具用户可以从数据库中提取有价值的信息帮助企业做出决策。例如企业可以分析销售数据来了解市场趋势、客户需求等。与文件处理系统的对比 数据不一致性Data inconsistency文件处理系统中数据可能分散在多个文件中由不同的应用程序管理容易导致数据不一致。例如一个员工的信息在人事文件和财务文件中可能存在不同的记录。而 DBMS 通过集中管理数据采用一致性约束Consistency constraints等机制来确保数据的一致性。一致性约束Consistency constraintsDBMS 可以定义各种约束如主键约束、外键约束、检查约束等保证数据满足特定的规则。例如在学生成绩管理系统中成绩字段可以定义取值范围的检查约束防止录入不合理的成绩。数据抽象Data abstraction 物理层Physical level描述数据在存储设备上的实际存储方式包括文件结构、存储格式、索引等细节用户通常不需要关心这一层的具体实现。逻辑层Logical level定义数据的逻辑结构如关系模式、表结构、视图等用户可以通过逻辑层来操作数据而不必了解物理层的存储细节。视图层View level为用户提供了个性化的数据视图是从一个或多个基本表或其他视图导出的虚拟表用户可以通过视图进行数据查询和操作同时可以对用户隐藏部分敏感数据或复杂的数据结构。实例Instance与模式Schema 实例Instance是数据库在某一时刻的具体数据内容即数据库模式在特定时间点的取值会随着数据的插入、删除和更新而变化。例如在某一时刻学生数据库中实际存储的学生记录就是数据库实例。模式Schema 物理模式Physical schema描述数据库的物理存储结构如数据文件的组织方式、索引的创建等与硬件和操作系统密切相关决定了数据在物理存储上的布局。逻辑模式Logical schema定义数据库中数据的逻辑结构包括关系模式、属性、约束等是数据库设计的核心部分独立于物理存储细节应用程序主要通过逻辑模式来操作数据。子模式Subschema是逻辑模式的子集为特定用户或应用程序提供了个性化的数据视图隐藏了不必要的信息增强了数据的安全性和易用性。物理数据独立性Physical data independence指当数据库的物理存储结构发生改变时如更换存储设备、调整存储格式等应用程序不需要修改因为 DBMS 可以通过映射机制将逻辑模式与物理模式分离使得逻辑模式不受物理存储变化的影响。数据模型Data models 实体 - 关系模型Entity - relationship model用于描述现实世界中的实体及其之间的关系通过 E - R 图来直观表示是数据库概念设计的重要工具帮助设计人员理解和分析数据需求为数据库逻辑设计提供基础。关系数据模型Relational data model用二维表来表示数据和数据之间的关系是目前最常用的数据模型之一具有严格的数学理论基础关系代数和关系演算等理论为关系数据库的操作和优化提供了支持。半结构化数据模型Semi - structured data model适用于处理具有一定结构但不完全符合传统关系模型的数据如 XML、JSON 格式的数据能够灵活地表示复杂的数据结构常用于 Web 数据和文档数据的管理。对象 - 基于数据模型Object - based data model将数据和操作封装在一起以对象的形式进行处理更符合面向对象编程的思想适合处理复杂对象和对象之间的关系常用于工程设计、多媒体等领域。数据库语言Database languages 数据定义语言Data - definition language用于定义数据库的结构包括创建数据库、表、视图、索引等以及定义数据类型、约束、权限等。例如CREATE TABLE 语句用于创建表ALTER TABLE 语句用于修改表结构GRANT 语句用于授权等。数据操纵语言Data - manipulation language 过程性 DMLProcedural DML用户需要指定数据操作的详细步骤和过程如使用游标来逐行处理数据在一些早期的数据库系统或特定应用场景中使用。声明性 DMLDeclarative DML/ 非过程性 DMLnonprocedural DML用户只需声明要做什么而不需要指定如何做DBMS 会自动确定操作的执行方式如 SQL 中的 SELECT、INSERT、UPDATE、DELETE 语句更方便用户使用提高了开发效率。查询语言Query language是数据操纵语言的一部分主要用于从数据库中检索数据如 SQL 中的 SELECT 语句用户可以通过指定查询条件、连接操作、聚合函数等来获取所需的数据。数据定义语言Data - definition language中的具体内容 域约束Domain Constraints定义属性的取值范围如定义年龄属性为整数且在 15 到 45 之间确保数据的有效性和合法性。参照完整性Referential Integrity通过外键约束来保证相关表之间数据的一致性例如在学生选课表中学生学号必须是学生表中存在的学号课程号必须是课程表中存在的课程号。授权Authorization 读授权Read authorization决定用户是否有权读取数据库中的数据例如授予普通用户读取学生成绩表中成绩的权限但可能限制其查看其他敏感信息。插入授权Insert authorization控制用户是否可以向表中插入新数据例如只允许管理员向用户表中插入新用户记录防止非法用户随意添加数据。更新授权Update authorization指定用户对数据进行更新的权限范围如允许教师更新其所教授课程的成绩但不允许学生自行修改成绩。删除授权Delete authorization确定用户是否能够删除数据库中的数据例如只有管理员有权删除过期的订单记录以保证数据的安全性和完整性。元数据Metadata关于数据的数据包括数据库模式、表结构、索引、用户权限等信息由 DBMS 自动维护和管理用于帮助 DBMS 管理和操作数据同时也为开发人员和管理员提供了关于数据库结构和配置的信息。应用程序Application program与数据库设计Database design 应用程序Application program通过 DBMS 提供的接口与数据库交互实现各种业务功能如企业资源规划ERP系统、客户关系管理CRM系统等应用程序需要正确地调用数据库语言来操作数据库中的数据。数据库设计Database design 概念设计Conceptual design使用 E - R 模型等工具从用户需求出发识别和定义实体、属性和关系建立数据库的概念模型是数据库设计的第一步为后续设计提供了总体框架。规范化Normalization将关系模式分解为更合适的范式以减少数据冗余、避免数据更新异常等问题如将一个包含学生信息、课程信息和成绩的大表分解为学生表、课程表和选课表提高数据库的性能和可维护性。功能需求规范Specification of functional requirements明确数据库应支持的功能如数据存储、查询、更新、报表生成等为数据库设计和应用程序开发提供依据。物理设计阶段Physical - design phase根据逻辑设计和应用需求确定数据库的物理存储结构包括选择存储设备、确定文件组织方式、创建索引等以优化数据库的性能。 数据库引擎Database Engine 存储管理器Storage manager 授权和完整性管理器Authorization and integrity manager负责管理用户权限确保用户只能进行其授权范围内的操作同时维护数据的完整性检查数据是否满足各种约束条件。事务管理器Transaction manager协调和管理事务的执行确保事务的 ACID 特性处理事务的开始、提交、回滚等操作保证数据库在并发事务和系统故障情况下的正确性。文件管理器File manager负责管理数据库文件的存储、读取和写入操作包括数据文件和日志文件等确保数据在物理存储上的正确组织和访问。缓冲管理器Buffer manager管理内存中的数据缓冲区提高数据的读写效率减少磁盘 I/O 操作将经常访问的数据块缓存在内存中以加速数据的访问速度。数据文件Data files存储数据库中的实际数据是数据库的核心存储部分数据以特定的格式和结构存储在数据文件中。数据字典Data dictionary存储数据库的元数据包括数据库结构、用户信息、权限等是 DBMS 管理数据库的重要依据通过查询数据字典可以获取数据库的各种信息。索引Indices用于提高数据查询的效率通过创建索引可以快速定位和访问数据如在学生表的学号字段上创建索引可以加快根据学号查询学生信息的速度。查询处理器Query processor DDL 解释器DDL interpreter解析和执行数据定义语言DDL语句如创建表、修改表结构等操作将 DDL 语句转换为数据库内部的操作指令更新数据字典等相关信息。DML 编译器DML compiler对数据操纵语言DML语句进行编译和优化将 DML 语句转换为可执行的操作序列选择合适的执行计划提高数据操作的效率。查询优化Query optimization分析查询语句选择最优的查询执行计划考虑数据的分布、索引的使用、连接算法等因素以最小化查询执行的成本如时间和资源消耗。查询评估引擎Query evaluation engine根据优化后的执行计划执行查询操作从数据库中检索数据对数据进行处理和计算最终返回查询结果给用户或应用程序。 数据库架构Database Architecture与数据库应用架构Database Application Architecture 数据库架构Database Architecture包括集中式、并行、分布式等架构类型不同架构有不同的特点和适用场景。集中式架构将数据库系统集中在一台服务器上管理简单但扩展性有限并行架构利用多个处理器或节点并行处理数据提高处理能力分布式架构将数据分布在多个节点上实现数据的分布存储和处理提高可靠性和扩展性。数据库应用架构Database Application Architecture 两层架构Two - tier由客户端应用程序和数据库服务器组成客户端直接与数据库服务器通信适用于简单的应用场景但随着应用复杂度增加可能存在性能和维护问题。三层架构Three - tier包括客户端、应用服务器和数据库服务器客户端通过应用服务器间接访问数据库应用服务器可以处理业务逻辑、提供安全控制和负载均衡等功能提高了系统的灵活性、可维护性和安全性适用于复杂的企业级应用。应用服务器Application server在多层架构中起着关键作用负责处理业务逻辑、管理事务、提供数据缓存和安全控制等功能将客户端与数据库服务器分离提高了系统的性能和可扩展性同时便于系统的维护和升级。 数据库管理员DBA负责数据库的规划、设计、安装、配置、维护、监控、优化和安全管理等工作确保数据库系统的正常运行和高效性能需要具备数据库技术、操作系统、网络等多方面的知识是数据库系统中不可或缺的角色。例如DBA 需要定期备份数据库、优化查询性能、管理用户权限、处理系统故障等 第 2 章 关系模型的基本概念 关系Relation 定义一个关系就是一个二维表表中的行对应元组列对应属性。例如学生表student就是一个关系其中每行代表一个学生的信息一个元组每列代表学生的一个属性如学号、姓名等。特点关系中的任意两个元组不能完全相同但属性名允许重复。例如在学生表中不能有两个完全相同的学生记录所有属性值都相同但可以有多个列名为 “年龄”属性名重复的情况实际应用中一般不这样设计但从概念上是允许的。关系模式Relation schema 定义对关系的描述包括关系名、属性名、属性的数据类型等。例如学生关系模式可以表示为 student (sno CHAR (5), sname VARCHAR (20), ssex CHAR (2), sage INT, sdept VARCHAR (20))其中 “student” 是关系名“sno”“sname” 等是属性名“CHAR (5)”“VARCHAR (20)” 等是属性的数据类型。作用用于定义关系的结构是数据库设计的重要部分它决定了关系中可以存储哪些数据以及数据的类型和格式。关系实例Relation instance 定义关系模式在某一时刻的取值即二维表中的数据。例如在某一时刻学生表中实际存储的学生信息如学号为 “95001” 的学生姓名为 “张三” 等具体数据就是学生关系模式的一个关系实例。与关系模式的关系关系模式是相对稳定的结构定义而关系实例会随着数据的插入、删除和更新而变化。属性Attribute 定义二维表中的一列也称为字段。例如学生表中的 “学号”“姓名”“性别” 等都是属性每个属性都有其特定的数据类型和取值范围。属性的域属性的取值范围称为域例如 “性别” 属性的域可能是 {男女}“年龄” 属性的域可能是某个整数范围如 15 到 45 岁之间。元组Tuple 定义二维表中的一行也称为记录。例如学生表中一个学生的完整信息如学号 “95001”、姓名 “张三”、性别 “男”、年龄 “20”、所在系 “CS”就是一个元组。元组的唯一性在一个关系中不允许有两个完全相同的元组这是由关系的定义和实体完整性约束保证的。数据库模式Database schema 定义数据库中所有关系模式的集合。例如一个学校数据库可能包含学生关系模式、课程关系模式、选课关系模式等这些关系模式共同构成了该数据库的数据库模式。重要性数据库模式定义了数据库的整体结构和组织方式是数据库设计的核心它决定了数据库中数据的存储和管理方式以及数据之间的关系。数据库实例Database instance 定义数据库模式在某一时刻的取值即数据库中所有关系实例的集合。例如在某一时刻学校数据库中所有关系学生表、课程表、选课表等中的实际数据就是该数据库模式的一个数据库实例。动态性数据库实例会随着时间的推移由于数据的操作插入、删除、更新而发生变化而数据库模式相对稳定除非进行数据库结构的修改如添加或删除关系模式、修改关系模式的结构等。超键Superkey 定义能唯一标识关系中元组的属性或属性组。例如在学生表中{学号姓名} 可以作为一个超键因为通过学号和姓名的组合可以唯一确定一个学生元组假设姓名不重复{学号年龄性别} 也可以是超键只要它能确保唯一性。特点超键可能包含多余的属性只要能唯一标识元组即可。例如{学号姓名系别年龄} 是超键但如果学号本身就能唯一标识那么姓名、系别和年龄在这里就是多余的属性。候选键Candidate Key 定义不含多余属性的超键。例如在学生表中如果学号是唯一的那么学号就是一个候选键如果姓名和性别组合起来能唯一确定一个学生假设不允许同名同性别的学生存在那么 {姓名性别} 也是候选键。作用候选键用于确定关系中的主键在关系数据库设计中具有重要意义它可以保证数据的唯一性和完整性并且可以作为其他关系建立关联的依据如外键引用。主键Primary Key 定义从候选键中任选一个作为主键。例如在学生表中如果选择学号作为候选键那么学号就可以被指定为主键。特性主键具有唯一性不允许有重复值和非空性不能取空值它是关系中最重要的约束之一用于唯一标识关系中的每个元组确保数据的完整性和一致性并且在建立表之间的关联通过外键时起到关键作用。 第 3 章 SQL 语言 SELECT 语句 用于从表中查询数据基本语法为 SELECT [ALL|DISTINCT] {*|column1 [AS alias1], column2 [AS alias2],...}FROM table_name1 [AS alias1], table_name2 [AS alias2],...[WHERE condition][GROUP BY column1, column2,...][HAVING condition][ORDER BY column1 [ASC|DESC], column2 [ASC|DESC],...]例如查询学生表student中所有学生的信息SELECT * FROM student;查询学生表中年龄大于 18 岁的学生姓名和年龄SELECT sname, sage FROM student WHERE sage 18;INSERT 语句 用于向表中插入数据有两种常见形式 每次插入一条记录INSERT INTO table_name [(column1, column2,...)] VALUES (value1, value2,...);插入子查询的结果INSERT INTO table_name [(column1, column2,...)] subquery;例如向学生表中插入一条学生记录INSERT INTO student (sno, sname, ssex, sage, sdept) VALUES (95021, 李四, 男, 20, CS);DELETE 语句 用于从表中删除数据语法为DELETE FROM table_name [WHERE condition];例如删除学生表中学号为 95020 的学生记录DELETE FROM student WHERE sno 95020;UPDATE 语句 用于更新表中的数据语法为UPDATE table_name SET column1 value1, column2 value2,... [WHERE condition];例如将学生表中所有学生的年龄增加 1 岁UPDATE student SET sage sage 1;CREATE TABLE 语句 用于创建表语法为CREATE TABLE table_name (column1 data_type [constraint1], column2 data_type [constraint2],...);例如创建一个课程表courseCREATE TABLE course (cno CHAR(5) PRIMARY KEY, cname VARCHAR(50), credit INT);ALTER TABLE 语句 用于修改表的结构如添加列、修改列的数据类型、添加约束等语法为ALTER TABLE table_name [ADD|ALTER|DROP COLUMN|CONSTRAINT]...例如向学生表中添加一个新列emailALTER TABLE student ADD email VARCHAR(50); 第 4 章 中级 SQL 连接类型与第 3 章合并考察 内连接INNER JOIN返回两个表中满足连接条件的行语法为SELECT * FROM table_name1 INNER JOIN table_name2 ON condition; 或 SELECT * FROM table_name1, table_name2 WHERE condition;隐式内连接。例如查询学生和选课信息SELECT student.sno, sname, cno, grade FROM student INNER JOIN sc ON student.sno sc.sno;左外连接LEFT OUTER JOIN返回左表中的所有行以及右表中满足连接条件的行语法为SELECT * FROM table_name1 LEFT OUTER JOIN table_name2 ON condition;。例如查询所有学生及其选课信息包括未选课的学生SELECT student.sno, sname, cno, grade FROM student LEFT OUTER JOIN sc ON student.sno sc.sno;右外连接RIGHT OUTER JOIN返回右表中的所有行以及左表中满足连接条件的行语法为SELECT * FROM table_name1 RIGHT OUTER JOIN table_name2 ON condition;。全外连接FULL OUTER JOIN返回两个表中的所有行当某行在另一个表中没有匹配行时则另一个表的相应列为空值语法为SELECT * FROM table_name1 FULL OUTER JOIN table_name2 ON condition;。视图的定义与使用 创建视图CREATE VIEW语法为CREATE VIEW view_name [(column1, column2,...)] AS subquery [WITH CHECK OPTION];。例如创建一个计算机科学系学生的视图CREATE VIEW cs_student AS SELECT * FROM student WHERE sdept CS;查询视图SELECT FROM可以像查询基本表一样查询视图例如SELECT * FROM cs_student;更新视图INSERT INTO、UPDATE、DELETE FROM在一定条件下可以通过视图对基本表的数据进行更新但要注意视图定义的限制和相关约束。例如向视图中插入一条记录如果视图可更新INSERT INTO cs_student VALUES (95022, 王五, 男, 19, CS);事务与 17 - 19 章合并考察 事务的概念事务是用户定义的一组操作序列这些操作要么都执行要么都不执行是并发控制的基本单位具有原子性、一致性、隔离性和持久性ACID 特性。事务的操作 开始事务BEGIN TRANSACTION或START TRANSACTION。提交事务COMMIT。回滚事务ROLLBACK。例如在一个银行转账事务中先从一个账户扣除金额再向另一个账户增加金额若过程中出现错误则回滚整个事务保证数据的一致性。完整性的概念 数据库完整性是指数据的正确性、有效性和相容性包括实体完整性、参照完整性和用户定义完整性。SQL 中定义、修改各类完整性 主键PRIMARY KEY用于保证关系中主键的唯一性和非空性定义方式有列级约束和表级约束。例如在创建学生表时定义主键CREATE TABLE student (sno CHAR(5) PRIMARY KEY, sname VARCHAR(6), ssex CHAR(2), sage INT, sdept CHAR(10));列级约束或CREATE TABLE student (sno CHAR(5), sname VARCHAR(6), ssex CHAR(2), sage INT, sdept CHAR(10), PRIMARY KEY(sno));表级约束。外键FOREIGN KEY用于保证参照完整性定义方式为FOREIGN KEY (column_name) REFERENCES parent_table (parent_column_name)。例如在创建选课表sc时定义外键关联学生表CREATE TABLE sc (sno CHAR(5) FOREIGN KEY REFERENCES student(sno), cno CHAR(2), grade INT, PRIMARY KEY(sno, cno));检查约束CHECK用于定义用户自定义的完整性约束限制列的取值范围例如CREATE TABLE student (sno CHAR(5), sname VARCHAR(6), ssex CHAR(2) CHECK(ssex IN (男, 女)), sage INT CHECK(sage 15 AND sage 20), sdept CHAR(10));唯一约束UNIQUE用于保证列或列组合的唯一性例如CREATE TABLE student (sno CHAR(5) UNIQUE, sname VARCHAR(6), ssex CHAR(2), sage INT, sdept CHAR(10));非空约束NOT NULL用于保证列的值不能为空例如CREATE TABLE student (sno CHAR(5) NOT NULL, sname VARCHAR(6), ssex CHAR(2), sage INT, sdept CHAR(10));默认约束DEFAULT用于为列指定默认值例如CREATE TABLE student (sno CHAR(5), sname VARCHAR(6), ssex CHAR(2), sage INT DEFAULT 18, sdept CHAR(10));添加字段ALTER TABLE ADD COLUMN例如向学生表中添加一个新字段phoneALTER TABLE student ADD phone VARCHAR(20);删除字段ALTER TABLE DROP COLUMN例如从学生表中删除字段phoneALTER TABLE student DROP COLUMN phone;添加约束ALTER TABLE ADD CONSTRAINT例如为学生表的姓名字段添加唯一约束ALTER TABLE student ADD CONSTRAINT UK_student_sname UNIQUE(sname);删除约束ALTER TABLE DROP CONSTRAINT例如删除学生表中姓名字段的唯一约束ALTER TABLE student DROP CONSTRAINT UK_student_sname;添加索引CREATE INDEX例如为学生表的学号字段创建索引CREATE INDEX IX_student_sno ON student(sno);删除索引DROP INDEX例如删除学生表的学号索引DROP INDEX IX_student_sno ON student;SQL 数据类型和模式会用 数据类型 字符型如CHAR(n)定长字符型、VARCHAR(n)变长字符型、TEXT可存储任意长字符串等。统一码字符型如NCHAR(n)、NVARCHAR(n)、NTEXT等。整型如BIGINT、INT、SMALLINT、TINYINT等。实型如DECIMAL(p, s)精确数值型、NUMERIC(p, s)、REAL精确到 7 位有效数字、FLOAT精确到 15 位有效数字等。货币型如MONEY占 8 个字节保留 4 位小数、SMALLMONEY占 4 个字节保留 4 位小数等。日期时间型如DATETIME、SMALLDATETIME等。模式可以理解为数据库对象的命名空间用于组织和管理数据库对象但文档中未详细提及具体使用方式一般在数据库管理系统中有相关的操作和设置。授权GRANT、REVOKE、查看授权等 授权GRANT用于向用户或角色授予权限例如授予用户user1对学生表的查询权限GRANT SELECT ON student TO user1;也可以授予多个权限如GRANT SELECT, INSERT, UPDATE ON student TO user1;。收回权限REVOKE用于收回用户或角色已有的权限例如收回用户user1对学生表的插入权限REVOKE INSERT ON student FROM user1;。查看授权不同数据库系统查看授权的方式可能不同一般可以通过系统表或系统视图来查看例如在某些数据库中可以查询系统表来获取用户的权限信息但文档中未详细提及具体查询方式。 第 5 章 高级 SQL 函数 概念 函数是一段可重复使用的 SQL 代码用于执行特定的计算或操作并返回一个值。它可以接收参数在函数体中进行处理最后返回结果。函数在数据库中主要用于封装常用的计算逻辑提高代码的复用性和可维护性。例如在一个学生成绩管理系统中可能需要计算学生的平均成绩、总成绩等这些计算逻辑可以封装成函数方便在不同的查询或应用程序中调用。定义函数 语法 收起 sql CREATE FUNCTION function_name([parameter1 data_type1 [ default_value1], parameter2 data_type2 [ default_value2],...]) RETURNS return_data_type AS BEGIN -- 函数体包含变量声明、逻辑处理等 DECLARE variable1 data_type1; DECLARE variable2 data_type2; -- 执行计算或操作 SET variable1 ...; SET variable2 ...; -- 返回结果 RETURN result_expression; END; 例如创建一个计算两个整数之和的函数 收起 sql CREATE FUNCTION add_numbers(num1 INT, num2 INT) RETURNS INT AS BEGIN DECLARE result INT; SET result num1 num2; RETURN result; END; 调用函数 可以在查询中直接调用函数将函数的返回值作为查询结果的一部分。例如调用上述add_numbers函数计算 5 和 3 的和SELECT add_numbers(5, 3);也可以在其他 SQL 语句中使用函数如在SELECT语句的列表达式中使用函数。例如查询学生表中每个学生的年龄加上 5 后的新年龄SELECT sname, add_numbers(sage, 5) AS new_age FROM student; 二、过程 概念 过程也是一段可重复使用的 SQL 代码但它与函数不同过程主要用于执行一系列操作不返回值或可以通过输出参数返回多个值。过程在数据库中常用于处理复杂的业务逻辑如数据的批量处理、业务规则的实现等。例如在一个电商系统中处理订单的流程可能包括检查库存、更新订单状态、计算总价等一系列操作这些操作可以封装在一个存储过程中方便统一管理和调用。定义过程 语法 收起 sql CREATE PROCEDURE procedure_name [parameter1 data_type1 [ default_value1] OUTPUT, parameter2 data_type2 [ default_value2] OUTPUT,...] AS BEGIN -- 过程体包含变量声明、逻辑处理、事务控制等 DECLARE variable1 data_type1; DECLARE variable2 data_type2; -- 执行一系列操作 SET variable1 ...; SET variable2 ...; -- 如果有输出参数设置输出参数的值 SET parameter1 value1; SET parameter2 value2; END; 例如创建一个存储过程来更新学生的成绩 收起 sql CREATE PROCEDURE update_grade sno CHAR(5), cno CHAR(2), new_grade INT AS BEGIN UPDATE sc SET grade new_grade WHERE sno sno AND cno cno; END; 调用过程 使用EXEC或EXECUTE关键字来调用过程。例如调用上述update_grade存储过程来更新学号为 95001、课程号为 01 的学生成绩为 90EXEC update_grade 95001, 01, 90;如果过程有输出参数需要在调用时声明变量来接收输出值。例如创建一个存储过程来获取学生的平均成绩并通过输出参数返回 收起 sql CREATE PROCEDURE get_average_grade sno CHAR(5), average_grade DECIMAL(5, 2) OUTPUT AS BEGIN SELECT average_grade AVG(grade) FROM sc WHERE sno sno; END; 调用时 收起 sql DECLARE avg_grade DECIMAL(5, 2); EXEC get_average_grade 95001, avg_grade OUTPUT; SELECT avg_grade; 三、触发器 概念 触发器是一种特殊的存储过程它与表相关联当对表执行 INSERT、UPDATE 或 DELETE 操作时自动触发执行。触发器主要用于实现数据的完整性约束、审计等功能确保数据在插入、更新或删除时满足特定的业务规则。例如在一个员工工资管理系统中当更新员工工资时可以使用触发器来检查新工资是否在合理范围内或者记录工资更新的历史信息。定义触发器 语法 收起 sql CREATE TRIGGER trigger_name ON table_name [FOR|AFTER|INSTEAD OF] [INSERT, UPDATE, DELETE] AS BEGIN -- 触发器执行的SQL语句序列 -- 可以使用两个临时表inserted插入或更新后的数据和deleted删除前的数据 IF EXISTS (SELECT * FROM inserted WHERE... ) BEGIN -- 执行相关操作如检查数据、更新其他表等 PRINT 满足某种条件执行操作...; ROLLBACK TRANSACTION; -- 如果不满足条件可以回滚事务 END END; 例如创建一个在学生表插入数据后更新相关统计信息的触发器假设存在一个统计学生总数的表student_count 收起 sql CREATE TRIGGER update_student_count ON student AFTER INSERT AS BEGIN UPDATE student_count SET total_students total_students 1; END; 再例如创建一个防止学生表中性别输入错误的触发器 收起 sql CREATE TRIGGER check_gender ON student AFTER INSERT, UPDATE AS IF EXISTS (SELECT * FROM inserted WHERE ssex NOT IN (男, 女)) BEGIN PRINT 性别只能输入男或女; ROLLBACK TRANSACTION; END; 注意事项 一个表可以建立多个AFTER INSERT、AFTER DELETE、AFTER UPDATE触发器它们会按照创建的顺序依次执行。INSTEAD OF触发器比较特殊它会替代原有的操作INSERT、UPDATE、DELETE执行并且一个表或视图只能建立一个INSTEAD OF INSERT、INSTEAD OF DELETE、INSTEAD OF UPDATE触发器。在触发器中可以使用inserted和deleted临时表来获取操作前后的数据以便进行数据检查和处理。例如在UPDATE触发器中deleted表中保存更新前的数据inserted表中保存更新后的新数据。 综合题示例 定义函数计算学生的平均成绩 收起 sql CREATE FUNCTION calculate_average_grade(sno CHAR(5)) RETURNS DECIMAL(5, 2) AS BEGIN DECLARE avg_grade DECIMAL(5, 2); SELECT avg_grade AVG(grade) FROM sc WHERE sno sno; RETURN avg_grade; END; 定义过程根据学生学号更新其某门课程的成绩并返回更新后的平均成绩 收起 sql CREATE PROCEDURE update_grade_and_get_average sno CHAR(5), cno CHAR(2), new_grade INT, updated_average DECIMAL(5, 2) OUTPUT AS BEGIN UPDATE sc SET grade new_grade WHERE sno sno AND cno cno; SET updated_average dbo.calculate_average_grade(sno); END; 定义触发器在更新学生成绩时检查成绩是否在合理范围内0 - 100如果不在则回滚更新操作 收起 sql CREATE TRIGGER check_grade_range ON sc AFTER UPDATE AS IF EXISTS (SELECT * FROM inserted WHERE grade 0 OR grade 100) BEGIN PRINT 成绩必须在0到100之间请重新输入; ROLLBACK TRANSACTION; END; 第 6 章 关系代数语言 Cartesian product笛卡尔积 设关系有个属性个元组关系有个属性个元组则含有个属性个元组。例如关系和有元组有元组则的结果为。Selection选择 从关系中选择满足条件的元组记为其中为选择条件。例如从学生表中选择年龄大于 18 岁的学生。Projection投影 从关系中选择若干属性组成新的关系并去掉重复元组记为其中为要选择的属性集。例如从学生表中选择姓名和年龄两列。Join连接 条件连接将两关系按一定条件连接成一个新关系两关系可以没有公共属性若有公共属性则新关系含有重复属性。例如关系和连接条件为则连接结果为满足该条件的元组组合。自然连接将两关系按公共属性连接成一个新关系并去掉重复属性两关系至少有一个公共属性。例如关系和自然连接后会根据公共属性和进行连接并去除重复的和列。Rename重命名用于给关系或属性重新命名以便在复杂的关系代数表达式中更好地表示和理解。例如将关系重命名为。Union并 设关系和的结构完全相同则由属于或属于的元组组成。例如关系有元组关系有元组则的结果为。Set - difference差 设关系和的结构完全相同则由属于而不属于的元组组成。例如对于上述和的结果为。Intersection交 设关系和的结构完全相同则由既属于又属于的元组组成。例如对于上述和的结果为。 第 7 章 数据库设计和 ER 模型 基本 ER 模型的概念与 ER 图的设计 实体Entity客观存在并可相互区别的事物用矩形表示。属性Attribute实体所具有的某一特性用椭圆形表示与实体相连。联系Relationship实体之间的相互关系用菱形表示与相关实体相连菱形内注明联系的名称联系的类型可以是一对一1:1、一对多1:n或多对多m:n。将 ER 模型转换成关系模式的方法 实体型转换为关系模式将每个实体型转换为一个关系模式实体的属性就是关系模式的属性实体的码就是关系模式的主键。联系的转换 1:1 联系可以将联系合并到任意一个相关联的实体型对应的关系模式中也可以单独创建一个关系模式关系模式的属性包括两个实体型的主键和联系本身的属性主键可以任选一个实体型的主键。1:n 联系将联系合并到 n 方实体型对应的关系模式中在该关系模式中添加 1 方实体型的主键作为外键。m:n 联系必须转换为一个独立的关系模式关系模式的属性包括相关联的各实体型的主键和联系本身的属性主键为各实体型主键的组合。 第 8 章 关系数据库设计 1NF 概念若关系 R 的所有属性不能再分则。非规范化设计的问题 数据冗余数据在多个地方重复存储浪费存储空间可能导致数据不一致。插入异常例如在插入数据时由于某些属性不能为空而相关数据尚未存在导致无法插入。删除异常删除某条记录时可能会意外删除其他相关信息。更新异常更新数据时可能需要在多个地方同时更新否则会导致数据不一致。函数依赖的概念任给U 为属性集x、y 为 U 的子集如果对于 x 的每个值y 有唯一确定的值与之对应则称 x 决定 y或 y 函数依赖于 x记为。平凡函数依赖与非平凡函数依赖 平凡函数依赖如果是的子集则该依赖是平凡的如。非平凡函数依赖如果中至少有一个属性不在中则该依赖是非平凡的如。函数依赖集关系 R 中所有函数依赖的集合。最小正则覆盖一个函数依赖集的最小覆盖是指该函数依赖集的一个等价子集满足每个函数依赖的右边都是单个属性且没有多余的函数依赖。函数依赖集的闭包由给定函数依赖集 F 所能推出的所有函数依赖的集合记为。属性集的闭包设为属性集上的一组函数依赖则关于的闭包是指由所能推出的所有属性的集合。无损连接分解或称无损分解lossless decomposition将关系模式分解为多个关系模式如果对于的任何一个可能的关系实例都有成立则称这种分解是无损连接分解。依赖保持分解function dependency preserving设是关系模式上的函数依赖集是的一个分解如果则称分解是保持函数依赖的分解。BCNF 的定义、判断和分解 定义关系模式若对于中的每一个函数依赖都包含了的一个候选键则称属于 BCNF。判断方法逐一检查关系模式中的函数依赖看其是否满足 BCNF 的定义。分解方法如果关系模式不满足 BCNF可以将其分解为多个满足 BCNF 的子关系模式分解过程要确保是无损连接分解且保持函数依赖如果可能的话。3NF 的定义、判断和分解 定义若关系且它的每个非主属性都不传递依赖于主码则称。判断方法先判断关系是否属于 2NF然后检查非主属性是否存在传递依赖于主码的情况。分解方法如果关系模式不满足 3NF可以将其分解为多个满足 3NF 的子关系模式分解过程要确保是无损连接分解且保持函数依赖如果可能的话 第 13 章 事务 事务的概念与特性ACID 事务是用户定义的一组操作序列这些操作要么都执行要么都不执行是并发控制的基本单位。原子性Atomicity事务中的操作要么全部执行要么全部不执行。一致性Consistency事务必须使数据库从一个一致性状态变到另一个一致性状态。隔离性Isolation一个事务的执行不能被其他事务干扰。持久性Durability一旦事务提交其对数据库的修改将永久保存。事务的状态图 事务在执行过程中可能处于活动active、部分提交partially committed、失败failed、中止aborted、提交committed等状态。事务从活动状态开始正常执行完所有操作后进入部分提交状态若此时系统正常则进入提交状态若系统故障则进入失败状态并回滚到中止状态在部分提交状态若发生故障也会进入失败状态并回滚。事务调度schedule的概念 事务调度是指多个事务在并发执行时的执行顺序安排。例如假设有事务 T1 和 T2它们包含一系列操作事务调度确定了这些操作在时间上的执行先后顺序比如先执行 T1 的某些操作再执行 T2 的某些操作然后又执行 T1 的其他操作等。可恢复调度 / 级连回滚的概念 可恢复调度如果一个调度中当事务 Tj 读取了事务 Ti 修改过的数据后Ti 必须在 Tj 提交之前提交那么这个调度就是可恢复的。例如事务 T1 修改了数据 X 并写入数据库事务 T2 读取了 X那么只有在 T1 提交之后 T2 提交该调度才是可恢复的否则若 T1 回滚而 T2 提交就会出现数据不一致。级连回滚如果在一个调度中由于一个事务的失败导致一系列事务都需要回滚这种现象称为级连回滚。比如事务 T1 失败而事务 T2 依赖于 T1 的结果T3 又依赖于 T2 的结果那么 T1 的失败可能导致 T2、T3 都需要回滚。串行调度 / 并发调度 串行调度多个事务依次执行一个事务执行完后再执行下一个事务。例如有事务 T1、T2、T3串行调度可能是 T1 执行完所有操作后再执行 T2 的所有操作最后执行 T3 的所有操作。这种调度方式可以保证事务的隔离性但效率较低。并发调度多个事务在时间上重叠执行以提高系统的效率。比如 T1 在执行某些操作的同时T2 也在执行其部分操作然后 T1 和 T2 交替执行各自剩余的操作。但并发调度可能会出现数据不一致等问题需要通过并发控制机制来解决。冲突等价 / 冲突可串行化 / 冲突可串行化的判断 冲突等价如果两个调度在不考虑事务执行顺序的情况下对数据库中数据项的读写操作顺序相同那么这两个调度是冲突等价的。例如调度 S1 和 S2 中对于相同的数据项读写操作的先后顺序一致不考虑事务内部操作顺序则 S1 和 S2 冲突等价。冲突可串行化如果一个调度与某个串行调度冲突等价那么这个调度是冲突可串行化的。判断一个调度是否冲突可串行化可以通过构造优先图来分析如果优先图中不存在环则该调度是冲突可串行化的反之则不是。例如对于一个包含事务 T1、T2、T3 的调度通过分析它们对数据项的读写操作构建优先图若图中无环则该调度冲突可串行化。 第 14 章 并发控制与恢复 锁 / 共享锁 / 排它锁的概念 锁是一种并发控制机制用于控制多个事务对数据对象的并发访问。共享锁S 锁事务 T 对数据 A 加 S 锁其他事务只能再对 A 加 S 锁即其他事务只能读 A不能修改 A。例如多个事务可以同时对同一数据对象加共享锁以进行并发读操作。排它锁X 锁事务 T 对数据 A 加 X 锁其他事务不能再对 A 加锁即其他事务不能读取和修改 A。比如当一个事务对数据进行写操作时会加排它锁防止其他事务同时读写该数据。多粒度锁 封锁对象可以是属性列、元组、关系、整个数据库等封锁对象的大小称为封锁粒度。封锁粒度越小并发度越高但并发控制的开销越大。例如在一个数据库应用中如果对单个数据项加锁小粒度可以提高并发度但需要管理更多的锁开销较大而如果对整个表加锁大粒度并发度可能降低但锁管理开销较小。两阶段封锁协议 事务在修改数据 A 之前必须对其加 X 锁直到事务结束才释放事务在读取数据 A 之前必须对其加 S 锁直到事务结束才释放。遵循该协议可以解决丢失修改、不可重复读、读 “脏” 数据等数据不一致性问题。例如一个事务在更新数据时先获取排它锁在整个更新过程中一直持有该锁直到事务提交或回滚才释放这样可以保证数据的一致性和完整性。日志的概念 日志用来记录对数据库对象的所有更新操作包括事务开始、事务提交、数据修改等信息。日志在数据库恢复中起着关键作用通过日志可以重现事务的执行过程以便在系统故障后恢复数据库到一致性状态。例如当数据库系统崩溃后可以根据日志中的记录将数据库恢复到崩溃前的某个一致状态。Checkpoint 概念 Checkpoint 是数据库系统中的一个操作点在该点之前的所有更新操作都已经持久化到磁盘上。在恢复过程中可以从最近的 Checkpoint 开始减少恢复的工作量。例如系统定期设置 Checkpoint将内存中的数据页和日志记录写入磁盘之后发生故障时从最近的 Checkpoint 开始恢复而不需要从最早的事务开始。立即的数据库更新 立即的数据库更新是指事务对数据库的修改操作在事务执行过程中立即写入磁盘而不是等到事务提交时才写入。这种方式可以提高数据的实时性和持久性但可能会增加系统的 I/O 开销。例如在某些对数据实时性要求较高的应用中如银行交易系统可能会采用立即的数据库更新方式确保数据的及时更新和持久保存。恢复策略redo/undo 哪些事务 Redo 操作用于重新执行已经提交但在故障发生时尚未写入磁盘的事务操作以确保这些事务的更新能够持久化到数据库中。例如在系统故障恢复时如果发现某些事务已经提交但数据修改还未完全写入磁盘就需要根据日志进行 Redo 操作。Undo 操作用于撤销未完成未提交事务对数据库的修改使数据库恢复到事务开始前的状态。比如在事务执行过程中发生故障未提交的事务需要通过 Undo 操作回滚以保证数据的一致性。恢复策略会根据日志记录和事务的状态已提交、未提交等来确定哪些事务需要进行 Redo 或 Undo 操作从而将数据库恢复到一致性状态。
http://www.dnsts.com.cn/news/143508.html

相关文章:

  • 网站设计制作有哪些原因微信支付 wordpress
  • 电商网站要素物联网平台开源
  • 西安单位网站建设厦门seo网站建设费用
  • 做网站的集团设计网站最重要的是要有良好的
  • 织梦网站转移wordpress 修改邮箱
  • 金华网站建设团队工作室起名大全
  • 买网站多少钱百度 wordpress插件
  • 电商网站建设考试题海洋做网站
  • 沧县网站建设公司免费的网页设计成品详解
  • 区块链网站开发资金有谁用2008做网站服务器
  • 网站建设的上市公司网站建设排名优化
  • 洛阳做网站价格广州网站建设易企
  • 商业网站建设规划书网页小游戏4933
  • 漳州 网站建设公司哪家好网站功能介绍
  • 章丘做网站c2c模式
  • powershell做网站做毕设好的网站
  • 做目的旅游网站的中山外包网站设计
  • 石家庄公司网站如何制作外贸一年赚个100万难吗
  • 电影网站排名怎么做软件定制开发方案模板
  • 门户网站开发 系统介绍做网站 一年需要多少钱
  • 建筑网站招聘全县网站建设情况通报
  • 最好的做网站公司有哪些广州定制网站开发
  • 现在网站开发模式东莞房产信息网官网
  • 中国工商做年报网站做的网站空白了
  • 企业网站优化费用零基础学做网站教程
  • 品质好的网站制作wordpress主题升级
  • 潍坊公司注册网站电子商务物流网站建设规划方案
  • 做网站赚钱但又不想开公司外贸网站建设优化推广
  • 百度网站好评免费个人logo设计网站
  • 网站推广如何做的广州手机网站建设联系电话