MySql和Sql Server语法和关键字区别

640?wx_fmt=png

1. MySQL支持enum,和set类型,SQL Server不支持


2. MySQL不支持nchar,nvarchar,ntext类型 


3. MySQL的递增语句是AUTO_INCREMENT,而MS SQL是identity(1,1) 


4. MS SQL默认到处表创建语句的默认值表示是((0)),而在MySQL里面是不允许带两括号的


5. MySQL需要为表指定存储类型  


6.  MS SQL识别符是[],[type]表示他区别于关键字,但是MySQL却是 `,也就是按键1左边的那个符号


7.  MS SQL支持getdate()方法获取当前时间日期,但是MySQL里面可以分日期类型和时间类型,获取当前日期是current_date (),当前完整时间是 now()函数


8. MS SQL不支持replace into 语句,但是在最新的sql20008里面,也支持merge语法


9.  MySQL支持insert into table1 set t1 = „‟, t2 = „‟ ,但是MS SQL不支持这样写 


10. MySQL支持insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1) 


11. MySQL在创建表时要为每个表指定一个存储引擎类型,而MS SQL只支持一种存储引擎


12. MySQL不支持默认值为当前时间的datetime类型(MS SQL很容易做到),在MySQL里面 是用timestamp类型 


13. MS SQL里面检查是否有这个表再删除,需要这样:if exists (select *   from   dbo.sysobjects     where  id = object_id(N'uc_newpm') and OBJECTPROPERTY(id,N'IsUserTable')=1)  但是在MySQL里面只需要 DROP TABLE IF EXISTS cdb_forums;


14.  MySQL支持无符号型的整数,那么比不支持无符号型的MS SQL就能多出一倍的最大数 存储 


15. MySQL不支持在MS SQL里面使用非常方便的varchar(max)类型,这个类型在MS SQL里 面既可做一般数据存储,也可以做blob数据存储 


16. MySQL创建非聚集索引只需要在创建表的时候指定为key就行,比如:KEY displayorder  (fid,displayorder) 在MS SQL里面必须要:create unique nonclustered index  index_uc_protectedmembers_username_appid on dbo.uc_protectedmembers  (username asc,appid asc)


17. MySQL text字段类型不允许有默认值 


18. MySQL的一个表的总共字段长度不超过65XXX。 


19. 一个很表面的区别就是MySQL的安装特别简单,而且文件大小才110M(非安装版),相 比微软这个庞然大物,安装进度来说简直就是..... 


20. MySQL的存储过程只是出现在最新的版本中,稳定性和性能可能不如MS SQL。


21. 同样的负载压力,MySQL要消耗更少的CPU和内存,MS SQL的确是很耗资源。


22. mysql的ifnull()函数对应sql的isnull()函数;


23. mysql的存储过程中变量的定义去掉@;


24. mysql的每句结束要用";" 


25. SQLServer存储过程的AS在MySql中需要用begin .....end替换 


26. 字符串连接用concat()函数;如 SQLServer: Temp=‟select * from ‟+‟tablename‟+…+…   MySql:Temp=concat(‟select * from‟, ‟tablecname‟,…,…)  


27. mysql的uuid()对应mssql的GUID(); 


28. MySql的out对应SQLServer的output,且mysql 的out要放在变量的前面,SQLServer 的output放在变量后面 


29. MySql out,in,inout的区别——MySQL 存储过程 “in” 参数:跟 C 语言的函数参 数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)。MySQL 存储过程 “out” 参数:从存储过程内部传值给调用者。在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值。MySQL 存储过程 inout 参数跟 out 类似,都可以从存储过程内部传值给调用者。不同的是:调用者还可以通过 inout 参数传递值给存储过程。


30. MySQL的if语句为  if  (条件)  then  end if; 或者  If  (条件) then Else End if 或者  If(条件)then  Elseif (注意不能写成 Else if )   Elseif  …   End if 


31. Mysql的Execute对应SqlServer的exec;   (注意:必须想下面这样调用)  Set @cnt=‟select * from 表名‟;  Prepare str from @cnt;   Execute str;


32. MySql存储过程调用其他存储过程用call  Call 函数名(即SQLServer的存储过程名)(‟参数1‟,‟参数2‟,……)   


猜你喜欢

转载自blog.csdn.net/xishining/article/details/81048975