Access和SQL Server里面的SQL语句的不同之处

 更新时间:2009年12月04日 12:58:50   作者:  
做了一个Winform的营养测量软件,来回的捣腾着Access数据库,还是那几句增删改查,不过用多了,发现Access数据库下的SQL语句和SQL Server下正宗的SQL还有有很大的不同。

我的感觉是,Accees数据库虽然可以称得上是小型的关系型数据库,并且也是使用的结构化查询语言SQL,但它的语法(主要体现在函数上),却类似vbscript的语法,我想,这应该和Access属于Office系列有关,基于它的开发和应用,自然就与VBA扯上关系,因而Access的函数库也就是VBA的函数库,而非SQL函数库。下面,我们来具体看下Access和SQL Server在查询语句的编写上具体的不同。

一、数据类型转换:

  1. Access: SELECT '调查'+CStr(Did) as diaocha FROM CZdengji
  2. SQL Server: select artid,'调查'+Cast(listid As varchar) as did from kingart where artdate>=getdate()

      Access中SQL查询的数据类型转换有很多函数,每一个函数都可以强制将一个表达式转换成某种特定数据类型。具体如下:CBool(expression) 、CByte(expression) 、CCur(expression) 、CDate(expression) 、CDbl(expression) 、CDec(expression) 、CInt(expression) 、CLng(expression) 、CSng(expression) 、CStr(expression) 、CVar(expression) 、CStr(expression),相信不用说明,大家也看得懂这各种转换符的意思。

二、IIF函数(ACCESS专用)

  1. Access: SELECT Id,IIF(Isfinished=1,'已完成','进行中'),Name,Diaocharen FROM CZdiaocha ORDER BY Isfinished ASC
  2. SQL Server 的写法就相对更多,可以自定义函数,也可以使用case语句,如select Id,case Isfinished when 1 then '已完成'
    when 0 then '进行中'  end,Name,Diaocharen FROM CZdiaocha ORDER BY Isfinished ASC

三、DISTINCT关键字用法: Access里面distinct(expression)的用法单一, expression 只能为指定字段,而不能为表达式,SQL Server则不同, expression 除了可以为单个字段,也可以为一个子查询等复杂表达式。

四、日期格式化

  1. Access: 使用format()函数,SELECT TOP 5 arttitle,format(artdate,'YY-MM-DD') as arttime FROM kingart WHERE listid=9,这里使用format()函数,指定artdate(日期型)查询出来的格式为YY-MM-DD。
  2. SQL Server: 使用convert()函数,select Id,lanmu,title,content, convert(varchar(10),updatetime ,120) as update_time from news,这里的120,是指定格式为YY-MM-DD,如果是其他数字(101-120),就是其他的格式。

其它一些常用的SQL语句集锦

  1. SELECT Top 5 * From Food WHERE Fid not in(Select top 5 Fid FROM Food) //查询第5到第10条记录
  2. delete from Food where charindex('2007',uptime)>0 or charindex('2008', uptime )>0  //删除Food表中uptime列包含有2007或2008的记录,即删除时间为2007年和2008年的更新记录
  3. select Id,lanmu,title,content, convert(varchar(10),updatetime ,120) as update_time from news  // SQL Server里面的convert函数,转换成 varchar(10)类型, 120为指定转换后的格式。
  4. select Mealtype as 餐别,Fname as 食物名称,sum(rjjingshisz)/2 as 人均净食生重总和 from CZdengji WHERE Did=6 group by Mealtype,Fname    //分组查询,GROUP BY的本意就是重复的字段合为一,对应的信息,进行汇总(count、sum等运算)
  5. Select Count(ID) from Flow where convert(varchar(21),visittime,120) like '2007-01-26% ' ,日期型数据模糊查询。
  6. select * from ('MSDASQL','DRIVER={SQL Server};SERVER=服务器名字;UID=对端数据库的账号;PWD=对端密码', 对端数据库.权限者.对端的表) as 表   //跨服务器查询

相关文章

  • 你应该知道的States字段使用规范

    你应该知道的States字段使用规范

    这篇文章主要给大家介绍了一些大家应该知道的States字段使用规范的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12
  • 分布式缓存Redis与Memcached的优缺点区别比较

    分布式缓存Redis与Memcached的优缺点区别比较

    Redis和Memcached都是基于内存key-value的数据存储系统。两者都可以通过缓存数据结果,HTML片段或其他可能产生成本很高的内容来帮助加快应用程序的速度。与memcached相比,Redis功能更强大,更受欢迎并且得到更好的支持。
    2022-12-12
  • SQL注入的实现以及防范示例详解

    SQL注入的实现以及防范示例详解

    SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,这篇文章主要给大家介绍了关于SQL注入的实现以及防范的相关资料,需要的朋友可以参考下
    2021-06-06
  • Hadoop 2.x伪分布式环境搭建详细步骤

    Hadoop 2.x伪分布式环境搭建详细步骤

    这篇文章主要为大家详细介绍了Hadoop 2.x伪分布式环境搭建详细步骤,感兴趣的朋友可以参考一下
    2016-05-05
  • 如何在Navicat新建连接、新建数据库以及导入数据库

    如何在Navicat新建连接、新建数据库以及导入数据库

    Navicat是图形化操作MySQL的强大工具,但是当数据库的服务器没有开放3306端口给办公网络时,在办公网使用navicat连接数据库是连不上的,下面这篇文章主要给大家介绍了关于如何在Navicat新建连接、新建数据库以及导入数据库的相关资料,需要的朋友可以参考下
    2023-05-05
  • Hive数据去重的两种方式 (distinct和group by)

    Hive数据去重的两种方式 (distinct和group by)

    数据库中表存在重复数据,需要清理重复数据,下面这篇文章主要给大家介绍了关于Hive数据去重的两种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • 一步步教你使用Navicat工具创建MySQL数据库连接

    一步步教你使用Navicat工具创建MySQL数据库连接

    Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设,下面这篇文章主要给大家介绍了关于如何使用Navicat工具创建MySQL数据库连接的相关资料,需要的朋友可以参考下
    2023-03-03
  • 浅谈三种数据库的 SQL 注入

    浅谈三种数据库的 SQL 注入

    本文主要介绍了浅谈三种数据库的SQL注入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 通过一分钟快速了解索引技巧

    通过一分钟快速了解索引技巧

    这篇文章主要给大家介绍了如何通过一分钟快速了解索引技巧的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用索引具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • 数据库中的左连接(left join)和右连接(right join)区别

    数据库中的左连接(left join)和右连接(right join)区别

    关于左连接和右连接总结性的一句话,左连接 where只影向右表,右连接where只影响左表
    2012-06-06

最新评论