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 中配备数据源

  1. 单击“开首”按钮,单击“控制面板”,然后实施下列操作之一:
  • 在分拣视图中,单击“系统和保安”,然后单击“管理工具”。
  • 在经典视图中,单击“管理工具”。
  1. 双击“数据源(ODBC)”。

将现出“用户帐户控制”确认对话框。

  1. 单击“继续”。
  2. 单击“系统 DSN”选项卡。
  3. 请执行下列操作之一:
  • 要为已设置的驱动程序定义新数据源,请单击“添加”。
  • 要修改现有数据源的定义,请单击数据源的称号,然后单击“配置”。
  1. 据悉须求转移对话框中的新闻。

有关差异取舍的详细音讯,请单击每个对话框中的“支持”按钮。

在 Microsoft Windows XP 中配置 ODBC 数据源

  1. 单击“初始”按钮,单击“控制面板”,然后实施下列操作之一:
  • 在分拣视图中,单击“性能和有限支撑”,然后单击“管理工具”。
  • 在经典视图中,单击“管理工具”。
  1. 双击“数据源(ODBC)”。

将面世“ODBC 数据源管理器”对话框。

  1. 单击“系统 DSN”选项卡。
  2. 请执行下列操作之一:
  • 要为已设置的驱动程序定义新数据源,请单击“添加”。
  • 要修改现有数据源的定义,请单击数据源的称呼,然后单击“配置”。
  1. 按照须求变更对话框中的音信。

关于差距取舍的详细音信,请单击每个对话框中的“协助”按钮。

 

创办传递查询

  1. 在“成立”选项卡上的“其他”组中,单击“查询设计”。
  2. 关闭“显示表”对话框。
  3. 在“设计”选项卡上的“查询类型”组中,单击“传递”。

Access 将隐形查询设计网格并展示“SQL 视图”对象选项卡。

  1. 借使没有突显属性表,请按 F4 来浮现它。
  2. 在性质表中,单击“ODBC 连接字符串”属性框,然后单击“构建”。

将出现“选拔数据源”对话框。

  1. 单击“计算机数据源”选项卡。
  2. 在“数据源名称”下,单击在头里的经过中配备的服务器统计机的名称,然后单击“确定”。

 注释   如果没有安排 ODBC
数据源,请单击“新建”,然后实施成立新数据源向导中的手续。

  1. 若是提醒您登录,请输入用户名和密码。
  2. 比方提醒您在连年字符串中保留密码,请不要保存您的密码。

不保留密码有助于提升你的服务器数据库系统的安全性。

  1. 在“SQL 视图”对象选项卡中键入查询。

 注释   请牢记要利用适于您的数据库管理体系的 SQL 语法,此语法可能与
Access SQL 语法分歧。

  1. 在键入查询之后,请在“设计”选项卡上的“结果”组中,单击“运行”。

你的查询将发送到数据库服务器计算机举办处理。

  注释  

  某些传递查询不会回来数据。例如,您或许要运行一个不向 Access
重回任何数据的囤积进度,例如将数据库权限授予组或用户的剧本。借使传递查询不向
Access 重返数据,应该将查询的性能表中的“重回记录”属性值更改为“否”。

  某些传递查询可能将服务器处理新闻再次来到给
Access。如若要将那个新闻收集在一个表中以供未来翻看,请将查询的特性表中的“日志信息”属性值更改为“是”。存储那一个音信的表的称呼格式为用户名连接一个连字符以及一个以
00 开首的连天数字。

 

以下SQL语句在ACCESS XP的询问中测试通过

建表:

Create Table Tab1 ( 
ID Counter,
Name string,
Age integer,
[Date] DateTime);

技巧: 

ACCESS,自增字段用 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;

 

相关文章