重庆网站制作设计获客,上海工程公司,网站代码预览器,网站建设维护推广合同一、SQL语句根据其功能主要可以分为以下几大类#xff1a;
1. 数据查询语言#xff08;DQL, Data Query Language#xff09;
功能#xff1a;用于从数据库中检索数据#xff0c;常用于查询表中的记录。基本结构#xff1a;主要由SELECT子句、FROM子句、WHERE子句等组成…一、SQL语句根据其功能主要可以分为以下几大类
1. 数据查询语言DQL, Data Query Language
功能用于从数据库中检索数据常用于查询表中的记录。基本结构主要由SELECT子句、FROM子句、WHERE子句等组成。关键字SELECT。示例SELECT 字段名 FROM 表名 WHERE 条件;
2. 数据操纵语言DML, Data Manipulation Language
功能用于对数据库表中的数据进行增删改操作。主要形式 插入INSERT向表中添加新的记录。更新UPDATE修改表中的已有记录。删除DELETE从表中删除记录。 关键字INSERT、UPDATE、DELETE。示例 插入INSERT INTO 表名 (字段1, 字段2, …) VALUES (值1, 值2, …);更新UPDATE 表名 SET 字段名 新值 WHERE 条件;删除DELETE FROM 表名 WHERE 条件;
二、Oracle执行一条SQL的内部过程
Oracle数据库执行一条SQL语句的内部过程是一个复杂而精细的操作它涉及多个组件和步骤的协同工作。虽然具体实现细节可能会随着Oracle数据库版本的不同而有所变化但下面是一个简化和通用的过程描述涵盖了从SQL语句提交到结果返回的主要步骤
1. SQL语句提交
用户接口用户通过SQL*Plus、SQL Developer、PL/SQL Developer或其他数据库工具提交SQL语句。网络传输如果适用对于远程数据库SQL语句通过网络协议如TCP/IP发送到数据库服务器。
2. 解析
语法检查Oracle首先检查SQL语句的语法是否正确。语义检查然后它检查SQL语句中引用的表、列、数据类型等是否存在于数据库中以及用户是否有足够的权限访问它们。共享池查询Oracle会检查共享池Shared Pool中的库缓存Library Cache看是否已经存在相同或相似的SQL语句的执行计划。如果存在它可能会重用已有的执行计划这个过程称为SQL语句的软解析。如果不存在则需要进行硬解析。 官方的Oracle体系结构图可见实例是系统分配给Oracle的内存和一堆进程的结合体这里主要回顾执行sql语句会涉及到的几个部分SGA中的shared pool、database buffer cache、redo log bufferPGA中的Hash Area、Private SQL Area进程中的DBWn、LGWR、CKPT shared pool区域如上图包括 Library Cache、Data Dictionary Cache 和 Server Result Cache
Library Cache 主要用于储存可执行的SQL和PL/SQL代码Data Dictionary Cache 主要用于缓存数据字典的相关数据该缓存区域对所有服务进程共享Server Result Cache 主要用于保存SQL和PL/SQL执行产生的结果集
3. 硬解析
如果SQL语句需要硬解析Oracle会执行以下步骤
生成执行计划Oracle优化器根据统计信息、索引、表的物理结构等因素生成SQL语句的一个或多个可能的执行计划。选择最佳执行计划优化器会评估每个执行计划的成本并选择成本最低的执行计划。将执行计划存储在共享池中选择的执行计划会被存储在共享池中的库缓存中以便将来可以重用。
4. 执行
数据访问根据执行计划Oracle会访问数据库中的表、索引等对象获取需要的数据。排序和聚合如果SQL语句中包含ORDER BY、GROUP BY等子句Oracle会对数据进行排序和聚合操作。连接如果SQL语句涉及多个表的连接操作Oracle会按照执行计划中的指示执行连接操作。
5. 返回结果
结果集构建将查询结果构建成一个结果集。返回给客户端将结果集通过网络如果适用返回给发起查询的客户端。
6. 后处理
日志记录Oracle会记录与查询相关的日志信息如Redo日志、Undo日志等。资源清理释放查询执行过程中使用的资源如内存和临时空间。
需要注意的是这个过程是高度优化的Oracle数据库在设计和实现时考虑到了各种优化技术以最小化查询时间、最大化系统吞吐量并优化资源使用。此外随着Oracle数据库版本的更新内部实现和性能优化可能会有所不同。