《数据库编程基础》PPT课件
合集下载
Visual Basic程序设计电子课件——第12章 数据库应用基础

(5)单击“显示”按钮,即可查看到SQL 查询语句,还可以复制、保存、清除查询。
18
12.3 数据控件的使用
1 . 数据控件概述
在Visual Basic中提供了两种与Jet数据库引擎
接口的方法,一种是Data控件,另一种是DAO对
第 十
象。
二
Visual Basic通过DAO和Jet引擎可以访问3类
6.0(OLEDB)”复选框,单击“确定”按钮。
第
(2)添加控件。分别添加Adodc控件和
十
二 DataGrid控件到窗体中,调整其大小,并设置
章 Adodc的Caption属性为“学生信息表”,设计的
窗体如下图所示。
32
第 十 二 章
33
(3)设置Adodc控件连接字符串。 ① 单击Adodc控件ConnectionString属性的 符号“…”,出现Adodc“属性页”对话框。 第 十 二 章
第
十
按学生信息表,在C盘根目录新建名为
二 章
Student.mdb的Access数据库,在该数据库中新建
表Stu,并将学生信息存入该表中,得到学生信息
表的结构 。
25
学生信息表
学号 姓 性 班级 生日 宿
电话
QQ
名别
舍
30521001 赵 男 管理 1988-8-8 一舍 86680011 12345678
第 的底部。当窗体大小改变时,该控件的长度也会随
十 之变化,但仍然位于窗体的底部。
二 章
(2)Caption——设置Data控件的标题。常用
来显示数据库记录指针的位置、数据库中的记录个
数等信息。
20
(3)Connect——指定所要连接数据库的类 型。其格式如下:
18
12.3 数据控件的使用
1 . 数据控件概述
在Visual Basic中提供了两种与Jet数据库引擎
接口的方法,一种是Data控件,另一种是DAO对
第 十
象。
二
Visual Basic通过DAO和Jet引擎可以访问3类
6.0(OLEDB)”复选框,单击“确定”按钮。
第
(2)添加控件。分别添加Adodc控件和
十
二 DataGrid控件到窗体中,调整其大小,并设置
章 Adodc的Caption属性为“学生信息表”,设计的
窗体如下图所示。
32
第 十 二 章
33
(3)设置Adodc控件连接字符串。 ① 单击Adodc控件ConnectionString属性的 符号“…”,出现Adodc“属性页”对话框。 第 十 二 章
第
十
按学生信息表,在C盘根目录新建名为
二 章
Student.mdb的Access数据库,在该数据库中新建
表Stu,并将学生信息存入该表中,得到学生信息
表的结构 。
25
学生信息表
学号 姓 性 班级 生日 宿
电话
名别
舍
30521001 赵 男 管理 1988-8-8 一舍 86680011 12345678
第 的底部。当窗体大小改变时,该控件的长度也会随
十 之变化,但仍然位于窗体的底部。
二 章
(2)Caption——设置Data控件的标题。常用
来显示数据库记录指针的位置、数据库中的记录个
数等信息。
20
(3)Connect——指定所要连接数据库的类 型。其格式如下:
VBA数据库编程 ppt

Non SQL Data
Video Other Directory Services
Mainframe and Legacy Data
VBA可访问的数据库有3种:
(1)JET数据库,即Microsoft Access。 (2)ISAM数据库,如:dBase,FoxPro等。 (3)ODBC数据库,凡是遵循ODBC标准的客户/服务器数据库。 如:Microsoft SQL Server、Oracle等
8.2 VBA数据库编程技术
(3)Text ODBC "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=文件路径; Extensions=asc,csv,tab,txt;" OLE DB "Provider= Microsoft.ACE.OLEDB.12.0;Data Source=文件路径; Extended Properties=""Text;HDR=Yes;FMT=Delimited""“ 这里,HDR=Yes表示第一行是标题。 提示: SQL 语法: " Select * From customer.txt "
10
8.1 VBA数据库编程技术简介
DAO访问数据库通用模板
’ 定义对象变量 Dim ws As Workspace Dim db As Database Dim rs As RecordSet
’ 通过Set 语句设置各个对象变量的值 Set ws = DBEngine.Workspace(0) ’ 打开默认工作区 Set db = ws.OpenDatabase(<数据库文件名>) ’ 打开数据库文件 Set rs = db.OpenRecordSet(<表名、查询名或SQL语句>) ’ 打开数据记录集 Do While Not rs.EOF ’ 利用循环结构遍历整个记录集直至末尾 …… ’ 安排字段数据的各类操作 rs.MoveNext ’ 记录指针移至下一条 Loop rs.close db.close Set rs = Nothing Set db = Nothing …… ’ 关闭记录集 ’ 关闭数据库 ’ 回收记录集对象变量的内存占有 ’ 回收数据库对象变量的内存占有
数据库编程基础1.ppt

2、 建立数据表 以建立一个如下结构的学生表为例:
(1)在“可视化数据管理器”窗口中执行“文件”菜单 中的“新建”命令(假设选择Microsoft Access,版本7.0 MDB)后,弹出如图13-4所示的对话框。
图13-4 输入数据库文件名
(2)在对话框中选择数据库文件保存的位置,并输入文 件名后(保存类型只能是 MDB)单击保存按钮,将打开 如图13-5所示的建立数据表窗口。
图13-7 3. 建立索引
“添加字段”对话框
单击“表结构”对话框的“添加索引”按钮,在弹出的对话 框中(如图13-8所示)输入索引名称,选择索引字段后,单 击“确定”按钮即完成了索引的建立过程。
图13-8 “添加索引”对话框
图13-9 “数据库”窗口
13.2.2 数据库的基本操作
右键单击表名,使用快捷菜单的打开,可打开如图 13-10所示的输入数据窗口 。
图13-5 建立数据表窗口 (3)右击数据库窗口,在弹出的菜单中选择“新建表” 命令,打开如图13-6所示的“表结构”对话框。
图13-6 “表结构”对话 框
( 4 )在“表结构”对话框中输入表名后,单击“添加字段” 按钮,在弹出的如图13-7所示的“添加字段”对话框中输入字 段名,选择字段类型(Text类型字段还需输入字段大小)。重 复此过程直至添加完所有字段后,单击“关闭”按钮。
可视化数据管理器 数据访问对象(DAO) 1、可视化数据管理器 使用可视化数据管理器建立的数据库是Access数据库 (类型名为.mdb),可以被Access直接打开和操作。在 VB环境下,执行“外接程序”菜单中的“可视化数据管 理器”命令,即可打开如图13-3所示的“可视化数据管理 器”窗口。
标签、图片框、图像框、检查框、列表框、组合框、 OLE控件。
数据库与程序设计数据库应用基础.ppt

第一章 数据库应用基础
1. 2 数 据 库 系 统 组 成
1.2.1 组成数据库系统的5个主要部分
1.数据库 数据库是某一组织或某一单位各种应用所需要保存和处理的数 据的集合,数据按照某一数据模型结构化地存放在数据库中,完 全地或部分地消除了数据的冗余。数据库中的数据能为用户共 享。 2.数据库管理系统(DBMS)
应用系统是指在数据库管理系统提供的软件平台上,结合 各领域的应用需求开发的软件产品。
第一章 数据库应用基础
1.2.2 数据库系统对软、硬件要求
1.硬件平台 (1)要有足够大的内存。 (2)要有足够大的外存,存放数据库的大量数据。
(3)要具有较高的通信能力,以提高数据传送率。 2.软件 (1)要有适合数据库系统功能要求的数据库管理系统软件。 (2)要有支持数据库管理系统的操作系统。 (3)高级语言及编译系统。 (4)开发工具。
自然连接运算的运算符: ∞ 自然连接运算的运算表达式:R1∞R2 例1.1写出查询年龄小于20岁学生的关系代数运算表达式。即 求满足条件为年龄小于20岁的选择操作。 σ Sage < 20(Student) 例1.2写出查询学生的姓名和所在系的关系代数运算表达式。 即求Student关系上学生姓名和所在系两个属性上的投影操作。 ΠSname,Sdept(Student)
第一章 数据库应用基础
3.属性 属性是指事物的某一方面的特征。 4.实体型 属性值的集合表示一个实体,而属性的集合表示一种 实体的类型,称为实体型。 5.实体联系 实体联系是指实体类型之间的联系,它反映了实体类 型之间的某种关联。 6.实体(型)间联系的种类: (1)一对一联系 。(2)一对多联系 。(3)多对多 联系 。
第一章 数据库应用基础
数据库基础知识ppt课件

事一地”的原则。 (2)避免在表之间出现重复字段。 (3)表中的字段必须是原始数据和基本数据元
素。 (4)用外部关键字保证有关联的表之间的联系。
42
2、设计步骤 利用Visual FoxPro来开发数据库应用系统,
可以按照以下步骤来设计。 (1)需求分析。 (2)确定需求表C (3)确定需求字段。 (4)确定联系。 (5)设计精确
2、考试内容:查询和表单(重点) 3、课程特点,分两方面:
基本命令和函数等(砖瓦) 程序设计(盖楼房)
2
序
教学方式:
课堂教学+实验 课堂教学:“多媒体演示文稿+实际操作演
示”,解决“能够做什么”的问题 上机实验:解决“如何做”的问题
3
Visual FoxPro基础知识
36
A
37
练习:
(12)在教师表中,如果要找出职称为“教 授”的教师,所采用的关系运算是A A.选择 B.投影 C.联接 D.自然联接
38
(10)有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是 A
A)自然连接 B)交 C)投影 D)并
39
1、关系数据库系统实现的专门关系运算包
(1)数据库
数据库是存储数据的仓库,数据库首先将数据进行分类,然后强 调数据之间的存储联系,使数据存储结构化。
一般而言,数据库由若干数据表构成, 各个表之间有联系。
班级管理数据库
学 学号 生 姓名 情 况 性别 表…
学号 学
姓名 生 成
性别 绩 …表
数据库减少了数据存储的冗余,加强了数据控制功能,使数据与 程序相对独立。
(5)关键字:属性或属性的组合,其值能够唯一地标识 一个元组。在Visual FoxPro中,主关键字和候选关键 字就起唯一标志一个元组的作用。
素。 (4)用外部关键字保证有关联的表之间的联系。
42
2、设计步骤 利用Visual FoxPro来开发数据库应用系统,
可以按照以下步骤来设计。 (1)需求分析。 (2)确定需求表C (3)确定需求字段。 (4)确定联系。 (5)设计精确
2、考试内容:查询和表单(重点) 3、课程特点,分两方面:
基本命令和函数等(砖瓦) 程序设计(盖楼房)
2
序
教学方式:
课堂教学+实验 课堂教学:“多媒体演示文稿+实际操作演
示”,解决“能够做什么”的问题 上机实验:解决“如何做”的问题
3
Visual FoxPro基础知识
36
A
37
练习:
(12)在教师表中,如果要找出职称为“教 授”的教师,所采用的关系运算是A A.选择 B.投影 C.联接 D.自然联接
38
(10)有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是 A
A)自然连接 B)交 C)投影 D)并
39
1、关系数据库系统实现的专门关系运算包
(1)数据库
数据库是存储数据的仓库,数据库首先将数据进行分类,然后强 调数据之间的存储联系,使数据存储结构化。
一般而言,数据库由若干数据表构成, 各个表之间有联系。
班级管理数据库
学 学号 生 姓名 情 况 性别 表…
学号 学
姓名 生 成
性别 绩 …表
数据库减少了数据存储的冗余,加强了数据控制功能,使数据与 程序相对独立。
(5)关键字:属性或属性的组合,其值能够唯一地标识 一个元组。在Visual FoxPro中,主关键字和候选关键 字就起唯一标志一个元组的作用。
数据库编程PPT课件

THANKS FOR WATCHING
感谢您的观看
Java
具有广泛的工业应用和 强大的企业级数据库支 持,如JDBC、 Hibernate等。
Node.js
基于JavaScript,适用于 构建实时应用和Web服 务,与数据库交互的库 如Sequelize、 Mongoose等。
数据库编程工具的使用
ORM框架
如Hibernate、Entity Framework等,提供对象与数据 库之间的映射关系,简化数据访
问操作。
数据迁移工具
用于数据转换、迁移和同步,如 Flyway、Liquibase等。
数据库管理工具
如MySQL Workbench、pgAdmin 等,提供可视化的数据库设计和查 询编辑器,方便数据库的管理和维 护。
05 数据库编程实践
数据库设计实践
数据库设计原则
遵循规范化原则,减少数 据冗余,提高数据一致性 和完整性。
NoSQL数据库的发展趋势
NoSQL数据库是一种非关系型数据库,它通过将数据存储 在键值对、文档、列族或图形等形式中,以简化数据模型 和查询复杂性。随着大数据和云计算的普及,NoSQL数据 库的应用越来越广泛。
NoSQL数据库的发展趋势包括:支持多种数据模型、支 持多种数据存储方式、支持多种数据访问方式等。这些发 展趋势使得NoSQL数据库能够更好地满足不同场景下的 需求。
等。
非关系型数据库的优缺点
高性能
非关系型数据库采用内存存储和 分布式架构,能够提供高性能 可以通过增加服务器数量来提高 整体性能。
非关系型数据库的优缺点
易用性
非关系型数据库操作简单,支持多种编程语言和框架,易于 集成和开发。
原理及应用(MySQL版)课件 第三章 数据库编程

■SET @name=" SCOtt " ;
■SELECT * FROM emp ■ WHERE UPPER(ename)=TRIM(UPPER(@name)) ;
■5)取子串函数
■ SUBSTRING(str,start,length)返回字符串str从start 始长度为length的子串。
■ 【例3-14】返回emp 中ename值以"S"开头的雇员信息。
、SYSDATE()4个函数作用相同 ,均返回当前系统的日
期时间,格式为"YYYY-MM-DD HH:MM:SS"。
■【例3-18】示例。
■SELECT CURRENT_TIMESTAMP(),LOCALTIME(),
■
NOW(),SYSDATE() ;
■【例3-19】上面例3-17也可用如下命令方式实现。 ■ SELECT ename 姓名,
■SELECT * FROM emp ■ WHERE UPPER(ename)=UPPER(@name) ;
■4)删除空格函数
■LTRIM(str)返回删除前导空格的字符串str; ■RTRIM(str)返回删除尾部空格的字符串str; ■TRIM(str)返回删除两侧空格的字符串str。
■【例3-13】示例。
comm字段的值 ,当comm字段值为NULL时 ,显示值为0
, 否则显示当前字段的值。
■SELECT ename,IF(comm IS NULL,0,comm) 奖金
■ FROM emp LIMIT 5;
■2)CASE()函数 ■ CASE 表达式
■ WHEN v1 THEN r1 ■ WHEN v2 THEN r2
RETURN 语句 ; END
■SELECT * FROM emp ■ WHERE UPPER(ename)=TRIM(UPPER(@name)) ;
■5)取子串函数
■ SUBSTRING(str,start,length)返回字符串str从start 始长度为length的子串。
■ 【例3-14】返回emp 中ename值以"S"开头的雇员信息。
、SYSDATE()4个函数作用相同 ,均返回当前系统的日
期时间,格式为"YYYY-MM-DD HH:MM:SS"。
■【例3-18】示例。
■SELECT CURRENT_TIMESTAMP(),LOCALTIME(),
■
NOW(),SYSDATE() ;
■【例3-19】上面例3-17也可用如下命令方式实现。 ■ SELECT ename 姓名,
■SELECT * FROM emp ■ WHERE UPPER(ename)=UPPER(@name) ;
■4)删除空格函数
■LTRIM(str)返回删除前导空格的字符串str; ■RTRIM(str)返回删除尾部空格的字符串str; ■TRIM(str)返回删除两侧空格的字符串str。
■【例3-13】示例。
comm字段的值 ,当comm字段值为NULL时 ,显示值为0
, 否则显示当前字段的值。
■SELECT ename,IF(comm IS NULL,0,comm) 奖金
■ FROM emp LIMIT 5;
■2)CASE()函数 ■ CASE 表达式
■ WHEN v1 THEN r1 ■ WHEN v2 THEN r2
RETURN 语句 ; END
java 课件 ppt

04
Java 常用类库
String 类和 StringBuffer 类
字符串处理类
•·
String 类: Java 中的基本 数据类型,用于表示字符串 。它提供了多种方法来操作 字符串,如连接、查找、替 换等。
StringBuffer 类: 用于处理 可变字符串。与 String 类相 比,StringBuffer 提供了更 高效的方法来修改字符串, 因为它在内存中直接修改字 符数组,而不是创建新的 String 对象。
07
Java 多线程编程
线程的创建和管理
继承Thread类
通过继承Thread类并重写run()方法, 可以创建新的线程类。
线程的启动和终止
使用Thread类的start()方法启动线程 ,使用interrupt()方法中断线程。
实现Runnable接口
通过实现Runnable接口并重写run() 方法,可以创建新的线程类。
IO 流和文件操作
01
数据输入输出类
02
•·
03
InputStream 类和 OutputStream 类: 用于读取和写入字节流。 InputStream 用于读取数据,OutputStream 用于写入数据。
04
FileReader 类和 FileWriter 类: 用于读取和写入字符流。 FileReader 用于读取文本文件,FileWriter 用于写入文本文件。
运算符和控制流
for循环
重复执行一段代码指定的次数。
while循环
只要条件为真,就重复执行一段代码 。
面向对象编程基础
类和对象 类是对象的模板,定义了对象的属性和方法。 对象是类的实例,具有类定义的属性和方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章 数据库编程基础
本章主要内容
1. 游标 2.动态SQL 3.存储过程 4.触发器
SQL的宿主使用
• SQL不仅可以作为独立的数据语言直接以交 互的方式使用;SQL还可以作为子语言嵌入 在宿主语言中使用,这里所说的宿主语言 就是指我们常见的高级程序设计语言,如C 语言等。
把SQL嵌入到宿主语言中使用必须要解决以 下三个方面的问题:
• 嵌入识别问题:宿主语言的编译程序不能识别
SQL语句,所以首要的问题就是要解决如何区分 宿主语言的语句和SQL语句;
• 宿主语言与SQL语言的数据交互问题:SQL语
句的查询结果必须能够交给宿主语言处理,宿主 语言的数据也要能够交给SQL语句使用;
• 宿主语言的单记录与SQL的多记录的问题:
宿主语言一般一次处理一条记录,而SQL常常处 理的是记录(元组)的集合,这个矛盾必须解决 。
INSENSITIVE说明用数据的临时拷贝来定义游标,所有对游标的 请求都反映在这个临时表上,因此这时的游标实际上是不允许修 改的; SCROLL说明可以用所有的方法来存取数据,允许删除和更新 (假定没有使用INSENSITIVE选项); FOR READ ONLY或FOR UPDATE说明游标为只读的或可修改的。 <SELECT-查询块>定义一个游标(文件),它的内容是<SELECT查询块>的查询结果(多个记录组成的临时表)。
利用游标进行删除和更新操作
• 在T-SQL中,CURSOR不仅仅可以用来浏 览查询结果,还可以用UPDATE语句修改 CURSOR对应的当前行或用DELETE命令 删除对应的当前行。
使用游标的UPDATE命令
UPDATE <表名> SET <列名>={<表达式>|NULL} [,<列名>={<表达式>|NULL}…] WHERE CURRENT OF <游标名>
Cursor
为了解决宿主语言一次只能处理一条记 录,而SQL语言一次处理多条记录的矛盾, 引入了Cursor的概念。相关的语句有:
DECLARE CURSOR OPEN FETCH CLOSE DEALLOCATE
DECLARE CURSOR语句的格式是:
DECLARE <游标名> [INSENSITIVE] [SCROLL] CURSOR FOR <SELECT-查询块> [FOR {READ ONLY|UPDATE [OF 〈列名〉[,〈列名〉…]]}]
使用游标的DELETE命令
DELETE FROM <表名> WHERE CURRENT OF <游标名>
2.动态SQL
如何解决嵌入识别问题?
• 为了区分主语言和SQL语句,为SQL语句加 一个识别前缀,常用前缀格式是: EXEC SQL
• 比如: EXEC SQL INSERT INTO 职工 VALUES('WH8','E20',1560)
• 计算机的编译系统如何识别这些前缀?
预编译技术
• 在编译之前首先将SQL语句转换为主语言的 合法函数调用或合法语句,这个过程称为 预编译。
OPEN语句的格式是:
OPEN <游标名>
该语句的功能是打开或启动指出的游标,该游标名是用 DECLARE CURSOR语句已经定义好的。执行该语句意味着执 行在DECLARE CURSOR语句中定义的SELECT查询,并使游 标指针指向查询结果的第一条记录。
从游标中读记录
FETCH [[ NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n ] FROM ] <游标名> [INTO :<主变量1>,:<主变量2> …]
使用游标的一个C语言程序段
… EXEC SQL BEGIN DECLARE SECTION char whnumb[5] char city[12] int wh_area EXEC SQL END DECLARE SECTION … EXEC SQL DECLARE c1 CURSOR FOR SELECT 仓库号,城市,面积 FROM 仓库 WHERE 面积 = :wh_area EXEC SQL OPEN c1 while ( SQLCA.sqlcode <> 100 ) { EXEC SQL FETCH c1 INTO :whnumb,:city,:wh_area … } EXEC SQL CLOSE c1 …
嵌入了SQL的应用程序的执行过程
如何解决宿主语言和 SQL语言的数据交换问题?
设立数据通讯区、引入主变量的概念 INCLUDE SQLCA 如:sqlca.sN DECLARE SECTION … 主变量说明 …
END DECLARE SECTION
主变量说明的例:
EXEC SQL BEGIN DECLARE SECTION ; char whnumb[5] char city[12] int wh_area
EXEC SQL END DECLARE SECTION;
使用主变量的例子:
UPDATE 仓库 SET 面积 = :wh_area WHERE 仓库号 = :whnumb ;
• 该命令的功能是删除由DECLARE说明的游标。该 命令不同于CLOSE命令,CLOSE命令只是关闭游 标,需要时还可以重新打开;而DEALLOCATE命 令则要释放和删除与游标有关的所有数据结构和 定义。
理解游标
与程序设计语言中的文件相对照:
– DECLARE CURSOR相当于说明了一个文件; – OPEN相当于打开文件; – FETCH相当于读一条记录; – CLOSE相当于关闭文件; – DEALLOCATE语句相当于删除文件。
该语句的功能是取出游标的当前记录并送入主变量,同时使游标指 针指向下一条记录(NEXT,或根据选项指向某条记录)。这里的游标必 须是已经说明并打开了的,INTO后的主变量要与在DECLARE CURSOR 中SELECT的字段相对应。
关闭游标
CLOSE <游标名>
释放游标
DEALLOCATE <游标名>
本章主要内容
1. 游标 2.动态SQL 3.存储过程 4.触发器
SQL的宿主使用
• SQL不仅可以作为独立的数据语言直接以交 互的方式使用;SQL还可以作为子语言嵌入 在宿主语言中使用,这里所说的宿主语言 就是指我们常见的高级程序设计语言,如C 语言等。
把SQL嵌入到宿主语言中使用必须要解决以 下三个方面的问题:
• 嵌入识别问题:宿主语言的编译程序不能识别
SQL语句,所以首要的问题就是要解决如何区分 宿主语言的语句和SQL语句;
• 宿主语言与SQL语言的数据交互问题:SQL语
句的查询结果必须能够交给宿主语言处理,宿主 语言的数据也要能够交给SQL语句使用;
• 宿主语言的单记录与SQL的多记录的问题:
宿主语言一般一次处理一条记录,而SQL常常处 理的是记录(元组)的集合,这个矛盾必须解决 。
INSENSITIVE说明用数据的临时拷贝来定义游标,所有对游标的 请求都反映在这个临时表上,因此这时的游标实际上是不允许修 改的; SCROLL说明可以用所有的方法来存取数据,允许删除和更新 (假定没有使用INSENSITIVE选项); FOR READ ONLY或FOR UPDATE说明游标为只读的或可修改的。 <SELECT-查询块>定义一个游标(文件),它的内容是<SELECT查询块>的查询结果(多个记录组成的临时表)。
利用游标进行删除和更新操作
• 在T-SQL中,CURSOR不仅仅可以用来浏 览查询结果,还可以用UPDATE语句修改 CURSOR对应的当前行或用DELETE命令 删除对应的当前行。
使用游标的UPDATE命令
UPDATE <表名> SET <列名>={<表达式>|NULL} [,<列名>={<表达式>|NULL}…] WHERE CURRENT OF <游标名>
Cursor
为了解决宿主语言一次只能处理一条记 录,而SQL语言一次处理多条记录的矛盾, 引入了Cursor的概念。相关的语句有:
DECLARE CURSOR OPEN FETCH CLOSE DEALLOCATE
DECLARE CURSOR语句的格式是:
DECLARE <游标名> [INSENSITIVE] [SCROLL] CURSOR FOR <SELECT-查询块> [FOR {READ ONLY|UPDATE [OF 〈列名〉[,〈列名〉…]]}]
使用游标的DELETE命令
DELETE FROM <表名> WHERE CURRENT OF <游标名>
2.动态SQL
如何解决嵌入识别问题?
• 为了区分主语言和SQL语句,为SQL语句加 一个识别前缀,常用前缀格式是: EXEC SQL
• 比如: EXEC SQL INSERT INTO 职工 VALUES('WH8','E20',1560)
• 计算机的编译系统如何识别这些前缀?
预编译技术
• 在编译之前首先将SQL语句转换为主语言的 合法函数调用或合法语句,这个过程称为 预编译。
OPEN语句的格式是:
OPEN <游标名>
该语句的功能是打开或启动指出的游标,该游标名是用 DECLARE CURSOR语句已经定义好的。执行该语句意味着执 行在DECLARE CURSOR语句中定义的SELECT查询,并使游 标指针指向查询结果的第一条记录。
从游标中读记录
FETCH [[ NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n ] FROM ] <游标名> [INTO :<主变量1>,:<主变量2> …]
使用游标的一个C语言程序段
… EXEC SQL BEGIN DECLARE SECTION char whnumb[5] char city[12] int wh_area EXEC SQL END DECLARE SECTION … EXEC SQL DECLARE c1 CURSOR FOR SELECT 仓库号,城市,面积 FROM 仓库 WHERE 面积 = :wh_area EXEC SQL OPEN c1 while ( SQLCA.sqlcode <> 100 ) { EXEC SQL FETCH c1 INTO :whnumb,:city,:wh_area … } EXEC SQL CLOSE c1 …
嵌入了SQL的应用程序的执行过程
如何解决宿主语言和 SQL语言的数据交换问题?
设立数据通讯区、引入主变量的概念 INCLUDE SQLCA 如:sqlca.sN DECLARE SECTION … 主变量说明 …
END DECLARE SECTION
主变量说明的例:
EXEC SQL BEGIN DECLARE SECTION ; char whnumb[5] char city[12] int wh_area
EXEC SQL END DECLARE SECTION;
使用主变量的例子:
UPDATE 仓库 SET 面积 = :wh_area WHERE 仓库号 = :whnumb ;
• 该命令的功能是删除由DECLARE说明的游标。该 命令不同于CLOSE命令,CLOSE命令只是关闭游 标,需要时还可以重新打开;而DEALLOCATE命 令则要释放和删除与游标有关的所有数据结构和 定义。
理解游标
与程序设计语言中的文件相对照:
– DECLARE CURSOR相当于说明了一个文件; – OPEN相当于打开文件; – FETCH相当于读一条记录; – CLOSE相当于关闭文件; – DEALLOCATE语句相当于删除文件。
该语句的功能是取出游标的当前记录并送入主变量,同时使游标指 针指向下一条记录(NEXT,或根据选项指向某条记录)。这里的游标必 须是已经说明并打开了的,INTO后的主变量要与在DECLARE CURSOR 中SELECT的字段相对应。
关闭游标
CLOSE <游标名>
释放游标
DEALLOCATE <游标名>