友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
VC语言6.0程序设计从入门到精通-第69部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
性带来的操作复杂性。
2 .高度非过程化
用 SQL 语言进行数据操作,用户只需提出“做什么”,而不必指明“怎么做”。用户无需
了解存取路径,存取路径的选择以及 SQL 语句的操作过程由系统自动完成,这不但大大减轻
了用户负担,而且有利于提高数据的独立性。
·340 ·
…………………………………………………………Page 352……………………………………………………………
第 12 章 数据库开发
3 .面向集合的操作方式
SQL 语言采用集合操作方式,不仅查找结果可以是元组的集合,而且插入、删除、更新
操作的对象也可以是元组的集合。
4 .以同一语法结构提供两种使用方式
SQL 语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机
交互的使用方式,用户可以在终端键盘上直接键入 SQL 命令对数据库进行操作 。作为嵌入式
语言,SQL 语言能够嵌入到高级语言程序中,供程序员设计程序时使用。而在两种不同的使
用方式下,SQL 语言的语法结构基本上是一致的 。这种统一的语法结构提供两种不同使用方
式的作法,为用户提供了极大的灵活和方便。
5 .语言简洁,易学易用
SQL 语言功能极强、设计巧妙。完成数据定义、数据查询、数据操纵、数据控制的核心
功能的动词只有 9 个,即 CREATE、DROP 、ALTER 、SELECT、INSERT、UPDATE 、DELETE 、
GRANT、REVOKE ,如表 12…1 所示。而且 SQL 语言语法简单,接近英语口语,因此容易学
习和使用。
表 12…1 SQL 语言的动词
SQL 功能 动词
数据查询 select
数据定义 create 、drop、alter
数据操纵 insert 、update 、delete
数据控制 grant ,revoke
12。3。2 基本的 SQL 语句
SQL 语句虽然简单,但是非常灵活,且功能强大,这里不可能对其进行全面的介绍。本
小节只对最常用的 SQL 语句进行简单介绍。SQL 语句最常用的功能有数据查询、插入记录、
更新记录和删除记录。下面进行详细介绍。
1.数据查询
数据查询是数据库中最重要的操作,SQL 语句提供 SELECT 语句进行数据的查询,该语
句具有灵活的使用方式和丰富的功能,其一般格式如下:
SELECT 'ALL | DISTINCT' 《 目标列表达式》 '; 《 目标列表达式》 ' …
FROM '; ' …
'WHERE '
'GROUP BY HAVING ''
'ORDER BY 'ASC | DESC''
整个 SELECT 语句的含义是,根据 WHERE 子句的条件表达式,从 FROM 子句指定的
基本表或视图中找出满足条件的元组,再按 SELECT 子句中的目标列表达式,选出元组中的
属性值形成结果表。如果有 GROUP 子句,则将结果按的值进行分组,该属性的列
·341 ·
…………………………………………………………Page 353……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
值相等的元组为一个组,每个组产生结果表中的一条记录。通常会在每组中作用集函数。如
果 GROUP 子句带有 HAVING 短语,则只有满足指定条件的组才会输出 。如果有 ORDER 子
句,则结果还要按进行排序,ASC 表示升序,DSEC 表示降序。下面举几个简单的
例子(这里进行操作的数据库就是上节创建的数据库 )。
(1)查询表 Contact 中的所有记录:
select * from Contact
(2 )查询所有人的姓名:
select Name from Contact
(3 )查询王明的电话和地址:
select Telephone; Address from Contact where Name=’王明’
(4 )将表 Personal 中所有人按年龄由小到大排序。
select * from Personal order by Birthday desc
2 .插入记录
插入记录使用的是 INSERT 语句,一般格式如下:
INSERT INTO '( '; '…)'
VALUES ( '; ' …)
INSERT 语句的功能是将新元组插入指定表中,其中新记录属性列 1 的值为常量 1,属性
列 2 的值为常量 2 ,依次类推。如果某些属性列在 INTO 子句中没有出现,则新记录在这些
列上将取空值。不过需要注意的是,在表定义时说明了 NOT NULL 的属性列不能为空值,否
则出错。下面是一个简单例子。
往表 Contact 中插入一条记录:
insert into Contact values(’11’; ’苏培’; ’62777098’; ’清华大学计算机系’)
3 .更新记录
更新记录通过 UPDATE 子句完成,一般格式如下:
UPDATE SET = '; = ' …
'WHERE '
例如,如果要更改上面刚插入的记录,则语句如下:
update Contact set Name=’苏娟’; Telephone=’62788155’ where Name=’苏培’
4 .删除记录
SQL 中用 DELETE 子句实现删除记录的操作,一般格式如下:
DELETE FROM 'WHERE '
例如,如果要删除前面插入的记录,SQL 语句如下:
delete from Contact where ID=11
12。3。3 关系数据库的联合查询技术
能够从多个表中选择和操作数据是 SQL 的特色之一,这又叫做联合查询技术,它包括联
·342 ·
…………………………………………………………Page 354……………………………………………………………
第 12 章 数据库开发
合查询和连接查询。
1.联合查询
联合查询是通过 UNION 运算符实现的,它可以将多个 SELECT 语句的查询结果合并,
使之作为一个结果集合显示(各结果集的数据类型要相同 )。UNION 的语法格式如下:
SELECT_STATEMENT
UNION 'ALL' SELECT_STATEMENT 'UNION 'ALL' SELECT_STATEMENT' …
例如,如果要显示出表 Contact 和表 Personal 中所有人的姓名,则 SQL 语句如下:
select Name from Contact union select Name from Personal
2 .连接查询
通过连接运算符可以实现多个表查询 。连接是关系数据库模型的主要特点,也是它区别
于其他类型数据库管理系统的一个标志。
通常的连接语法格式为:
FROM JOIN_TABLE JOIN_TYPE JOIN_TABLE 'ON (JOIN_CONDITION )'
其中,JOIN_TABLE 是连接操作的表名,JOIN_TYPE 是连接类型,它分为内连接、外连
接和交叉连接 3 类。
(1)内连接
内连接(INNER JOIN )又分为等值连接、不等连接和自然连接 3 种。等值连接在连接条
件中使用“= ”运算符比较被连接的列值,其查询结果中列出被连接表中的所有列,包括重
复列;不等连接在连接条件中使用除“= ”之外的其他比较运算符;自然连接使用“= ”运算
符比较被连接的列值,但查询结果中不包括重复列。
(2 )外连接
外连接分为左外连接(LEFT OUTER JOIN 或 LEFT JOIN )、右外连接(RIGHT OUTER
JOIN 或 RIGHT JOIN )和全外连接(FULL OUTER JOIN 或 FULL JOIN )。与内连接不同的是,
采用外连接时,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左
外连接时)、右表(右外连接时)和两个表(全外连接时)中的所有数据行。
(3 )交叉连接
交叉连接(CROSS JOIN )不带 WHERE 子句,返回被连接的两个表所有数据行的笛卡
尔积。
12。4 ADO 基础知识
在第 1 节中介绍了以前的几种 Visual C++连接数据库的技术。Visual C++虽然对数据库的
支持很强大,功能也很全面,但是不管是先前的 ODBC 还是 DAO ,再到后来的 OLE DB,
用 Visual C++来开发数据库总是很麻烦,特别是其中的数据转换令初学者十分头疼。不过,
等到 ADO 技术开发出来以后,这些都变得容易了。
·343 ·
…………………………………………………………Page 355……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
12。4。1 ADO 的技术特点
ADO 的全称是 ActiveX Data Objects ,它是微软公司为数据库应用程序开发的新接口。
ADO 基于 ,提供编程语言可利用的对象,它不仅面向 Visual C++ ,同时还提供面向其
他开发工具的应用,如 Visual Basic 、VJ 等,甚至还提供面向诸如 VBScript 、JavaScript 等脚
本语言的应用。ADO 的底层是 OLE DB,不仅能访问关系型数据库,也能访问非关系型数据
库。ADO 对 OLE DB 的包装是相当成功的,相对于 OLE DB 中众多的接口来说,ADO 对象
模型简明扼要,没有一点多余的东西,并且其功能还要比 DAO 强大得多。并且可以说到目
前为止,ADO 是目前最快的数据库访问的中间层。
12。4。2 ADO 的结构
ADO 的结构如图 12…19 所示。从图中可以看出,ADO 模型包含了 7 个对象和 4 个集合。
图 12…19 ADO 结构图
o 连接对象(Connection ):用于与数据源的连接,以及处理一些命令和事务。
o 命令对象(mand ):用于处理传递给数据源的命令。
o 记录集对象(Recordset ):用于处理数据的表格集,如获取和修改数据。
o 域对象(Field ):用于表示记录集中的列信息,包括列值以及其他信息。
o 参数对象(Parameter ):用于对传送给数据源的命令赋参数值。
o 属性对象(Property ):用于操作在 ADO 中使用的其他对象的详细属性。
o 错误对象(Error ):用于获得连接对象所发生的详细错误信息。
o 域集合(Fields ):记录集对象中包含了域对象的集合,域对象的集合中包含了所有代
表记录集中每列的域对象。
o 参数集合(Parameters ):命令对象中包含了参数对象的集合,参数集合中包含了应用
于命令对象的所有参数对象。
o 属性集合(Properties ):在连接对象、命令对象、记录集对象和域对象中都包含了属
性对象的集合,属性对象的集合中包含了这些对象的所有特性。
o 错误集合(Errors ):连接对象中包含了错误对象的集合,错误集合中包含了在一次连
接数据源时所产生的所有错误对象。
·344 ·
…………………………………………………………Page 356……………………………………………………………
第 12 章 数据库开发
12。5 ADO 的对象和集合
12。5。1 连接对象
连接对象即 Connection 对象,它代表与数据源之间的一个连接,其常用的方法和属性分
别如表 12…2 和表 12…3 所示。
表 12…2 连接对象的方法及其说明
方法 说明
Open 打开到数据源的连接
Execute 执行指定的查询、SQL 语句、存储过程或特定提供者的文本等内容
Close 关闭 Connection 对象,释放所有关联的系统资源
BeginTrans 启动新的事务
mitTrans 保存所有更改并结束当前事务,也可启动新事务
RollbackTrans 取消当前事务中所作的任何更改并结束事务,也可启动新事务
表 12…3 连接对象的属性及其说明
属性 说明
可以读写,其值可能为 AdXactmitRetaining 和 AdXactAbortRetaining 中任意
Attributes
一个
ConnectionTimeout 指示在终止尝试和产生错误前建立连接期间需等待的时间
mandTimeout 指示在终止尝试和产生错误前执行命令期间需等待的时间
ConnectionString 包含用来建立到数据源的连接的信息
DefaultDatabase 指示 Connection 对象的默认连接数据库
IsolationLevel 设置 Connection 对象的隔离级别
Mode 设置或返回当前连接上提供者正在使用的访问权限
Provider 设置或返回连接提供者的名称
Version 返回 ADO 执行的版本号
利用此对象,用户可以进行以下一些操作:
o 在进行连接前,通过 ConnectionString、ConnectionTimeOut 和 Mode 属性来配置建立
连接的信息、建立连接的超时限制和访问模式。
o 通过 CursorLocation 属性支持批处理方式。
o 通过 DefaultDatabase 属性设置缺省的连接数据库。
o 通过 IsolationLevel 属性设置 Connection 对象的隔离级别。
o 通过 Provider 属性设置 OLE DB 的提供者。
o 通过 Open()和 Close()方法分别来建立和关闭与数据源的连接。
o 通过 Execute()
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!