《VC语言6.0程序设计从入门到精通》第126章


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 ):用于与数据源的连接,以及处理一些命
小说推荐
返回首页返回目录