Access和SQL Server里面的SQL语句的不同之处
程序员文章站
2022-05-01 20:23:59
我的感觉是,accees数据库虽然可以称得上是小型的关系型数据库,并且也是使用的结构化查询语言sql,但它的语法(主要体现在函数上),却类似vbscript的语法,我想,这...
我的感觉是,accees数据库虽然可以称得上是小型的关系型数据库,并且也是使用的结构化查询语言sql,但它的语法(主要体现在函数上),却类似vbscript的语法,我想,这应该和access属于office系列有关,基于它的开发和应用,自然就与vba扯上关系,因而access的函数库也就是vba的函数库,而非sql函数库。下面,我们来具体看下access和sql server在查询语句的编写上具体的不同。
一、数据类型转换:
- access: select '调查'+cstr(did) as diaocha from czdengji
- 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专用)
- access: select id,iif(isfinished=1,'已完成','进行中'),name,diaocharen from czdiaocha order by isfinished asc
-
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 除了可以为单个字段,也可以为一个子查询等复杂表达式。
四、日期格式化
- access: 使用format()函数,select top 5 arttitle,format(artdate,'yy-mm-dd') as arttime from kingart where listid=9,这里使用format()函数,指定artdate(日期型)查询出来的格式为yy-mm-dd。
- 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语句集锦
- select top 5 * from food where fid not in(select top 5 fid from food) //查询第5到第10条记录
- delete from food where charindex('2007',uptime)>0 or charindex('2008', uptime )>0 //删除food表中uptime列包含有2007或2008的记录,即删除时间为2007年和2008年的更新记录
- select id,lanmu,title,content, convert(varchar(10),updatetime ,120) as update_time from news // sql server里面的convert函数,转换成 varchar(10)类型, 120为指定转换后的格式。
- select mealtype as 餐别,fname as 食物名称,sum(rjjingshisz)/2 as 人均净食生重总和 from czdengji where did=6 group by mealtype,fname //分组查询,group by的本意就是重复的字段合为一,对应的信息,进行汇总(count、sum等运算)
- select count(id) from flow where convert(varchar(21),visittime,120) like '2007-01-26% ' ,日期型数据模糊查询。
- select * from ('msdasql','driver={sql server};server=服务器名字;uid=对端数据库的账号;pwd=对端密码', 对端数据库.权限者.对端的表) as 表 //跨服务器查询
推荐阅读
-
SQL Server 数据库管理常用的SQL和T-SQL语句
-
Access和SQL Server里面的SQL语句的不同之处
-
SQL Server查看Sql语句执行的耗时和IO消耗
-
Sql Server 和 Access 操作数据库结构Sql语句小结
-
asp连接SQL和Access数据代码(asp里的随机函数)
-
常见数据库Sql Server,Oracle和MySQL的分页语句
-
常见数据库Sql Server,Oracle和MySQL的分页语句
-
用ASP和SQL语句动态的创建Access表
-
SQL Server 数据库管理常用的SQL和T-SQL语句
-
SQL Server 数据库管理常用的SQL和T-SQL语句