SQL语句在Access和SQL Server里面的不同

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 做了一个Winform的营养测量软件,来回的捣腾着Access数据库,还是那几句增删改查,不过用多了,发现Access数据库下的SQL语句和SQL Server下正宗的SQL还有有很大的不同。

做了一个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 表   //跨服务器查询
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
7天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
47 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
17天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
7天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
66 6
|
1月前
|
SQL 存储 关系型数据库
SQL的基本语法以及SQL语句的关键字的使用,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。
SQL的基本语法以及SQL语句的关键字的使用,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1
|
25天前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数
|
1月前
|
SQL 存储 数据库
数据安全无忧,SQL Server 2014数据库定时备份解密
数据安全无忧,SQL Server 2014数据库定时备份解密
|
1月前
|
SQL 网络协议 Windows
破解SQL Server迷局,彻底解决“管道的另一端无任何进程错误233”
破解SQL Server迷局,彻底解决“管道的另一端无任何进程错误233”