SQL Server 和 MySql 语法和关键字的区别

SQL Server 和 MySql 语法和关键字的区别,第1张

一、首先我们来看一下两者的本质区别有哪些:

1.二者所遵循的基本原则是它们的主要区别:开放vs保守

2.从发行费用上来说,MySQL不全是免费,但很便宜

3.纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM。MyISAM 数据库与磁盘非常地兼容而不占用过多的CPU和内存;当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。

总体上来说,两者各有优缺点,总结如下:

优点:

MYSQL短小精悍,容易上手, *** 作简单,免费供用的。相对其它数据库有特色又实用的语法多一些。SQL怎么也算是大型数据库,稳定,能做一般大系统的数据仓库,运行速度明显比MYSQL快N多(海量数据下这个优势显而易见)。

缺点:

MYSQL难担当大系统的数据仓库,运行速度慢,不够稳定,有掉线的情况。SQL SERVER价格贵(当然没说5元盗版),使用起来比MYSQL要难一些,毕竟东西大了说道多点。

二、语法和关键字区别

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 table1set t1 = ‘’, t2 = ‘’ ,但是MS SQL不支持这样写

10. MySQL支持insert into tabl1values (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类型

等等。。。。还有很多,这些都需要我们在日常学习和工作中总结认识。

首页考试资料幻灯片工程技术公务员考试小学教学中学教学大学教学外语资料

38SQL_Server_和MySql_语法和关键字的区别

SQLServer和MySql语法和关键字的区别;——用于SQLServer到MySql的转换;对于程序开发人员而言,目前使

用最流行的两种后台数;?根本的区别是它们遵循的基本原则;二者所遵循的基本原则是它们的主要区别:开放vs保;?发行费用:MySQL不全是免费,但很

便宜;当提及发行的费用,这两个产品采用两种绝然不同的决;?性能:先进的MySQL;纯粹就性能

SQL Server 和 MySql 语法和关键字的区别

——用于SQLServer到MySql的转换

于程序开发人员而言,目前使用最流行的两种后台数据库即为MySQL and SQL

Server。这两者最基本的相似之处在于数据存储和属于查询系统。你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL。还有,

这两种数据库系统都支持二进制关键词和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式。除了在显而易见的软件价格上的区别

之外,这两个产品还有什么明显的区别吗?在这二者之间你是如何选择的?让我们看看这两个产品的主要的不同之处,包括发行费用,性能以及它们的安全性。

? 根本的区别是它们遵循的基本原则

者所遵循的基本原则是它们的主要区别:开放vs保守。SQL服务器的狭隘的,保守的存储引擎与MySQL服务器的可扩展,开放的存储引擎绝然不同。虽然你

可以使用SQL服务器的Sybase引擎,但MySQL能够提供更多种的选择,如MyISAM, Heap, InnoDB, and Berkeley

DB。MySQL不完全支持陌生的关键词,所以它比SQL服务器要少一些相关的数据库。同时,MySQL也缺乏一些存储程序的功能,比如MyISAM引擎

联支持交换功能。

? 发行费用:MySQL不全是免费,但很便宜

当提及发行的费用,这两个产品采用两种绝然

不同的决策。对于SQL服务器,获取一个免费的开发费用最常的方式是购买微软的Office或者Visual

Studio的费用。但是,如果你想用于商业产品的开发,你必须还要购买SQL Server Standard

Edition。学校或非赢利的企业可以不考虑这一附加的费用。

? 性能:先进的MySQL

纯粹就性能而

言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM。MyISAM

数据库与磁盘非常地兼容而不占用过多的CPU和内存。MySQL可以运行于Windows系统而不会发生冲突,在UNIX或类似UNIX系统上运行则更

好。你还可以通过使用64位处理器来获取额外的一些性能。因为MySQL在内部里很多时候都使用64位的整数处理。Yahoo!商业网站就使用MySQL

作为后台数据库。

当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,必须增加额外复杂 *** 作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQL服务器,我建议你最好选择其他如DBMS数据库,因为这样你会得到更好的结果。

? 安全功能

MySQL有一个用于改变数据的二进制日志。因为它是二进制,这一日志能够快速地从主机上复制数据到客户机上。即使服务器崩溃,这一二进制日志也会保持完整,而且复制的部分也不会受到损坏。

在SQL服务器中,你也可以记录SQL的有关查询,但这需要付出很高的代价。

安全性

这两个产品都有自己完整的安全机制。只要你遵循这些安全机制,一般程序都不会出现什么问题。这两者都使用缺省的IP端口,但是有时候很不幸,这些IP也会被一些黑客闯入。当然,你也可以自己设置这些IP端口。

? 恢复性:先进的SQL服务器

恢复性也是MySQL的一个特点,这主要表现在MyISAM配置中。这种方式有它固有的缺欠,如果你不慎损坏数据库,结果可能会导致所有的数据丢失。然而,对于SQL服务器而言就表现得很稳键。SQL服务器能够时刻监测数据交换点并能够把数据库损坏的过程保存下来。

根据需要决定你的选择

于这两种数据库,如果非要让我说出到底哪一种更加出色,也许我会让你失望。以我的观点,任一对你的工作有帮助的数据库都是很好的数据库,没有哪一个数据库

是绝对的出色,也没有哪一个数据库是绝对的差劲。我想要告诉你的是你应该多从你自己的需要出发,即你要完成什么样的任务?而不要单纯地从软件的功能出发。

如果你想建立一个.NET服务器体系,这一体系可以从多个不同平台访问数据,参与数据库的管理,那么你可以选用SQL服务器。如果你想建立一个第三方站点,这一站点可以从一些客户端读取数据,那么MySQL将是最好的选择。

这两者数据库都能够在.NET或J2EE下运行正常,同样,都能够利用RAID。

? 优点分析:

MYSQL短小精悍,容易上手, *** 作简单,免费供用的。相对其它数据库有特色又实用的语法多一些。SQL怎么也算是大型数据库,稳定,能做一般大系统的数据仓库,运行速度明显比MYSQL快N多(海量数据下这个优势显而易见)。

? 缺点分析:MYSQL难担当大系统的数据仓库,运行速度慢,不够稳定,有

掉线的情况。SQL SERVER价格贵(当然没说5元盗版),使用起来比MYSQL要难一些,毕竟东西大了说道多点。

SQL-Server 2000 是微软公司开发的中型数据库,它的可视化方面做得很好,在安全性等方面功能非常强大,并且有微软的强大技术支持,当然价格比较昂贵,适合应用于中型系统。

MySQL是 MySQL·AB开发的小型数据库,基本上具有了数据库所需的所有功能,但是功能没有SQL-Server强大,技术支持也跟不上,但是价格便宜,在满足它的许可协议的情况下可以免费使用,适合于小型系统。 语言都是一样的(SQL)是结构化查询语言.

? 语法和关键字区别

1.

2.

3.

4.

5.

6.

MySQL

支持enum,和set类型,SQL Server不支持 MySQL不支持nchar,nvarchar,ntext类型

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

SQL默认到处表创建语句的默认值表示是((0)),而在MySQL里面是不允许带两括号的 MySQL需要为表指定存储类型 MS

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

那个符号

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

型,获取当前日期是cur_date(),当前完整时间是 now()函数

8.

9. MS SQL不支持replace into 语句,但是在最新的sql20008里面,也支持merge语法 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里面检查是否有这个表再删除,需要这样:

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

存储

15. MySQL不支持在MS SQL里面使用非常方便的varchar(max)类型,这个类型在MS SQL里

面既可做一般数据存储,也可以做blob数据存储

16. MySQL创建非聚集索引只需要在创建表的时候指定为key就行,比如:KEY displayorder

(fid,displayorder) 在MS SQL里面必须要:

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()对应sql的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 Elseif … End if (注意不能写成 Else if ) 31. Mysql的Execute对应SqlServer的exec

32. MySql存储过程调用其他存储过程用call

Call 函数名(即SQLServer的存储过程名)(?参数1?,?参数2?,……)

33. mysql的日期

1) 获得当前日期函数:curdate(),current_date()

2) 获得当前时间函数:curtime()

3) 获得当前日期+时间:now()(注意:必须想下面这样调用) Set @cnt=?select * from 表名?Prepare str from @cntExecute str

但是这里要提一下的是mysql是支持使用关键字做字段名的,但是针对保留关键字是必须要加引用。mysql官网提供了三个例子是可以很好的说明这些的。

interval begin、end都是关键字,interval是保留关键字,因此会报错

mysql>CREATE TABLE interval (begin INT, end INT)

ERROR 1064 (42000): You have an error in your SQL syntax ...

near 'interval (begin INT, end INT)'

当给interval加上引用''后便可以正确执行该sql语句,也不会报begin、end的错,因为这是mysql允许的,但是不推荐这个用法,谁知道升级之后会不会变成保留字。。。。。。

mysql>CREATE TABLE `interval` (begin INT, end INT)

Query OK, 0 rows affected (0.01 sec)

(这个可以略过,,,,,反正不推荐使用关键字做这些事,)还有一种情况——内置函数的名字,官网是这样说的:

Names of built-in functions are permitted as identifiers but may require care to be used as such

mysql>CREATE TABLE mydb.interval (begin INT, end INT)

Query OK, 0 rows affected (0.01 sec)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5947887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-09
下一篇 2023-03-09

发表评论

登录后才能评论

评论列表(0条)

保存