ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:22.64KB ,
资源ID:28284785      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28284785.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VB中使用SQL语言基本.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VB中使用SQL语言基本.docx

1、VB中使用SQL语言基本VB中使用SQL语言基本教程SQL语言基本教程(一) 数据库查询语言(SQL)是使用于关系数据库的标准语言,被很多类型的数据库所支持。本文将以VB加DAO为例,来介绍基本的SQL语法以及使用。本章将介绍的是SQL语言中的基本查询语句,并带有范例。 要更好的阅读本文,读者需要对数据库的基本结构以及术语有一个基本的了解,而且最好能有一定的VB数据库编程经验。除非特别说明,本文将使用的数据库是VB中附带的数据库。一、SELECT.FROM.WHERE语句 语句的语法如下:SELECT all | * | distinct column1, column2FROM table1

2、, table2WHERE condition1 | expression1 AND condition2 | rxpression2 在上面的语法中,外的语句是必须的,而内的是可选的,对于以 | 分割的操作符,则表明语法中必须从| 分割的操作符中选择一个。下面的语法描述同上。 在SELECT.FROM.WHERE语句中其中SELECT指定需要检索的字段,FROM指定要查询的表,WHERE指定选择纪录的条件,另外还可以包含ORDER BY语句来制定排序纪录。语法如下:ORDER BY column1 | Integer ASC | DESC 其中column1制定排序的字段,也可以使用Inte

3、ger指定的字段索引来排序,ASC为升序、DESC为降序。范例一:找到Titles表中所有出版日期在1990年以后以及包含文字Beginner的书名建立一个新工程,加入DAO定义库(点击菜单中的 Project | References项,在列表中选择Microsoft DAO Object Library(也可以是更高版本的,如果安装了的话),然后在Form中加入一个ListBox控件。在Form1的代码窗口中加入以下代码:Private Sub Form_Load() Dim rsTemp As Recordset Dim dbTemp As Database Dim astr As St

4、ring Set dbTemp = DBEngine(0).OpenDatabase(e:program filesmicrosoft visual studiovb98, _dbOpenSnapshot) astr = SELECT Title FROM Titles WHERE Year Published 1990 & _ AND Title LIKE *Beginner* ORDER BY Title DESC Set rsTemp = (astr) If 0 Then Do Until rsTemp!Title Loop End IfEnd Sub 运行程序,List1中就会列出所有

5、出版日期在1990年以后以及包含文字Beginner的书的书名并将书名按照降序进行排列。 在上面的SELECT语句的WHERE中,我们使用了操作符号 来比较大小以及使用LIKE进行匹配。在WHERE语句中,可以使用的操作符有以下几类:1、比较操作符 包含 =、=、 #19980-10-01#而在使用通配符和LIKE操作符时,需要使用引号而不是#号,例如 WHERE BirthDay LIKE 1990-01-*。引号告诉数据库引擎将日期当字符串处理,而#号告诉数据库引擎将日期当数字处理。对于WHERE语句所要使用的逻辑操作符,在下面的文章中还要提到。范例二:如何在数据表中加入统计等功能 SQL

6、当中提供了一定数量的统计以及计算功能,其中统计函数主要有如下一些:COUNT 计算字段中的纪录数SUM 计算字段中的所有值的和MAX 获得字段中所有值中的最大值MIN 获得字段中所有值中的最小值AVG 计算字段中所有值的平均值 计算符有 +、-、*、/ 4种。这些计算、统计函数的使用方法如下: functionname fieldname AS outfieldname 其中functionname定义函数名、fieldname 定义要操作的字段、outfieldname定义保存输出结果字段名称,下面是范例程序,首先建立一个数据库,将数据库保存为 c:。然后在数据库中加入一个名称为db1的表,

7、表的结构如下:字段名称 产品编号 成本 出厂价 销售数量 A00020 ¥ ¥ 900 A00056 ¥ ¥ 2400 A00021 ¥2, ¥2, 600 A10916 ¥ ¥ 1200 A00987 ¥ ¥1, 1000 其中产品编号为文本类型、成本和出厂价字段为货币类型、销售数量为长整形数据。保存表,在VB工程中加入DAO定义库,在Form1中加入一个ListBox控件,在Form1代码窗口中加入以下代码:Private Sub Form_Load() Dim rsTemp As Recordset Dim dbTemp As Database Dim astr As String Se

8、t dbTemp = DBEngine(0).OpenDatabase(c:, dbOpenSnapshot) astr = SELECT db1.产品编号, (db1.出厂价 - db1.成本)/db1.成本) AS dRate, & _ (db1.出厂价 * db1.销售数量)AS eTotal FROM db1 ORDER BY db1.产品编号 Set rsTemp = (astr) If 0 Then Do Until rsTemp!产品编号 & & rsTemp!dRate & _ & rsTemp!eTotal Loop End IfEnd Sub 在上面的程序段中,通过计算字符

9、操作表中以有字段,然后再将结果输出到输出字段中保存。二、JOIN.ON.语句 JOIN.ON. 语句是SQL查询中用于连接多个表的语句,该语句的语法为: FROM table1 INNER|OUTER|LEFT|RIGHT JOIN table2 ON compopr 其中tabel1指定要查询的表,tabel2指定连接到tabel1的表,field1, field2指定连接字段名称,compopr指定关系比较符,它可以是大于、小于、等于、不等于等。 范例三: 列出所有书籍以及它的作者 在BIBLIO中,书籍的名称位于Titles表的Title字段中,而书籍的作者位于Authors表的Auto

10、or字段中,而这两个表之间没有相关联的字段,我们这时需要联合数据库中的Title Author表,利用该表的Au_ID字段同Authors表中的Au_ID字段的关联以及ISBN字段同Titles表中的ISBN字段的关联,范例如下:Private Sub Form_Load() Dim rsTemp As Recordset Dim dbTemp As Database Dim astr As String Set dbTemp = DBEngine(0).OpenDatabase(e:program filesmicrosoft visual studiovb98, dbOpenSnapsho

11、t) astr = SELECT , FROM & _ (Title Author INNER JOIN Titles ON Title Author.ISBN = & _ INNER JOIN Authors ON Title Author.Au_ID = & _ WHERE LIKE *Beginner* Set rsTemp = (astr) If 0 Then Do Until rsTemp!Title & & rsTemp!Author Loop End IfEnd Sub 在上面的范例中,我们使用两个INNER JION联合将Authors表中的Au_ID字段 和Titles表中的

12、ISBN字段连接到Title Author表中,然后在Title Author表中查找Title字段中包含字符串“Beginner”的纪录并将Title字段和Author字段输出。SQL查询语言基本教程(2)三、GROUP BY.语句 GROUP BY. 语句实现纪录分组功能,它通常需要和上面我们提到过的统计函数 SUM、COUNT 等联合使用,它的语法为:SELECT column1, column2 FROM table1,table2 WHERE conditions GROUP BY column1, column2ORDER BY column1, column2范例四:计算学生成绩

13、及总成绩 我们依然使用上一章使用的数据库 c:,在其中加入一个名字为 db2 的表,表的结构以及数据如下:字段名 学生 科目 成绩张严 语文 李永 语文 93王为 语文 91张严 数学 李永 数学 90王为 数学 87张严 英语 李永 英语 94王为 英语 98 建立新工程,加入DAO定义库。在Form1中加入一个ListBox控件,然后在Form_load中加入以下代码:Private Sub Form_Load() Dim rsTemp As Recordset Dim dbTemp As Database Dim astr As String Set dbTemp = DBEngine(

14、0).OpenDatabase(c:, dbOpenSnapshot) astr = SELECT SUM(db2.成绩)AS rTotal, FORMAT(AVG(db2.成绩),#.#) AS rAVG, & _ (db2.学生) AS Student FROM db2 GROUP BY db2.学生 Set rsTemp = (astr) If 0 Then Do Until rsTemp!Student & Chr(5) & rsTemp!rTotal & _ & rsTemp!rAVG Loop End IfEnd Sub 在上面的代码中,我们利用GROUP BY将纪录根据学生姓名分

15、组,再建立了两个统计字段rTotal和rAvg并分别利用统计函数SUM和AVG分别统计各个分组的总成绩以及平均成绩。要注意的是,在SELECT语句中出现的字段,如果没有包含在统计函数内的话,都要包含在GROUP BY子句中。 另外在上面的SQL查询中我们还使用了FORMAT子句,这是SQL中的转换和格式化语句中的一个,该语句的语法同VB中的Format语句是一样的,相似的语句还有FIX语句。需要注意的一点是,虽然在Microsoft JET Engine 中的SQL语法和ANSI决大部分是一样的,但是有一些还是保留了“微软特色”,特别是象这一类的转换和格式化语句,例如FORMAT就是ANSI中

16、没有的。而象其它数据库,诸如oracle也有各自的SQL语法扩展。在使用不同数据库进行SQL查询时要注意这一点。 在GROUP BY 语句中还可以连接使用HAVING子句。该语句同GROUP BY的关系就如同WHERE子句同SELECT的关系类似,WHERE子语句为SELECT所选择的列设置条件,而HAVING子语句是给由GROUP BY创建的组设置条件。例如如果将上面的范例中的astr改变为如下的字符串:astr = SELECT SUM(db2.成绩)AS rTotal, FORMAT(AVG(db2.成绩),#.#) & _ AS rAVG, (db2.学生) AS Student FR

17、OM db2 GROUP BY db2.学生 & _ HAVING (AVG(db2.成绩)=90则在List中就将只会列出平均成绩大于90分的学生的成绩和名字。范例五:获得分数高于总平均分数的学生及科目 我们仍然使用上面建立的db2表。建立新工程,加入DAO定义库。在Form1中加入一个ListBox控件和一个Label控件然后在Form_load中加入以下代码:Private Sub Form_Load() Dim rsTemp As Recordset Dim dbTemp As Database Dim astr As String Set dbTemp = DBEngine(0).O

18、penDatabase(c:, dbOpenSnapshot) astr = SELECT FORMAT(AVG(db2.成绩),#.#) AS tAVG FROM db2 Set rsTemp = (astr) = 总平均成绩: & rsTemp!tAVG Set rsTemp = Nothing astr = SELECT db2.成绩, db2.学生,db2.科目 FROM db2 WHERE db2.成绩 & _ (SELECT AVG(db2.成绩) FROM db2) GROUP BY db2.学生,db2.成绩,db2.科目 & _ ORDER BY db2.学生 Set rsT

19、emp = (astr) If 0 Then Do Until rsTemp!学生 & & rsTemp!科目 & & rsTemp!成绩 Loop End IfEnd Sub 运行程序,在Lable1中列出总平均分数。在List1中列出了学生姓名、获得高于平均分数的科目以及科目成绩。在上面的查询中,我们使用了一个嵌套查询,首先在子查询中获得所有科目总的平均分数,然后在查询中查询成绩字段值大于平均分数的纪录。四、TRANSFORM.PIVOT. 语句 这是Microsoft JET Engine 以上版本所特有的SQL查询语句,该语句的特点是可以建立一个交叉表格式的查询,一个交叉表同电子表相类

20、似。该语句可以将表中的某些数据作为行,某些数据作为列建立交叉表。该语句的语法如下:TRANSFORM condition select opreation PIVOT column 其中condition是在交叉表中要显示的数据,select opreation 是一个SELECT.FROM. 查询,该查询形成交叉表的航信息,PIVOT recordset中column为表中的一个字段,PIVOT子句使用该字段形成交叉表的列。范例六:建立学生成绩表 我们还是使用上面已经建立的中的db2表。首先建立一个新的工程,然后在Form1中加入一个DataGrid控件,然后向工程中加入一个DataEnvi

21、ronment,在Connection1上点击鼠标右键,在菜单中选择 properties. ,在属性窗口的 提供者页面中选择 Microsoft JET OLE DB Provider ,在 连接 页面的数据库名称输入框中输入 c: ,然后点击 测试连接 按钮,如果正常,点击确定退出。再在Connection1上点击鼠标右键,在菜单中选择 Add command 建立一个名为Command1的命令,点击Command1右键菜单,选择 Properties. 项,然后在Command1属性窗口的General页面中选择 SQL Statement,在SQL查询语句输入框中输入下面的查询:Tra

22、nsform SUM(db2.成绩)AS iRes SELECT db2.学生 FROM db2 GROUP BY db2.学生 Pivot db2.科目 注意文本框回自动换行,不要输入回车。然后点击确定按钮。 回到Form1,将DataGrid1的DataSource设置为DataEnvironment1,将DataMember设置为Command1,然后运行程序,可以看到在DataGrid1中以表的形式列出了学生成绩,以学生为行,以成绩为列。运行后得到的表格效果如下:学生 数学 英语 语文李永 90 94 93王为 87 98 91张严 再回到DataEnvironment界面,双击Com

23、mand1就可以看到查询建立的数据列,在上面的查询共建立了4个数据列,其中三个分别是科目分类,列中的数据为科目成绩,第一列为学生的名字,列中的数据为学生的名字。 上面的查询中还使用了SUM子语句,这时因为对于GROUP BY来说,没有包含在统计函数内的列都要包含在GROUP BY中,如果将字段db2.成绩包含在 GROUP BY 子语句中,就会使最终结果出现9行而不是3行。由于每个学生的每科成绩只有一个,所以可以使用SUM函数将字段db2.成绩排除在GROUP BY外面。 在下一章内,将向大家介绍SQL语言中的数据库结构定义部分以及数据操纵部分。SQL查询语言基本教程(3)四、CREATE T

24、ABLE 语句 CREATE TABLE 语句的语法为: CREATE TABLE table (field1 type (size) NOT NULL index1 , field2 type (size) NOT NULL index2 , . , CONSTRAINT multifieldindex , .)table 新建立的表的名称field1 type (size) NOT NULL index1 field1为字段名称,Type为字段数据类型,size 为字段宽度,下面表详细描述了Type 的取值以及描述Type Jet数据类型 描述BIT Yes/No 逻辑类型 BYTE Numberic-Byte 字节数字COUNTER Counter 自动编号CURRENCY Currency 货币数字DATETIME Date/Time 日期、时间DOUBLE Numberic-Double 双精度浮点数字LONG Numberic-Long 长整数LONGBINARY Ole Object OLE object类型LONGTEXT Memo 备注类型SHORT Numberic-Integer 整数SINGLE Numberic-Single 单精度浮点数字TEXT Text

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1