Access一些常用的SQL语句
您可以将 Microsoft Office Access 2013 用作创建、修改数据库以及处理数据的工具,还可将 Office Access 2013 用作服务器数据库管理系统(如 Microsoft SQL Server)的前端(界面)。通常,使用 Office Access 2013 作为前端应用程序时,需要链接到服务器数据库管理系统中的表,然后就像这些链接的表位于 Access 数据库中那样使用它们。结构化查询语言 (SQL) 的处理由 Access 在您的本地计算机上执行。
不过,在某些情况下,您可能希望由服务器计算机执行 SQL 处理。例如,您的台式机速度较慢,而数据库服务器计算机功能强大,此时在服务器计算机上处理查询可提高性能。或者,您可能要运行位于服务器计算机上的存储过程 (存储过程:由 SQL 语句和可选流控制语句组成的预编译集合,按一个名称存储,并作为一个单元处理。此集合存储在 SQL 数据库中,可以通过某应用程序的一个调用运行。),而在本地计算机上 Access 正在处理 SQL,那么将无法执行此操作。要想在数据库服务器计算机上处理 SQL,请使用传递查询 (传递查询:SQL 特定查询,可以用于直接向 ODBC 数据库服务器发送命令。通过使用传递查询,可以直接使用服务器上的表,而不用让 Microsoft Jet 数据库引擎处理数据。)。
连接到服务器数据库管理系统
要连接到服务器数据库管理系统,您可将服务器数据库管理系统配置为 ODBC 数据源 (ODBC 数据源:位于支持开放式数据库连接性 (ODBC) 协议的程序或数据库中,需要进行访问的数据和信息。)。
注释 只有本地计算机的 Administrators 组的成员才可以配置 ODBC 数据源。
在 Windows Vista 中配置数据源
- 单击“开始”按钮,单击“控制面板”,然后执行下列操作之一:
- 在分类视图中,单击“系统和维护”,然后单击“管理工具”。
- 在经典视图中,单击“管理工具”。
- 双击“数据源(ODBC)”。
将出现“用户帐户控制”确认对话框。
- 单击“继续”。
- 单击“系统 DSN”选项卡。
- 请执行下列操作之一:
- 要为已安装的驱动程序定义新数据源,请单击“添加”。
- 要修改现有数据源的定义,请单击数据源的名称,然后单击“配置”。
- 根据需要更改对话框中的信息。
有关不同选项的详细信息,请单击每个对话框中的“帮助”按钮。
在 Microsoft Windows XP 中配置 ODBC 数据源
- 单击“开始”按钮,单击“控制面板”,然后执行下列操作之一:
- 在分类视图中,单击“性能和维护”,然后单击“管理工具”。
- 在经典视图中,单击“管理工具”。
- 双击“数据源(ODBC)”。
将出现“ODBC 数据源管理器”对话框。
- 单击“系统 DSN”选项卡。
- 请执行下列操作之一:
- 要为已安装的驱动程序定义新数据源,请单击“添加”。
- 要修改现有数据源的定义,请单击数据源的名称,然后单击“配置”。
- 根据需要更改对话框中的信息。
有关不同选项的详细信息,请单击每个对话框中的“帮助”按钮。
创建传递查询
- 在“创建”选项卡上的“其他”组中,单击“查询设计”。
- 关闭“显示表”对话框。
- 在“设计”选项卡上的“查询类型”组中,单击“传递”。
Access 将隐藏查询设计网格并显示“SQL 视图”对象选项卡。
- 如果尚未显示属性表,请按 F4 来显示它。
- 在属性表中,单击“ODBC 连接字符串”属性框,然后单击“构建”。
将出现“选择数据源”对话框。
- 单击“计算机数据源”选项卡。
- 在“数据源名称”下,单击在前面的过程中配置的服务器计算机的名称,然后单击“确定”。
注释 如果尚未配置 ODBC 数据源,请单击“新建”,然后执行创建新数据源向导中的步骤。
- 如果提示您登录,请输入用户名和密码。
- 如果提示您在连接字符串中保存密码,请不要保存您的密码。
不保存密码有助于提高您的服务器数据库系统的安全性。
10. 在“SQL 视图”对象选项卡中键入查询。
注释 请记住要使用适于您的数据库管理系统的 SQL 语法,此语法可能与 Access SQL 语法不同。
11. 在键入查询之后,请在“设计”选项卡上的“结果”组中,单击“运行”。
您的查询将发送到数据库服务器计算机进行处理。
注释
某些传递查询不会返回数据。例如,您可能要运行一个不向 Access 返回任何数据的存储过程,例如将数据库权限授予组或用户的脚本。如果传递查询不向 Access 返回数据,应该将查询的属性表中的“返回记录”属性值更改为“否”。
某些传递查询可能将服务器处理消息返回给 Access。如果要将这些消息收集在一个表中以供以后查看,请将查询的属性表中的“日志消息”属性值更改为“是”。存储这些消息的表的名称格式为用户名连接一个连字符以及一个以 00 开始的连续数字。
以下SQL语句在ACCESS XP的查询中测试通过
建表:
Create Table Tab1 (
ID Counter,
Name string,
Age integer,
[Date] DateTime);
技巧:
自增字段用 Counter 声明.
字段名为关键字的字段用方括号[]括起来,数字作为字段名也可行.
建立索引:
下面的语句在Tab1的Date列上建立可重复索引
Create Index iDate ON Tab1 ([Date]);
完成后ACCESS中字段Date索引属性显示为 - 有(有重复).
下面的语句在Tab1的Name列上建立不可重复索引
Create Unique Index iName ON Tab1 (Name)
完成后ACCESS中字段Name索引属性显示为 - 有(无重复).
下面的语句删除刚才建立的两个索引
Drop Index iDate ON Tab1;
Drop Index iName ON Tab1;
ACCESS与SQLSERVER中的UPDATE语句对比:
SQLSERVER中更新多表的UPDATE语句:
UPDATE Tab1
SET a.Name = b.Name
FROM Tab1 a,Tab2 b
WHERE a.ID = b.ID;
同样功能的SQL语句在ACCESS中应该是
UPDATE Tab1 a,Tab2 b
SET a.Name = b.Name
WHERE a.ID = b.ID;
即:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后.
上例中如果Tab2可以不是一个表,而是一个查询,例:
UPDATE Tab1 a,(Select ID,Name From Tab2) b
SET a.Name = b.Name
WHERE a.ID = b.ID;
访问多个不同的ACCESS数据库-在SQL中使用In子句:
Select a.*,b.* From Tab1 a,Tab2 b In 'db2.mdb' Where a.ID=b.ID;
上面的SQL语句查询出当前数据库中Tab1和db2.mdb(当前文件夹中)中Tab2以ID为关联的所有记录.
缺点-外部数据库不能带密码.
在ACCESS中访问其它ODBC数据源
下例在ACCESS中查询SQLSERVER中的数据
SELECT * FROM Tab1 IN [ODBC]
[ODBC;Driver=SQLServer;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]
部数据源连接属性的完整参数是:
[ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=pass(word);]
其中的DRIVER=driver可以在注册表中的
HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INI
中找到
ACCESS支持子查询
ACCESS支持外连接,但不包括完整外部联接,如支持
LEFT JOIN 或 RIGHT JOIN
但不支持
FULL OUTER JOIN 或 FULL JOIN
ACCESS中的日期查询
注意:ACCESS中的日期时间分隔符是#而不是引号
Select * From Tab1 Where [Date]>#2002-1-1#;
在DELPHI中我这样用
SQL.Add(Format(
'Select * From Tab1 Where [Date]>#%s#;',
[DateToStr(Date)]));
ACCESS中的字符串可以用双引号分隔,但SQLSERVER不认,所以为了迁移方便和兼容,
建议用单引号作为字符串分隔符.
查询时生成序号
SELECT (SELECT Count([xlh].[aa]) AS AutoNum FROM xlh WHERE (((xlh.aa)<=xlh_Alias.aa));) AS 序号, xlh.aa
FROM xlh AS xlh_Alias INNER JOIN xlh ON xlh_Alias.aa=xlh.aa
ORDER BY xlh.aa;
多表sql查询
SELECT test.aa AS 第一个字段, test1.bb AS 第二个字段, test1.cc
FROM test, test1
WHERE test.aa=test1.aa;
多表sql查询1
SELECT a.aa, b.bb, b.cc, b.cc*100 AS 合计
FROM test AS a, test1 AS b
WHERE a.aa=b.aa;
多表sql查询排序
SELECT a.aa, b.bb, b.cc AS 第三个字段
FROM test AS a, test1 AS b
WHERE a.aa=b.aa
ORDER BY b.cc;
查询例子
SELECT a.dhhm
FROM xl11a AS a, xl919 AS b
WHERE a.dhhm=b.dhhm and aa<>"1";
日期时间分隔符是#而不是引号
Select * From Tab1 Where [Date]>#2002-1-1#;
两个表关联修改多个字段
UPDATE chhl AS a, jbsj AS b SET a.fzr = b.fzr, a.gh = b.gh
WHERE a.dhhm=b.dhhm; update chhl set (fzr,gh)=
(SELECT b.fzr, b.gh
FROM chhl AS a, jbsj AS b
WHERE a.dhhm=b.dhhm);
如果Tab2可以不是一个表,而是一个查询
UPDATE Tab1 a,(Select ID,Name From Tab2) b
SET a.Name = b.Name
WHERE a.ID = b.ID; UPDATE Tab1 a,Tab2 b
SET a.Name = b.Name
WHERE a.ID = b.ID;
访问多个不同的ACCESS数据库-在SQL中使用In子句,外部数据库不能带密码
Select a.*,b.* From Tab1 a,Tab2 b In 'db2.mdb' Where a.ID=b.ID;
将一个表的某个字段置空
UPDATE chhl AS a SET a.fzr = null, a.gh = null;
删除两个表中字段一样的记录
delete from xl11 where dhhm in(SELECT a.dhhm
FROM xl11 AS a, xl919 AS b
WHERE a.dhhm=b.dhhm;);
完成后ACCESS中字段Name索引属性显示为--有(无重复)
Create Unique Index iName ON Tab1 (Name);
下面的语句删除刚才建立的两个索引
Drop Index iDate ON Tab1;
Drop Index iName ON Tab1;
Access一些常用的SQL语句的更多相关文章
- 经典SQL语句大全以及50个常用的sql语句
经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql serv ...
- 常用经典SQL语句大全完整版--详解+实例 (存)
常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012 http://blog.sina.com.cn/s/blog_84 ...
- 经典SQL语句大全、50个常用的sql语句
50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,T ...
- 常用经典SQL语句大全完整版--详解+实例 《来自网络,很全没整理,寄存与此》
常用经典SQL语句大全完整版--详解+实例 下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML ...
- 渗透测试之常用的sql语句
学习路漫漫,常用的sql语句给我们平常所运用的sql语句相差不多,用句土话讲:百变不离其中 注:网络安全时刻警醒,需要打靶的还需要建立自己的靶场,关注博主在以往博客中分享有多种创建靶场可参考 1.判断 ...
- MySQL 常用的sql语句小结(待续)
mysql 常用的sql语句 1.查看数据库各个表中的记录数 USE information_schema; SELECT table_name,table_rows FROM tables WHER ...
- SQL Server中常用的SQL语句(转):
SQL Server中常用的SQL语句 转自:http://www.cnblogs.com/rainman/archive/2013/05/04/3060428.html 1.概述 名词 笛卡尔积.主 ...
- oracle常用的SQL语句
一些常用的SQL语句: --建表 create table adolph (id number(10,0), name varchar2(20), ...
- SQL之50个常用的SQL语句
50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,T ...
随机推荐
- 安装Windows2008操作系统 - 初学者系列 - 学习者系列文章
Windows2008这款服务器操作系统不知道有多少服务器在使用,毕竟前面有经典的2003系统,后续有2012操作系统.具体就不讨论这些了.下面就对Windows2008服务器操作系统的安装进行介绍. ...
- java这些东西发展(4)-------无穷time of error
今天,有些郁闷的心情啊.空指针下午折磨.到现在为止仍然没有得到解决,专家的招募结果没拿到,我们必须继续自己的,进而改变一点点一点点地找到它,但现在我不想搞,准备回家,这浪费了一个多小时,之前记录的下一 ...
- 实例学习SSIS(五)--理论介绍SSIS
原文:实例学习SSIS(五)--理论介绍SSIS 导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS( ...
- Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter
上一篇有提到利用IHttpModule和ResultFilter实现页面静态化功能.后来经过一些改动,将ResultFilter中要实现的功能全部转移到IHttpModule中来实现 Asp.Net ...
- 将Model实体类对象作为WebService接口参数(转)
转自:http://www.cnblogs.com/fengyishou/archive/2009/02/27/1399281.html 关于web服务的有关基础知识,看了基本书,但是不敢在这里乱说, ...
- DDD实践(一)
DDD实践切入点(一) 前两篇:大型系统的支撑,应用系统开发思想的变迁 之前大致说了使用DDD的前期准备,现在可以真正开始实践了,以我刚刚结束的一个简单的经典DDD方式的项目为例子,当然由于比较简单, ...
- 编写Windows Service 备忘
项目需求要做一个定时扫表,将按条件查询到的数据插入或者更新到另一个数据表的需求,老大要求让用window service来做 因为以前没有做过,把这次的经历写出来.作为备忘. 1.什么是windows ...
- Memcached快递上手之C#
Memcached快递上手之C# Memcached是开源高性能分布式缓存组件,目前已经广泛应用各类互联网领域. 具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Rub ...
- 工作日志(DJ)
ajax传参: $.post("MAIN_JSHandler.ashx", { "retInfoCode&q ...
- linux终端下文件不同颜色的含义
偶然注意到在终端下花花绿绿的目录显示效果,开始以为只是些特效,后来研究了一下,原来其中有些规律性的东西,总结如下: 蓝色表示目录: