'删除记录 SQL = "DELETE From 表名称 Where {条件}" cnn.Execute
'查找记录 SQL = "Select 字段名1,字段名2,.... From 表名称 Where {查找条件}" cnn.Execute '修改记录 SQL = "UPDATE 表名称 SET 字段名 = 值1, 字段名2 = 值2,…… Where {条件}" cnn.Execute '关闭数据库 cnn.Close Set cnn = Nothing End Sub就是 SQL 语句的用法
'Select Select_list '[ INTO new_table ] 'From table_source '[ Where search_condition ] '[ GROUP BY group_by_expression ] '[ HAVING search_condition ] '[ ORDER BY order_expression [ ASC | DESC ] ]'CopyFromRecordset方法的使用说明 'expression.CopyFromRecordset(Data, MaxRows, MaxColumns) 'expression : 必需。该表达式返回一个 Range 对象。 'Data : Variant 类型,必需。复制到指定区域的 Recordset 对象。 'MaxRows : Variant 类型,可选。复制到工作表的记录个数上限。如果省略该参数,将复制Recordset对象的所有记录 'MaxColumns : Variant 类型,可选。复制到工作表的字段个数上限。如果省略该参数,将复制Recordset对象的所有字段 '说明:复制从 Recordset 对象的当前行开始的内容。复制完成之后,Recordset 对象的 EOF 属性值为True'Where的功能就是根据后面的条件,限制与筛选Selet检索的数据,而条件中又可以分为几种: '1.运算符。>,<,=,>=,<=,<> 'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称='铅笔' '2.Or 与 And 'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称='铅笔' And 日期=#2008-10-2# '3.Between…And 'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 进仓数量 Between 3 and 6 '4.In。通过In 列出所有可能的值 'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 In ('铅笔','毛笔','钢笔') '5.Like。通过Like与通配符,列出符合的条件。通配符有%,_,[]三种,不同的数据库可能支持不一样 'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 Like '铅%' 检索出物品名称以铅为开头的数据 'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 Like '_笔%' 检索出物品名称以任一一个字符+笔为开头 'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 Like '[钢,圆珠,毛]%' 检索出物品名称以钢,圆珠,毛为开头'SQL函数 -预处理检索值的命令 'Sum:对检索的数值求和 'Avg:对检索的数据求平均值 'Min:求检索出数据的最小值 'Max:求检索出数据的最大值 'Count:求检索数据中非空的个数'Group By - 分类汇总检索的数据 'Select 条件列名1, 函数(汇总列名1) From 表格名 GROUP BY 条件列名1,条件列名2,条件列名3... '条件列与汇总列都可以有一个或者多个,而汇总列名应该是可以让指定函数的计算类型。 '如果要在Select中列举出来,一定要在 GROUP BY 作为条件列出现,否则就会出错。 '但在GROUP BY 作为条件的列,不一定需要在Select中一一列举出来。'Having - 筛选汇总后的数据 'Select 条件列名1, 函数(汇总列名1) From 表格名 GROUP BY 条件列名1 HAVING (函数条件) 'Having后面出现的函数条件,应该在Selet中有列出来的,否则会出错。'Order By - 排序检索的数据 'Select 列名1,列名2…… From 表格名 ORDER BY 排序列名 [ASC|DESC] '排序列名可以是多列,与检索的列名一样,用“,”分开。'Select Into - 把检索的数据添加到新的数据表中 'Select 列名1,列名2…… INTO 新表格名 From 表格名 '新表格名在数据库中应该是不存在的,否则就会出错。'Insert Into Select - 批量添加数据到数据库中 'INSERT INTO 表格名1 (列名11,列名12, ...) Select 列名21, 列名22, ... From 表格名2 '把检索出来的数据,批量添加到数据库中,目标表名在数据库中一定要存在的。'Top - 限制检索结果的数量 'Select Top 数量 列名1,列名2,…… From 表格名 [Order By 排序列名1,排序列名2,…… [Asc|Desc]]'Distinct - 筛选出不重复的数据 'Select Distinct 列名 From 表格名'CREATE TABLE - 创建数据表 'CREATE TABLE 表格名(列名1 列名1的数据类型,列名2 列名2的数据类型,... )'DROP TABLE - 删除数据表 'DROP TABLE 表格名'Alter Table - 修改数据表 '增加列:Alter Table 表格名 Add Column 列名 列名的数据类型 '删除列:Alter Table 表格名 Drop Column 列名 '修改数据类型:Alter Table 表格名 Alter Column 列名 列名的数据类型'INSERT INTO - 向数据库中添加数据 'INSERT INTO 表格名 (列名1, 列名2, ...) VALUES (数值1, 数值2, ...) '日期数值的表示方式为——#日期#,否则不正确'UPDATE - 修改数据库中已有的数据 'UPDATE 表格名 SET 列名1 = 数值1, 列名2 = 数值2,…… Where {条件} 'UPDATE如果不指定条件,则会修改指定数据表中所有的数据,而指定条件后,则后修改数据表中所有满足条件的数据'DELETE From - 删除数据库的数据 'DELETE From 表格名 Where {条件} 'Union 运算符 'UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。 '当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。 '两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。'EXCEPT 运算符 'EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。 '当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。'Intersect 运算符 'INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。 '当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。'使用外连接 '例子:Select a.a, a.b, a.c, b.c, b.d, b.f From a LEFT OUT JOIN b ON a.a = b.c '1.LEFT (OUTER) JOIN '左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 '2.RIGHT (OUTER) JOIN '右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 '3.FULL/CROSS (OUTER) JOIN '全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。'excel使用sql中的JOIN,以下几种形式能用: 'Select * From `表1$` a,`表2$` b Where a.`aaa`=b.`a2` 'Select * From `表1$` a INNER JOIN `表2$` b on a.`aaa`=b.`a2` Where 1=1 'Select * From `表1$` a LEFT JOIN `表2$` b on a.`aaa`=b.`a2` 'Select * From `表1$` a RIGHT OUTER JOIN `表2$` b on a.`aaa`=b.`a2` 'FULL JOIN报无法打开数据库, 原因不明: 'Select * From `表1$` a FULL JOIN `表2$` b '不过可以用From a,b,这就行了,一个意思. 'JOIN形式必须有ON , 且必须使用JOIN两边的表的字段 'LEFT OUTER JOIN及RIGHT OUTER JOIN中的OUTER可以省 'INNER JOIN中的INNER不能省'"WHERE 1=1" 表示选择全部 '"WHERE 1=2" 表示全部不选
'需引用 Microsoft ActiveX Data Objects 2.X Library
Sub aaa()
Dim cnn As ADODB.Connection, SQL As String
'链接数据库
Set cnn = New ADODB.Connection
With cnn
.Provider = "microsoft.jet.oledb.4.0"
.Open "你的数据库"
End With
SQL = ""
cnn.Execute SQL '增加记录
SQL = "Insert Into 表名称 (字段名1,字段名2,.....) Values (值1,值2,......)"
cnn.Execute
'删除记录
SQL = "DELETE From 表名称 Where {条件}"
cnn.Execute
'查找记录
SQL = "Select 字段名1,字段名2,.... From 表名称 Where {查找条件}"
cnn.Execute '修改记录
SQL = "UPDATE 表名称 SET 字段名 = 值1, 字段名2 = 值2,…… Where {条件}"
cnn.Execute '关闭数据库
cnn.Close
Set cnn = Nothing
End Sub就是 SQL 语句的用法
'[ INTO new_table ]
'From table_source
'[ Where search_condition ]
'[ GROUP BY group_by_expression ]
'[ HAVING search_condition ]
'[ ORDER BY order_expression [ ASC | DESC ] ]'CopyFromRecordset方法的使用说明
'expression.CopyFromRecordset(Data, MaxRows, MaxColumns)
'expression : 必需。该表达式返回一个 Range 对象。
'Data : Variant 类型,必需。复制到指定区域的 Recordset 对象。
'MaxRows : Variant 类型,可选。复制到工作表的记录个数上限。如果省略该参数,将复制Recordset对象的所有记录
'MaxColumns : Variant 类型,可选。复制到工作表的字段个数上限。如果省略该参数,将复制Recordset对象的所有字段
'说明:复制从 Recordset 对象的当前行开始的内容。复制完成之后,Recordset 对象的 EOF 属性值为True'Where的功能就是根据后面的条件,限制与筛选Selet检索的数据,而条件中又可以分为几种:
'1.运算符。>,<,=,>=,<=,<>
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称='铅笔'
'2.Or 与 And
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称='铅笔' And 日期=#2008-10-2#
'3.Between…And
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 进仓数量 Between 3 and 6
'4.In。通过In 列出所有可能的值
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 In ('铅笔','毛笔','钢笔')
'5.Like。通过Like与通配符,列出符合的条件。通配符有%,_,[]三种,不同的数据库可能支持不一样
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 Like '铅%' 检索出物品名称以铅为开头的数据
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 Like '_笔%' 检索出物品名称以任一一个字符+笔为开头
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 Like '[钢,圆珠,毛]%' 检索出物品名称以钢,圆珠,毛为开头'SQL函数 -预处理检索值的命令
'Sum:对检索的数值求和
'Avg:对检索的数据求平均值
'Min:求检索出数据的最小值
'Max:求检索出数据的最大值
'Count:求检索数据中非空的个数'Group By - 分类汇总检索的数据
'Select 条件列名1, 函数(汇总列名1) From 表格名 GROUP BY 条件列名1,条件列名2,条件列名3...
'条件列与汇总列都可以有一个或者多个,而汇总列名应该是可以让指定函数的计算类型。
'如果要在Select中列举出来,一定要在 GROUP BY 作为条件列出现,否则就会出错。
'但在GROUP BY 作为条件的列,不一定需要在Select中一一列举出来。'Having - 筛选汇总后的数据
'Select 条件列名1, 函数(汇总列名1) From 表格名 GROUP BY 条件列名1 HAVING (函数条件)
'Having后面出现的函数条件,应该在Selet中有列出来的,否则会出错。'Order By - 排序检索的数据
'Select 列名1,列名2…… From 表格名 ORDER BY 排序列名 [ASC|DESC]
'排序列名可以是多列,与检索的列名一样,用“,”分开。'Select Into - 把检索的数据添加到新的数据表中
'Select 列名1,列名2…… INTO 新表格名 From 表格名
'新表格名在数据库中应该是不存在的,否则就会出错。'Insert Into Select - 批量添加数据到数据库中
'INSERT INTO 表格名1 (列名11,列名12, ...) Select 列名21, 列名22, ... From 表格名2
'把检索出来的数据,批量添加到数据库中,目标表名在数据库中一定要存在的。'Top - 限制检索结果的数量
'Select Top 数量 列名1,列名2,…… From 表格名 [Order By 排序列名1,排序列名2,…… [Asc|Desc]]'Distinct - 筛选出不重复的数据
'Select Distinct 列名 From 表格名'CREATE TABLE - 创建数据表
'CREATE TABLE 表格名(列名1 列名1的数据类型,列名2 列名2的数据类型,... )'DROP TABLE - 删除数据表
'DROP TABLE 表格名'Alter Table - 修改数据表
'增加列:Alter Table 表格名 Add Column 列名 列名的数据类型
'删除列:Alter Table 表格名 Drop Column 列名
'修改数据类型:Alter Table 表格名 Alter Column 列名 列名的数据类型'INSERT INTO - 向数据库中添加数据
'INSERT INTO 表格名 (列名1, 列名2, ...) VALUES (数值1, 数值2, ...)
'日期数值的表示方式为——#日期#,否则不正确'UPDATE - 修改数据库中已有的数据
'UPDATE 表格名 SET 列名1 = 数值1, 列名2 = 数值2,…… Where {条件}
'UPDATE如果不指定条件,则会修改指定数据表中所有的数据,而指定条件后,则后修改数据表中所有满足条件的数据'DELETE From - 删除数据库的数据
'DELETE From 表格名 Where {条件}
'Union 运算符
'UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。
'当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。
'两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。'EXCEPT 运算符
'EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。
'当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。'Intersect 运算符
'INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。
'当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。'使用外连接
'例子:Select a.a, a.b, a.c, b.c, b.d, b.f From a LEFT OUT JOIN b ON a.a = b.c
'1.LEFT (OUTER) JOIN
'左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
'2.RIGHT (OUTER) JOIN
'右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
'3.FULL/CROSS (OUTER) JOIN
'全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。'excel使用sql中的JOIN,以下几种形式能用:
'Select * From `表1$` a,`表2$` b Where a.`aaa`=b.`a2`
'Select * From `表1$` a INNER JOIN `表2$` b on a.`aaa`=b.`a2` Where 1=1
'Select * From `表1$` a LEFT JOIN `表2$` b on a.`aaa`=b.`a2`
'Select * From `表1$` a RIGHT OUTER JOIN `表2$` b on a.`aaa`=b.`a2` 'FULL JOIN报无法打开数据库, 原因不明:
'Select * From `表1$` a FULL JOIN `表2$` b
'不过可以用From a,b,这就行了,一个意思. 'JOIN形式必须有ON , 且必须使用JOIN两边的表的字段
'LEFT OUTER JOIN及RIGHT OUTER JOIN中的OUTER可以省
'INNER JOIN中的INNER不能省'"WHERE 1=1" 表示选择全部
'"WHERE 1=2" 表示全部不选
谢谢你! 那么要在一个按钮空间里点击增删改查怎么弄呢。
看看这个
* Set 方法
* Open 方法
* Close 方法
* Execute 方法(可选) Recordset:
* Set 方法
* Open 方法
* Close 方法2 SQL 语句 查询、增、删都是在 SQL 命令中实现的。这部分与 VB 无关,只要用数据库,哪一平台都一样。 在记录集对象的 Set 或 Open 方法中,传入相应的 SQL 语句即可。
功能很弱,怪微软,更新不积极。
只要连接上了数据库,后面的增删改查这类东西,任何语言都差不多,你就用SQL操作就可以了。