《VB数据库编程技术实例》由会员分享,可在线阅读,更多相关《VB数据库编程技术实例(24页珍藏版)》请在金锄头文库上搜索。
1、VB 数据库编程技术在传统的数据库管理系统中,每个数据库管理系统都有自己的应用程序开发接口(API),为了解决此问 题,微软公司开发了 ODBC(Open DataBase Connectivity,即开放数据库互连)。ODBC 是一套开放数据库系统应用程序接口规范,目前它已成为一种工业标准,它提供了统一的数据 库应用编程接口(API),为应用程序提供了一套高层调用接口规范和基于动态连接库的运行支持环境。使用 ODBC开发数据库应用时,应用程序调用的是标准的ODBC函数和SQL语句,屏蔽了 DBMS之间的差 异,数据库底层操作由各个数据库的驱动程序完成。因此应用程序有很好的适应性和可移植性,并
2、且具备 了同时访问多种数据库管理系统的能力,从而彻底克服了传统数据库应用程序的缺陷。主要任务包括:建立与数据源的连接;向数据源发送 SQL 请求;断开与数据源的连接 数据源数据源是指任一种可以通过ODBC连接的数据库管理系统,它包括要访问的数据库和数据库的运行平 台。数据源名掩盖了数据库服务器或数据库文件间的差别,通过定义多个数据源,每个数据源指向一个服 务器名,就可在应用程序中实现同时访问多个DBMS的目的。数据源(Data Source Name,简称DSN)是驱动程序与DBS连接的桥梁,数据源不是DBS,而是用于表 达一个ODBC驱动程序和DBMS特殊连接的命名。在连接中,用数据源名来代
3、表用户名、服务器名、所 连接的数据库名等,可以将数据源名看成是与一个具体数据库建立的连接。数据源分为以下三类:(1) 用户数据源:用户创建的数据源,称为“用户数据源”。此时只有创建者才能使用,并且只能在所定 义的机器上运行。任何用户都不能使用其他用户创建的用户数据源。(2) 系统数据源:所有用户和在Windows NT下以服务方式运行的应用程序均可使用系统数据源。(3) 文件数据源:文件数据源是 ODBC 3.0 以上版本增加的一种数据源,可用于企业用户, ODBC 驱动程 序也安装在用户的计算机上。(与机器无关)二、SQL语言基础创建表格SQL 语言中的 create table 语句被用来
4、建立新的数据库表格。 Create table 语句的使用格式如下 create table tablename(column1 data type,column2 data type,column3 data type); 如果用户希望在建立新表格时规定列的限制条件,可以使用可选的条件选项:create table tablename(column1 data type constraint,column2 data type constraint, column3 data type constraint);举例如下:create table employee (firstname var
5、char(15), lastname varchar(20), age number(3), address varchar(30), city varchar(20);简单来说,创建新表格时,在关键词 create table 后面加入所要建立的表格的名称,然后在括号内顺次 设定各列的名称,数据类型,以及可选的限制条件等。注意,所有的SQL语句在结尾处都要使用“;符号。 使用 SQL 语句创建的数据库表格和表格中列的名称必须以字母开头,后面可以使用字母,数字或下划线, 名称的长度不能超过30个字符。注意,用户在选择表格名称时不要使用SQL语言中的保留关键词,如select, create,
6、insert 等,作为表格或列的名称。数据类型用来设定某一个具体列中数据的类型。例如,在姓名列中只能采用varchar或char的数据类型, 而不能使用 number 的数据类型。SQL 语言中较为常用的数据类型为:char(size):固定长度字符串,其中括号中的size用来设定字符串的最大长度。Char类型的最大长度为255 字节。 varchar(size):可变长度字符串,最大长度由size设定。 number(size):数字类型,其中数字的最大位数由size设定。Dat e:日期类型。number(size,d):数字类型,size决定该数字总的最大位数,而d则用于设定该数字在小数
7、点后的位数。 最后,在创建新表格时需要注意的一点就是表格中列的限制条件。所谓限制条件就是当向特定列输入数据 时所必须遵守的规则。例如, unique 这一限制条件要求某一列中不能存在两个值相同的记录,所有记录的 值都必须是唯一的。除unique之外,较为常用的列的限制条件还包括not null和primary key等Not null 用来规定表格中某一列的值不能为空。Primary key则为表格中的所有记录规定了唯一的标识符。查询简单的SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。完整结构:Select All/Distin
8、ctv目标表达式 目标表达式.From表名, 表名.Where条件表达式Group by 列名 lHavingv条件表达式Order by 列名 2 Asc/DescGroup by :按列名1的值进行分组,属性值相等的为一个组,如果带Having短句,表示只有满足指定条 件的才输出。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。SELECT nickname,emailFROM testtableWHERE name=张三(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全
9、局变量)等构成。1、选择所有列例如,下面语句显示 testtable 表中所有列的数据:SELECT *FROM testtable2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。例如:SELECT nickname,emailFROM testtable3、更改列标题 在选择列表中,可重新指定列标题。定义格式为:列标题=列名列名 列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题:SELECT 昵称=nickname,电子邮件=emailFROM testtable4、删除重复行SELEC
10、T 语句中使用 ALL 或 DISTINCT 选项来显示表中符合条件的所有行或删除其中重复的数据行,默 认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。5、限制返回的行数使用TOP n PERCENT选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n 是表示一百分数,指定返回的行数等于总行数的百分之几。例如:SELECT TOP 2 *FROM testtableSELECT TOP 20 PERCENT *FROM testtable(二)FROM 子句FROM子句指定SELECT语句查询及与查询相关的
11、表或视图。在FROM子句中最多可指定256个表或视 图,它们之间用逗号分隔。在 FROM 子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 使用下面语句格式加以限定:SELECT username,citytable.cityidFROM usertable,citytableWHERE usertable.cityid=citytable.cityid在 FROM 子句中可用以下两种格式为表或视图指定别名:表名 as 别名表名 别名(二)
12、FROM 子句FROM 子句指定 SELECT 语句查询及与查询相关的表或视图。在 FROM 子句中最多可指定 256 个表或视 图,它们之间用逗号分隔。在 FROM 子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在 usertable 和 citytable 表中同时存在 cityid 列,在查询两个表中的 cityid 时应 使用下面语句格式加以限定:SELECT username,citytable.cityidFROM usertable,citytableWHERE usertable.cityid=citytable.city
13、id在 FROM 子句中可用以下两种格式为表或视图指定别名:表名 as 别名表名 别名例如上面语句可用表的别名格式表示为:SELECT username,b.cityidFROM usertable a,citytable bWHERE a.cityid=b.cityidSELECT 不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 例如:SELECT a.au_fname+a.au_lnameFROM authors a,titleauthor ta(SELECT title_id,titleFROM titlesWHERE ytd_sales10000) AS
14、 tWHERE a.au_id=ta.au_idAND ta.title_id=t.title_id此例中,将SELECT返回的结果集合给予一别名t,然后再从中检索数据。(三)使用WHERE子句设置查询条件WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:SELECT *FROM usertableWHERE age20WHERE子句可包括各种条件运算符:比较运算符(大小比较): 、=、=、=、!、!范围运算符(表达式值是否在指定的范围):BETWEEN.AND.NOT BETWEEN.AND.列表运算符(判断表达式是否为列表中的指定项): IN (项 1,
15、项 2.)NOT IN (项 1,项 2.)模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE 空值判断符(判断表达式是否为空): IS NULL、 NOT IS NULL 逻辑运算符(用于多条件的逻辑连接): NOT、 AND、 OR1、范围运算符例: age BETWEEN 10 AND 30相当于 age=10 AND age=302、列表运算符例: country IN (Germany,China)3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于 char、 varchar 、 text、 ntext、 datetime 和 smalldatetime 等类型查询。可使用以下通配字符: 百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%。 下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。 方括号:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。A:其取值也相同,但它要求所匹配对象为指定字符以外的任一个字符。例如:限制以 Publishing 结