当前位置:松语文学 > 其他类型 >VC++_6.0程序设计从入门到精通最新章节 > VC++_6.0程序设计从入门到精通TXT下载
错误举报

第 68 章

  Control)功能于一体,充分体现了关系数据语言的特点和优点。

  1.综合统一

  SQL 语言集数据定义语言(DDL)、数据cāo纵语言(DML)、数据控制语言(DCL)的功

  能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、

  录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全xìng控制等一系列cāo作

  的要求,这就为数据库应用系统开发提供了良好的环境。另外,在关系模型中,实体和实体

  间的联系均用关系表示,这种数据结构的单一xìng带来了数据cāo作符的统一xìng,查找、chā入、

  删除、更新等任一种cāo作只需要一种cāo作符,从而克服了非关系系统因信息表示方式的多样

  xìng带来的cāo作复杂xìng。

  2.高度非过程化

  用SQL 语言进行数据cāo作,用户只需提出“做什么”,而不必指明“怎么做”。用户无需

  了解存取路径,存取路径的选择以及SQL 语句的cāo作过程由系统自动完成,这不但大大减轻

  了用户负担,而且有利于提高数据的独立xìng。

  枫叶文学网www.fywxw.com

  第12 章 数据库开发

  ·341·

  3.面向集合的cāo作方式

  SQL 语言采用集合cāo作方式,不仅查找结果可以是元组的集合,而且chā入、删除、更新

  cāo作的对象也可以是元组的集合。

  4.以同一语法结构提供两种使用方式

  SQL 语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机

  jiāo互的使用方式,用户可以在终端键盘上直接键入SQL 命令对数据库进行cāo作。作为嵌入式

  语言,SQL 语言能够嵌入到高级语言程序中,供程序员设计程序时使用。而在两种不同的使

  用方式下,SQL 语言的语法结构基本上是一致的。这种统一的语法结构提供两种不同使用方

  式的作法,为用户提供了极大的灵活和方便。

  5.语言简洁,易学易用

  SQL 语言功能极强、设计巧妙。完成数据定义、数据查询、数据cāo纵、数据控制的核心

  功能的动词只有9 个,即CREATE、DROP、ALTER、SELECT、INSERT、UPDATE、DELETE、

  GRANT、REVOKE,如表12-1 所示。而且SQL 语言语法简单,接近英语口语,因此容易学

  习和使用。

  表12-1 SQL 语言的动词

  SQL 功能 动词

  数据查询 select

  数据定义 create、drop、alter

  数据cāo纵 insert、update、delete

  数据控制 grant,revoke

  12.3.2 基本的SQL 语句

  SQL 语句虽然简单,但是非常灵活,且功能强大,这里不可能对其进行全面的介绍。本

  小节只对最常用的SQL 语句进行简单介绍。SQL 语句最常用的功能有数据查询、chā入记录、

  更新记录和删除记录。下面进行详细介绍。

  1.数据查询

  数据查询是数据库中最重要的cāo作,SQL 语句提供SELECT 语句进行数据的查询,该语

  句具有灵活的使用方式和丰富的功能,其一般格式如下:

  SELECT [ALL | DISTINCT] <目标列表达式> [, <目标列表达式> ]…

  FROM <表名或视图名> [, <表名或视图名> ]…

  [WHERE <条件表达式>]

  [GROUP BY <列名1> HAVING <条件表达式> ]]

  [ORDER BY <列名2> [ASC | DESC]]

  整个SELECT 语句的含义是,根据WHERE 子句的条件表达式,从FROM 子句指定的

  基本表或视图中找出满足条件的元组,再按SELECT 子句中的目标列表达式,选出元组中的

  属xìng值形成结果表。如果有GROUP 子句,则将结果按<列名1>的值进行分组,该属xìng的列

  枫叶文学网www.fywxw.com

  Visual C++ 6.0 程序设计从入门到精通

  ·342·

  值相等的元组为一个组,每个组产生结果表中的一条记录。通常会在每组中作用集函数。如

  果GROUP 子句带有HAVING 短语,则只有满足指定条件的组才会输出。如果有ORDER 子

  句,则结果还要按<列名2>进行排序,ASC 表示升序,DSEC 表示降序。下面举几个简单的

  例子(这里进行cāo作的数据库就是上节创建的数据库)。

  (1)查询表Contact 中的所有记录:

  select * from Contact

  (2)查询所有人的姓名:

  select Ncom from Contact

  (3)查询王明的电话和地址:

  select Telephone, Address from Contact where Ncom=’王明’

  (4)将表Personal 中所有人按年龄由小到大排序。

  select * from Personal order by Birthday desc

  2.chā入记录

  chā入记录使用的是INSERT 语句,一般格式如下:

  INSERT INTO <表名> [(<属xìng列1> [, <属xìng列2> ]…)]

  VALUES (<常量1> [, <常量2> ]…)

  INSERT 语句的功能是将新元组chā入指定表中,其中新记录属xìng列1 的值为常量1,属xìng

  列2 的值为常量2,依次类推。如果某些属xìng列在INTO 子句中没有出现,则新记录在这些

  列上将取空值。不过需要注意的是,在表定义时说明了NOT NULL 的属xìng列不能为空值,否

  则出错。下面是一个简单例子。

  往表Contact 中chā入一条记录:

  insert into Contact values(’11’, ’苏培’, ’62777098’, ’清华大学计算机系’)

  3.更新记录

  更新记录通过UPDATE 子句完成,一般格式如下:

  UPDATE <表名> SET <列名> = <表达式> [, <列名> = <表达式> ]…

  [WHERE <条件>]

  例如,如果要更改上面刚chā入的记录,则语句如下:

  update Contact set Ncom=’苏娟’, Telephone=’62788155’ where Ncom=’苏培’

  4.删除记录

  SQL 中用DELETE 子句实现删除记录的cāo作,一般格式如下:

  DELETE FROM <表名> [WHERE <条件>]

  例如,如果要删除前面chā入的记录,SQL 语句如下:

  delete from Contact where ID=11

  12.3.3 关系数据库的联合查询技术

  能够从多个表中选择和cāo作数据是SQL 的特色之一,这又叫做联合查询技术,它包括联

  枫叶文学网www.fywxw.com

  第12 章 数据库开发

  ·343·

  合查询和连接查询。

  1.联合查询

  联合查询是通过UNION 运算符实现的,它可以将多个SELECT 语句的查询结果合并,

  使之作为一个结果集合显示(各结果集的数据类型要相同)。UNION 的语法格式如下:

  SELECT_STATEMENT

  UNION [ALL] SELECT_STATEMENT [UNION [ALL] SELECT_STATEMENT]…

  例如,如果要显示出表Contact 和表Personal 中所有人的姓名,则SQL 语句如下:

  select Ncom from Contact union select Ncom from Personal

  2.连接查询

  通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别

  于其他类型数据库管理系统的一个标志。

  通常的连接语法格式为:

  FROM JOIN_TABLE JOIN_TYPE JOIN_TABLE [ON (JOIN_CONDITION)]

  其中,JOIN_TABLE 是连接cāo作的表名,JOIN_TYPE 是连接类型,它分为内连接、外连

  接和jiāo叉连接3 类。

  (1)内连接

  内连接(INNER JOIN)又分为等值连接、不等连接和自然连接3 种。等值连接在连接条

  件中使用“=”运算符比较被连接的列值,其查询结果中列出被连接表中的所有列,包括重

  复列;不等连接在连接条件中使用除“=”之外的其他比较运算符;自然连接使用“=”运算

  符比较被连接的列值,但查询结果中不包括重复列。

  (2)外连接

  外连接分为左外连接(LEFT OUTER JOIN 或LEFT JOIN)、右外连接(RIGHT OUTER

  JOIN 或RIGHT JOIN)和全外连接(FULL OUTER JOIN 或FULL JOIN)。与内连接不同的是,

  采用外连接时,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左

  外连接时)、右表(右外连接时)和两个表(全外连接时)中的所有数据行。

  (3)jiāo叉连接

  jiāo叉连接(CROSS JOIN)不带WHERE 子句,返回被连接的两个表所有数据行的笛卡

  尔积。

  12.4 ADO 基础知识

  在第1 节中介绍了以前的几种Visual C++连接数据库的技术。Visual C++虽然对数据库的

  支持很强大,功能也很全面,但是不管是先前的ODBC 还是DAO,再到后来的OLE DB,

  用Visual C++来开发数据库总是很麻烦,特别是其中的数据转换令初学者十分头疼。不过,

  等到ADO 技术开发出来以后,这些都变得容易了。

  枫叶文学网www.fywxw.com

  Visual C++ 6.0 程序设计从入门到精通

  ·344·

  12.4.1 ADO 的技术特点

  ADO 的全称是ActiveX Data Objects,它是微软公司为数据库应用程序开发的新接口。

  ADO 基于COM,提供编程语言可利用的对象,它不仅面向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 结构图

  ? 连接对象(Connection):用于与数据源的连接,以及处理一些命令和事务。

  ? 命令对象(Command):用于处理传递给数据源的命令。

  ? 记录集对象(Recordset):用于处理数据的表格集,如获取和修改数据。

  ? 域对象(Field):用于表示记录集中的列信息,包括列值以及其他信息。

  ? 参数对象(Parcomter):用于对传送给数据源的命令赋参数值。

  ? 属xìng对象(Property):用于cāo作在ADO 中使用的其他对象的详细属xìng。

  ? 错误对象(Error):用于获得连接对象所发生的详细错误

  松语文学免费小说阅读_www.16sy.com