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

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> MySql和Sql Server语法和关键字区别

MySql和Sql Server语法和关键字区别
  1. MySQL支持enum,和set类型,SQL Server不支持
  1. MySQL不支持nchar,nvarchar,ntext类型 
  1. MySQL的递增语句是AUTO_INCREMENT,而MS SQL是identity(1,1) 
  1. MS SQL默认到处表创建语句的默认值表示是((0)),而在MySQL里面是不允许带两括号的
  1. MySQL需要为表指定存储类型  

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

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

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

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

  1. MySQL支持insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1) 
  1. MySQL在创建表时要为每个表指定一个存储引擎类型,而MS SQL只支持一种存储引擎
  1. MySQL不支持默认值为当前时间的datetime类型(MS SQL很容易做到),在MySQL里面 是用timestamp类型 
  1. 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就能多出一倍的最大数 存储 

  1. MySQL不支持在MS SQL里面使用非常方便的varchar(max)类型,这个类型在MS SQL里 面既可做一般数据存储,也可以做blob数据存储 
  1. 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)
  1. MySQL text字段类型不允许有默认值 
  1. MySQL的一个表的总共字段长度不超过65XXX。 
  1. 一个很表面的区别就是MySQL的安装特别简单,而且文件大小才110M(非安装版),相 比微软这个庞然大物,安装进度来说简直就是….. 
  1. MySQL的存储过程只是出现在最新的版本中,稳定性和性能可能不如MS SQL。
  1. 同样的负载压力,MySQL要消耗更少的CPU和内存,MS SQL的确是很耗资源。
  1. mysql的ifnull()函数对应sql的isnull()函数;
  1. mysql的存储过程中变量的定义去掉@;
  1. mysql的每句结束要用”;” 
  1. SQLServer存储过程的AS在MySql中需要用begin …..end替换 
  1. 字符串连接用concat()函数;如 SQLServer: Temp=‟select * from ‟+‟tablename‟+…+…   MySql:Temp=concat(‟select * from‟, ‟tablecname‟,…,…)  
  1. mysql的uuid()对应mssql的GUID(); 
  1. MySql的out对应SQLServer的output,且mysql 的out要放在变量的前面,SQLServer 的output放在变量后面 
  1. MySql out,in,inout的区别——MySQL 存储过程 “in” 参数:跟 C 语言的函数参 数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)。MySQL 存储过程 “out” 参数:从存储过程内部传值给调用者。在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值。MySQL 存储过程 inout 参数跟 out 类似,都可以从存储过程内部传值给调用者。不同的是:调用者还可以通过 inout 参数传递值给存储过程。
  1. MySQL的if语句为  if  (条件)  then  end if; 或者  If  (条件) then Else End if 或者  If(条件)then  Elseif (注意不能写成 Else if )   Elseif  …   End if 
  1. Mysql的Execute对应SqlServer的exec;   (注意:必须想下面这样调用)  Set @cnt=‟select * from 表名‟;  Prepare str from @cnt;   Execute str;
  1. MySql存储过程调用其他存储过程用call  Call 函数名(即SQLServer的存储过程名)(‟参数1‟,‟参数2‟,……)   

始发于微信公众号: IT技术分享社区

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> MySql和Sql Server语法和关键字区别


 上一篇
《Oracle Concept》第一章-1 《Oracle Concept》第一章-1
预计阅读时间:12分钟 背景: 按照《Oracle Conecpt》的结构一起了解Oracle,这是从入门到精通的基础。 前言《Introduction to Oracle Database》的历史文章: 《》 《》 《》 《》 《》 《》
下一篇 
有关10053事件,你知道这两个知识点么? 有关10053事件,你知道这两个知识点么?
预计阅读时间:11分钟 在Oracle中,10053事件可以创建优化器的trace,因此也叫优化器跟踪文件(Optimizer trace file),这个文件,告诉你Oracle为什么选择这种,而不是另一种执行计划,相应的成本值