Access一些常用的SQL语句 |
您所在的位置:网站首页 › sql语句中常用的语句有哪些 › 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)#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;
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |