SQL server与Access数据库sql语法十大差异

合集下载

Access与sql-server语法区别

Access与sql-server语法区别

Access与sql server 语法差异Access SqlServer系统时间Date() getdate()见10点连接字符串& +截取字符串MidSubString 见20点小写字符串LCase Lower 见12点大写字符串UCase Upper 见12点条件取值IIF Case+When+Else 见17点字段类型转换CStr,CInt,CDate Convert或cast 见21点日期字符串#2011-08-10# '2011-08-10' 见4点1、select,update语句区别select,update对于单表操作时基本一致。

但多表操作时Access与SqlServer中的update语句会有差别:SqlServer中更新多表的update语句:update Table1 set = from Table1 a, Table2 b where a.ID = b.ID;Access中同样功能的sql语句:update Table1 a, Table2 b set = where a.ID = b.ID;比较得出:Access中的update语句没有from子句,所有引用的表都列在update关键字后2、delete语句SqlServer中:deletefrom<表名>where ID > 1;Access中:delete*from<表名>where ID > 1;3、as后面的计算字段区别SqlServer中:select sum(num)as sum_num,sum(num)*num as all_num from<表名>;Access中:select sum(num)as sum_num, sum_num*num as all_num from<表名>;比较得出:SqlServer中:不可以把as后的字段当作一个数据库字段参与计算。

Access和sql server的语法区别 (包括db2 oracle)

Access和sql server的语法区别 (包括db2 oracle)

Access和sql server的语法区别(包括db2 oracle)Access和sql server的语法区别一、有区别的函数及解决方案以下所示的解决方案中的函数定义在untDataBase单元中TAdoConn类的方法中。

序号简述Access语法SqlServer语法Oracle语法DB2语法解决方案01 系统时间Date() GETDA TE() SYSDA TE GetSysTimeStr02 连接字符串& + || + GetConcatStr03 截取字符串SubString SubStr SubString SubString GetSubStr04 小写字符串LCase Lower Lower Lower GetLowerStr05 大写字符串UCase Upper Upper Upper GetUpperStr06 查找字符串InStr InStr CharIndex InStr GetFindStr07 替换空值IIF+IsNull Coalesce Nvl Coalesce GetNullStr08 条件取值IIF Case+When+Else DeCode或Case IIF GetCaseStr09 字段类型转换Str、var、…. Convert或cast To_Char,To_Number. GetConvertStr GetConvertStr10 日期字符串‘2004-10-9’#2004-10-19# ‘2004-10-9’ GetDateStr11 最大值加1GetNextNumStr12 Like语句函数Like ‘101* Like ‘101%’Like ‘101%’GetLikeStr13 表的连接要用( )报表连接起来自动识别表的连接14 交叉连接,分割表,用CROSS JOIN二、Access与SQLSERVER部分相同数据库函数及关键字列表1、函数序号简述01 记数函数Count02 最大值Max2、关键字序号简述01Like02 连接Join03 判断空Is Null三、Access与语句SqlServer的语句语法区别1、Inser Into …..Select …From 语句:在ACCESS中以下语句Insert INTOPubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment ,Acc_Pro,acc_type,Sub_id_flag,acc_index) (Select 200201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub _id_flag,acc_index FROM PubSubJectAcc Where PubSubJectAcc.co_type='03')中后面"(select 200201******.co_Type='03')"中的小括号("(",")")必须去掉才能执行,如下:Insert INTOPubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment ,Acc_Pro,acc_type,Sub_id_flag,acc_index) Select 200201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub _id_flag,acc_index FROM PubSubJectAcc Where PubSubJectAcc.co_type='03'在SQL SERVER 中都可以2、Inner Join 语句1StrSql:='select er_id,er_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=c.copy_id) on er_id=er_id whereer_opcode=''' +EdtUserOpCode.text+''' And copy_name='''+Tmpcopyname +'''';应该改为StrSql:='select er_id,er_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=d.copy_id) on er_id=er_id whereer_opcode=''' +EdtUserOpCode.text+''' And copy_name='''+Tmpcopyname +'''';该行代码的检索条件错误:应该把 C.copy_id=C.Copy_id 改为c.copy_id=d.copy_id注:两种写法都能在SQL-SERVER中运行,但c.copy_id=C.copy_id在ACCESS 中不能运行3、Inner Join 语句2StrSql:='select copy_year,copy_name,a.copy_id from SysCopys a inner join SysCopysUser b on a.curcopy_flag=1 and a.copy_id=b.copy_id where er_id=' + '''' +TmpPubUserID+ '''';该为StrSql:='select copy_year,copy_name,a.copy_id from SysCopys a inner join SysCopysUser b on a.copy_id=b.copy_id where a.curcopy_flag=''1'' and er_id=' + '''' +TmpPubUserID+ '''';注:两种写法都能在SQL-SERVER中运行,但第一种在ACCESS中不能运行4、Inner Join语句3SQl server 中可以执行以下语句'Select distinct sysoption.opti_id,sysoption.opti_name,sysoption.opti_code,sysroleoption.opti_sort From sysoption inner join sysroleoption ON sysoption.opti_id=sysroleoption.opti_id AND sysroleoption.role_id=:roleid'但ACCESS中不能,只能'Select distinct sysoption.opti_id,sysoption.opti_name,sysoption.opti_code,sysroleoption.opti_sort From sysoption inner join sysroleoption ON sysoption.opti_id=sysroleoption.opti_id Where sysroleoption.role_id=:roleid'5、Update语句Sql SerV er 中能执行但Access 中不能'Update sysuserrole SET sysuserrole.role_sort = (Select sysrole.role_sort FROM sysrole Where sysuserrole.role_id = sysrole.role_id and er_id='01')'6、日期比较SQL SERVER 中用StrSql:='select copy_year,Start_month,Cur_month,Start_Flag,Start_date,End_date ' +'From SysCopys '+'where copy_id='''+LoginCopyID+''' '+'and start_date<='''+datetostr(LoginDate)+''' '+'and end_date>='''+datetostr(LoginDate)+'''';ACCESS中用StrSql:='select copy_year,Start_month,Cur_month,Start_Flag,Start_date,End_date ' +'From SysCopys '+'where copy_id='''+LoginCopyID+''' '+'and start_date<=#'+datetostr(LoginDate)+'# '+'and end_date>=#'+datetostr(LoginDate)+'#'参考以上的第10个函数“GetDateStr”7、最大数值获取语句StrSql:='insert into sysRoleOption '+'select '''+fidRoleId+''' as Role_ID,opti_id,'+'convert(numeric,opti_id)-(convert(numeric,opti_parentid)*100)+'+ MaxOptiSort +' as opti_Sort from sysoption where opti_parentid='''+PCoTypeID(self.trvRoles.Selected.data)^.StrCoTypeID+''' and opti_bottom=''1'+'''';改为StrSql:='insert into sysRoleOption '+'select '''+fidRoleId+''' as Role_ID,opti_id,'+'opti_id-opti_parentid*100+'+ MaxOptiSort+' as opti_sort from sysoption where opti_parentid='''+PCoTypeID(self.trvRoles.Selected.data)^.StrCoTypeID+''' and opti_bottom=''1'+''''注:两种写法都能在SQL-SERVER中运行,但第一种在ACCESS中不能运行但是考虑会出现Null值以及语句的通用性,可以使用以上的第07个函数“GetNullStr”和第09个函数“GetConvertStr”来完成字符串向数字,空值和0数字的转换:参考GetNextNumStr代码。

Access数据库与SQL Server数据库的区别及应用

Access数据库与SQL Server数据库的区别及应用
计 算机 光盘 软件 与应 用
软件设计开发
C m u e D S f w r n p l c to s o p tr C o t a e a dA p a i n i 2 1 第 5期 0 0年
A cs 数据库与 S evr ces QLSr e 数据库的区别及应用
廖 海燕 ( 化市职业技术学校 ,广州从 化 从

50 0 ) 19 0
要 :本 文分 析 了 A cs与 S re 数据 库的 引擎、数 据访 问模 型 、数据 类型及 表设 计 ,并探 讨 了它们 在应 用领 ce s QLS vr e
域 上各 自的优 缺 点 。 关键 词 :A c s Q e e ;数 据库 ;应 用 ce ;S L Sr r s v
辣冕娄墅 JtA c* e (ce =
"x r e
Me o m  ̄
嚣掘娄墨 S L e 『 Q n s e
ca . n h r v rh r 1 a hr c a . a c a . n Th a
Lio ya a Hai n
ห้องสมุดไป่ตู้
( o g u o ain l c o l o g u 5 0 C n h aV c t a S h o, n h a 1 9 0) o C 0
Abta tT i a e n lzsteAcesa dS ev rd tb s n ie a c esmo e,a p sa dtbed s na d sr c: hs p ra ay e h c s n QL S re aa aee gn , t a c s d l t t e n l ei n p da da y a g
中图分类号 :T 3 11 P 1. 3
文献标识码:A

主流数据库的SQL语法差异分析

主流数据库的SQL语法差异分析

主流数据库的SQL语法差异分析主流数据库系统⽀持的SQL语句的差异主要有以下⼏点:数据类型的差异;运算符的差异;函数的差异;常⽤SQL的差异;取元数据信息的差异。

1.1.1数据类型的差异整数类型:在MYSQL中整数相关的类型有tinyint、smallint、mediumint、int、integer和bigint;在MSSQLServer中整数相关的类型有bit、int、smallint、tinyint和bigint;在Oracle中整数相关的类型有number;在DB2中整数相关的类型有smallint、integer和bigint。

数值类型:在MYSQL中数值相关的类型有float、double、real、decimal和numeric;在MSSQLServer中数值相关的类型有decimal、numeric、money、smallmoney、float和real;在Oracle中数值相关的类型有number;在DB2中数值相关的类型有decimal、numeric、real和double。

字符类型:在MYSQL中字符相关的类型有char、varchar、tinytext、text、mediumtext、longtext、enum和set;在MSSQLServer中字符相关的类型有char、varchar、text、nchar、nvarchar和ntext;在Oracle中字符相关的类型有char、varchar2、nvarchar2、clob和nclob;在DB2中字符相关的类型有CHARACTER、VARCHAR、LONGVARCHAR、CLOB、GRAPHIC、VARGRAPHIC和LONGVARGRAPHIC。

⽇期时间类型:在MYSQL中⽇期时间相关的类型有date、time、datetime、timestamp和year;在MSSQLServer中⽇期时间相关的类型有datetime、smalldatetime和timestamp;在Oracle中⽇期时间相关的类型有date 和timestamp;在DB2中⽇期时间相关的类型有DATE、TIME和TIMESTAMP。

ACCESS和SQL语法之ASP比较

ACCESS和SQL语法之ASP比较

Acces‎s与Sql‎Serv‎e r之AS‎P代码比较‎后台数‎据库:‎[Micr‎o soft‎Acce‎s s]‎与[M‎i cros‎o ft S‎q l Se‎r ver]‎更换之‎后,ASP‎代码应注意‎要修改的一‎些地方:‎[一]‎连接问题(‎举例)‎[Micr‎o soft‎Acce‎s s]‎c onst‎r = "‎D BQ=c‎:\dat‎a\clw‎z.mdb‎; DRI‎V ER={‎M icro‎s oft ‎A cces‎s Dri‎v er (‎*.mdb‎)}"‎[Micr‎o soft‎Sql ‎S erve‎r]c‎o nstr‎= "D‎R IVER‎={SQL‎Serv‎e r};S‎E RVER‎=host‎;DATA‎B ASE=‎m ydat‎a;uid‎=sa;p‎w d=" ‎[二]‎相似函数(‎举例)‎[1]D‎A TEDI‎F F(da‎t epar‎t, st‎a rtda‎t e, e‎n ddat‎e)其‎中“dat‎e part‎”参数可选‎项如下:‎设置描‎述——‎—————‎—————‎[Mi‎c roso‎f t Ac‎c ess]‎年 y‎y yy‎季度 q ‎月 m ‎一年的日‎数 y‎日 d‎一周的日数‎w周‎ww‎小时 h ‎分钟 n‎秒 s‎[M‎i cros‎o ft S‎q l Se‎r ver]‎yea‎r yy,‎yyyy‎qua‎r ter ‎q q, q‎mon‎t h mm‎, m‎d ayof‎y ear ‎d y, y‎day‎dd, ‎dwe‎e k wk‎, ww ‎hour‎hh‎m inut‎e mi,‎ns‎e cond‎ss, ‎smi‎l lise‎c ond ‎m s‎-----‎-----‎-----‎-----‎-----‎基本‎上差不多,‎但注意的是‎在写的时候‎,[M‎i cros‎o ft A‎c cess‎]要加引号‎,如:da‎t edif‎f('d'‎,endd‎a te,'‎2004/‎08/01‎') [‎M icro‎s oft ‎S ql S‎e rver‎]则不需要‎,如:da‎t edif‎f(d,e‎n ddat‎e,'20‎04/08‎/01')‎[2‎][Mic‎r osof‎t Acc‎e ss]中‎可用如cs‎t r等转数‎据类型函数‎,而[‎M icro‎s oft ‎S ql S‎e rver‎]中则用c‎o nver‎t或cas‎t函数,如‎:co‎n vert‎(varc‎h ar,[‎a moun‎t])等。

浅析使用Access 2000与SQL Server 2000的区别

浅析使用Access 2000与SQL Server 2000的区别

浅析使用Access 2000与SQL Server 2000的区别
罗兴荣
【期刊名称】《电脑知识与技术》
【年(卷),期】2007(000)017
【摘要】在软件开发过程中,少不了要使用数据库.Access 2000与SQL Server 2000是目前用得比较多的.由于Access 2000使用简单方便,但安全性差,而SQL Server 2000安全可靠,所以在使用数据库开发或升级软件时必须注意到他们存在的区别.
【总页数】2页(P1355-1356)
【作者】罗兴荣
【作者单位】湖北恩施职业技术学院;计算机与信息工程系,湖北,恩施,445000【正文语种】中文
【中图分类】TP311
【相关文献】
1.Access 2000与SQL Server 2000数据库的连接技术 [J], 杨云海
2.浅析使用Access 2000与SQL Server 2000的区别 [J], 罗兴荣
3.浅析SQL Server2000中游标的使用 [J], 朱倩
中如何连接Sql Server2000和Access2000数据库 [J], 贺军;李喜梅;章毅;吴世富;谌顺周
5.浅析使用Access 2000与SQL Server 2000的区别 [J], 罗兴荣
因版权原因,仅展示原文概要,查看原文内容请购买。

Access和SQL Server的区别

Access和SQL Server的区别

广州柏杰电子科技有限公司
SQL Server数据库与Access数据库的区别Microsoft Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。

但是它的同时访问客户端不能多于4个。

Microsoft Access数据库有一定的极限,假如数据达到100M左右,很轻易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。

Microsoft SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上治理上也要比Microsoft Access要强得多。

在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。

因为现在数据库都使用标准的SQL语言对数据库进行治理,所以假如是标准SQL语言,两者基本上都可以通用的。

Microsoft SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。

但Microsoft SQL Server也有缺点,租用空间时需要另外购买,价格比ACCESS 的空间要高。

ACCESS (VS) MSSQL以及MYSQL的优缺点

ACCESS (VS) MSSQL以及MYSQL的优缺点
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。
SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。
ACCESS和MSSQL以及MYSQL的优缺点
简单说如下:
mysql的优势是免费,最有理的运行平台是LINUX,不过在WINDOWS上也完全兼容。
MSSQL SERVER功能强大,管理方便,只能运行在WINDOWS中。
ACCESS小巧,但难以支持大型应用,只能运行在WINDOWS中。
MySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。提供由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库
MySQL特点:
数据库是网站组成的重要元素之一,选择合适的数据库不仅让网站管理维护起来得心应手还能够节约成本,数据库转换是很麻烦的事情,所以做网站之前就考虑好网站的数据量选择合适的数据库。作为网站开发者,不仅要考虑网站所使用的数据库类型还要考虑便于自己开发的数据库,这样开发出来的网站才不会出现因为不熟悉数据库而产生的BUG问题,很多网站有死循环,或者运行出错都是因为数据库关系有问题导致。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL server与Access数据库sql语法十大差异
1、select,update语句区别
select,update对于单表操作时基本一致。

但多表操作时update语句的区别ACCESS与SQLSERVER中的UPDATE语句会有差别:
SQLSERVER中更新多表的UPDATE语句:
UPDATE Table1 SET = FROM Table1 a, Table2 b WHERE a.ID = b.ID;
ACCESS中同样功能的SQL语句:
UPDATE Table1 a, Table2 b SET = WHERE a.ID = b.ID;
比较得出:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后,这点同mysql;
2、delete语句
SQLSERVER中:DELETE from Table1 WHERE ID > 1;
Access中:DELETE * from Table1 WHERE ID > 1;
比较得出:SQLSERVER中,即只要把select语句里的select与delete的操作语法一致的,不需要*;
3、as后面的计算字段区别
SQLSERVER中:SELECT a.sum(num) as sum_num, sum(num)*num as all_num; 即
Access中: SELECT a,sum(num) as sum_num, sum_num*num as all_num; 即
比较得出:SQLSERVER中:不可以把AS后的字段当作一个数据库字段参与计算。

Access中: 可以把AS 后的字段当作一个数据库字段参与计算。

4、「.」与「!」的差异
SQLSERVER中:SELECT Table1.a AS Table1a, Table2.b AS Table2b FROM Table1, Table2;
Access中:SELECT Table1!a AS Table1a, Table2!b AS Table2b FROM Table1, Table2;
比较得出:
「!」使用的场合很少,在ACCESS中也是可以使用「.」的,但不要吧省略AS;
5、日期分隔符号
SQLSERVER中:单引号(’)。

Access中:井号(#)
6、Boolean所表示的常量
SQLSERVER中:整数:1(真)、0(假)。

Access中:True、False;On、Off;Yes、No;整数:-1(真)、0(假)。

7、字符串连接
SQLSERVER中:加号(+)。

Access中:和号(&)
8、通配符
SQLSERVER中:
百分号(%)与零个或更多字符匹配。

下划线(_)与单个字符匹配。

上插入符(^)意味着不在列表中。

没有与英镑符(#)对应的字符。

Access中:星号(*)与零个或更多字符匹配。

问号(?)与单个字符匹配。

叹号(!)意味着不在列表中。

英镑符(#)意味着单个数字。

9、DROP INDEX
SQLSERVER中:Drop Index <表名>.<索引名>。

Access中:Drop Index <索引名> ON <表名> 10、表添加标识列
SQLSERVER中:alter table <表名> add <列名> bigint identity(1,1) not null。

相关文档
最新文档