SQLServer和MySql语法和关键字的区别Word格式.docx

上传人:b****6 文档编号:21319122 上传时间:2023-01-29 格式:DOCX 页数:15 大小:26.37KB
下载 相关 举报
SQLServer和MySql语法和关键字的区别Word格式.docx_第1页
第1页 / 共15页
SQLServer和MySql语法和关键字的区别Word格式.docx_第2页
第2页 / 共15页
SQLServer和MySql语法和关键字的区别Word格式.docx_第3页
第3页 / 共15页
SQLServer和MySql语法和关键字的区别Word格式.docx_第4页
第4页 / 共15页
SQLServer和MySql语法和关键字的区别Word格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

SQLServer和MySql语法和关键字的区别Word格式.docx

《SQLServer和MySql语法和关键字的区别Word格式.docx》由会员分享,可在线阅读,更多相关《SQLServer和MySql语法和关键字的区别Word格式.docx(15页珍藏版)》请在冰豆网上搜索。

SQLServer和MySql语法和关键字的区别Word格式.docx

即使服务器崩溃,这一二进制日志也会保持完整,而且复制的部分也不会受到损坏。

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

安全性

这两个产品都有自己完整的安全机制。

只要你遵循这些安全机制,一般程序都不会出现什么问题。

这两者都使用缺省的IP端口,但是有时候很不幸,这些IP也会被一些黑客闯入。

当然,你也可以自己设置这些IP端口。

◆恢复性:

先进的SQL服务器

恢复性也是MySQL的一个特点,这主要表现在MyISAM配置中。

这种方式有它固有的缺欠,如果你不慎损坏数据库,结果可能会导致所有的数据丢失。

然而,对于SQL服务器而言就表现得很稳键。

SQL服务器能够时刻监测数据交换点并能够把数据库损坏的过程保存下来。

根据需要决定你的选择

对于这两种数据库,如果非要让我说出到底哪一种更加出色,也许我会让你失望。

以我的观点,任一对你的工作有帮助的数据库都是很好的数据库,没有哪一个数据库是绝对的出色,也没有哪一个数据库是绝对的差劲。

我想要告诉你的是你应该多从你自己的需要出发,即你要完成什么样的任务?

而不要单纯地从软件的功能出发。

如果你想建立一个.NET服务器体系,这一体系可以从多个不同平台访问数据,参与数据库的管理,那么你可以选用SQL服务器。

如果你想建立一个第三方站点,这一站点可以从一些客户端读取数据,那么MySQL将是最好的选择。

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

●优点分析:

MYSQL短小精悍,容易上手,操作简单,免费供用的。

相对其它数据库有特色又实用的语法多一些。

SQL怎么也算是大型数据库,稳定,能做一般大系统的数据仓库,运行速度明显比MYSQL快N多(海量数据下这个优势显而易见)。

●缺点分析:

MYSQL难担当大系统的数据仓库,运行速度慢,不够稳定,有掉线的情况。

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

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

MySQL是MySQL·

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

语言都是一样的(SQL)是结构化查询语言.

 

◆语法和关键字区别

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

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

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

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

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

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

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

8.MSSQL不支持replaceinto语句,但是在最新的sql20008里面,也支持merge语法

9.MySQL支持insertintotable1sett1=‘’,t2=‘’,但是MSSQL不支持这样写

10.MySQL支持insertintotabl1values(1,1),(1,1),(1,1),(1,1),(1,1),(1,1),(1,1)

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

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

13.MSSQL里面检查是否有这个表再删除,需要这样:

if 

exists(select* 

from 

dbo.sysobjects 

where 

id=object_id(N'

uc_newpm'

)andOBJECTPROPERTY(id,N'

IsUserTable'

)=1)

但是在MySQL里面只需要DROPTABLEIFEXISTScdb_forums;

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

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

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

KEYdisplayorder(fid,displayorder)在MSSQL里面必须要:

createuniquenonclusteredindex

index_uc_protectedmembers_username_appidondbo.uc_protectedmembers

(usernameasc,appidasc)

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

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

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

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

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

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.MySqlout,in,inout的区别——MySQL存储过程“in”参数:

跟C语言的函数参数的值传递类似,MySQL存储过程内部可能会修改此参数,但对in类型参数的修改,对调用者(caller)来说是不可见的(notvisible)。

MySQL存储过程“out”参数:

从存储过程内部传值给调用者。

在存储过程内部,该参数初始值为null,无论调用者是否给存储过程参数设置值。

MySQL存储过程inout参数跟out类似,都可以从存储过程内部传值给调用者。

不同的是:

调用者还可以通过inout参数传递值给存储过程。

30.MySQL的if语句为

if(条件)then

endif;

或者

If(条件)then

Else

Endif

If(条件)then

Elseif(注意不能写成Elseif)

Elseif

Endif

31.Mysql的Execute对应SqlServer的exec;

(注意:

必须想下面这样调用)

Set@cnt=’select*from表名’;

Preparestrfrom@cnt;

Executestr;

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

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

33.mysql的日期

1)获得当前日期函数:

curdate(),current_date()

2)获得当前时间函数:

curtime();

3)获得当前日期+时间:

now();

4)MySQLdayof...函数:

dayofweek(),dayofmonth(),dayofyear()分别返回日期参数,在一周、一月、一年中的位置。

5)(注:

周日=1,周一=2,周二=3,……)

6)返回本月的天数:

selectday(last_day(now()));

7)MySQL为日期增加一个时间间隔:

date_add()

8)selectdate_add(CURRENT_DATE(),interval‘要增加的天数’day)asFdate

9)MySQL为日期减去一个时间间隔:

date_sub()

10)selectdate_sub('

1998-01-0100:

00:

00'

interval'

11:

1:

1'

day_second);

11)MySQL日期、时间相减函数:

datediff(date1,date2),timediff(time1,time2)

12)MySQL拼凑日期、时间函数:

makdedate(year,dayofyear),maketime(hour,minute,second)

13)例:

selectmakedate(2001,31);

--'

2001-01-31'

14)selectmakedate(2001,32);

2001-02-01'

15)本周时间(起始)

16)selectdate_sub(CURRENT_DATE(),intervaldayofweek(curdate())-2day)asFdate

17)本周时间(结束)

18)selectdate_add(CURRENT_DATE(),intervaldayofweek(curdate())+3day)asFdate

19)上周时间(起始)

20)selectdate_sub(CURRENT_DATE(),intervaldayofweek(curdate())+5day)asFdate

21)上周时间(结束)

22)selectdate_sub(CURRENT_DATE(),intervaldayofweek(curdate())-1day)asFdate

23)本月时间(起始)

24)selectDATE_SUB(CURDATE(),INTERVALDAY(CURDATE())-1DAY)asFdate

25)本月时间(结束)

26)Selectdate_add(current_date(),intervalday(last_day(CURDATE()))-day(CURDATE())day)asFdate

27)上月时间(起始)

28)selectDATE_SUB(DATE_SUB(CURDATE(),INTERVALDAY(CURDATE())DAY),intervalday(last_day(DATE_SUB(CURDATE(),INTERVALDAY(CURDATE())DAY)))-1day)asFdate

29)上月时间(结束)

30)selectDATE_SUB(CURDATE(),INTERVALDAY(CURDATE())DAY)asFdate

31)今年时间(起始)

32)selectmakedate(year(curdate()),1)asFDate

33)今年时间(结束)

34)selectDATE_SUB(makedate(year(curdate())+1,1),INTERVAL1day)asFdate

35)去年时间(起始)

36)selectmakedate(year(curdate())-1,1)asFdate

37)去年时间(结束)

38)selectDATE_SUB(makedate(year(curdate()),1),INTERVAL1day)asFDate

39)DATE_FORMAT(date,format):

根据format字符串格式化date值。

下列修饰符可以被用在format字符串中

40)%M 

 

月名字(January……December) 

%W 

星期名字(Sunday……Saturday) 

%D 

有英语前缀的月份的日期(1st, 

2nd, 

3rd, 

等等。

) 

%Y 

年, 

数字, 

位 

%y 

%a 

缩写的星期名字(Sun……Sat) 

%d 

月份中的天数, 

数字(00……31) 

%e 

数字(0……31) 

%m 

月, 

数字(01……12) 

%c 

数字(1……12) 

%b 

缩写的月份名字(Jan……Dec) 

%j 

一年中的天数(001……366) 

%H 

小时(00……23) 

%k 

小时(0……23) 

%h 

小时(01……12) 

%I 

%l 

小时(1……12) 

%i 

分钟, 

数字(00……59) 

%r 

时间,12 

小时(hh:

mm:

ss 

[AP]M) 

%T 

时间,24 

ss) 

%S 

秒(00……59) 

%s 

%p 

AM或PM 

41)%w 

一个星期中的天数(0=Sunday 

……6=Saturday 

) 

%U 

星期(0……52), 

这里星期天是星期的第一天 

%u 

这里星期一是星期的第一天 

%% 

一个文字“%”。

42)例:

所有的其他字符不做解释被复制到结果中。

mysql>

select 

DATE_FORMAT('

1997-10-04 

22:

23:

 

'

%W 

%M 

%Y'

);

->

'

Saturday 

October 

1997'

select 

%H:

%i:

%s'

43)->

22:

44)mysql>

%D 

%y 

%a 

%d 

%m 

%b 

%j'

45)->

4th 

97 

Sat 

04 

10 

Oct 

277'

46)mysql>

%H 

%k 

%I 

%r 

%T 

%S 

%w'

47)->

22 

22 

10:

00 

PM 

00 

6'

34.MySql存储过程中没有return函数,在MySql中可以用循环和out参数代替

IfEXISTS(SELECT*FROMT_ChanceWHEREFCustID=CostomerID)return0

改写为:

(在参数中定义一个out变量:

outtempvarchar(100);

BEGIN

Loop1:

loop

SELECTcount(*)FROMT_ChanceWHEREFCustID=CostomerIDint@cnt

If@cnt>

0then

begin

settemp=0;

leaveloop1;

end;

endif

endlooploop1;

35.(13)select@a=count(*)fromVW_Action在mySql中修改为:

selectcount(*)fromVW_Actioninto@a;

36.(14)MySQL中没有top关键字,需要用limit代替且放在后面

注意,在MySQL中的limit不能放在子查询内,limit不同与SQLServer,它可以规定范围limita,b——范围a-b

SQLSERVER:

selecttop8*fromtable1

MYSQL:

select*fromtable1limit5;

37.(15)即使存储过程没有参数也要写括号“()”

38.(16)当一个存储过程中有创建临时表时

createprocedureup_test

()

begin

droptableifexiststb1;

createTEMPORARYtabletb1//注意添加TEMPORARYtable

idint,

namevarchar(20)

//注意最后加分号

inserttb1values('

'

jim'

select*fromtb1;

end

39.(17)建表中自增长问题:

createtableuser

Idvarchar(10)primarykeyauto_incrementnotnull,

Namevarchar(20)notnull,

Passwordvarchar(20),

create_datedatetime

auto_increment自增长

40.(18)"

UnabletoconvertMySQLdate/timevaluetoSystem.DateTime"

这是因为在日期列中有"

0000-00-00"

数据值,要修正这个问题,你可以把这些数据设为null,或者在连接字符串中设置"

AllowZeroDatetime=True"

41.(19)MySQL视图的FROM子句不允许存在子查询,因此对于SQLServer中FROM子句带有子查询的视图,需要手工进行迁移。

可通过消除FROM子句中的子查询,或将FROM子句中的子查询重构为一个新的视图来进行迁移。

◆数据库迁移:

从SQLSERVER到Mysql

42.利用工具

从sql导出到mysql的方法很多,现介绍一种无需编程,直接利用sql和mysql里的图形界面进行导入导出的简单方法。

前提是已经安装了sqlserver客户端和mysql的图形界面管理工具phpmyadmin。

在控制台根目录下打开sqlserver企业管理器,新建sqlserver组,根据自己的情况进行选择;

然后新建sqlserver注册,进行对sqlserver的连接。

准备妥当后,下面就开始了:

首先打开数据转换服务,新建包,打开DTS界面,在连接中选择数据源进行配置。

再选择将要转换到的目的文件,这里我选的Textfile(destination),选择好文件的存放位置之后,我们来新建一个任务。

这里我们只选择转换数据任务,将带有“选择源连接”“选择目的连接”的鼠标分别选中数据源和目的之后,我们对新生成的连接进行定义,在其属性中将源,目的,转换依次定义。

执行任务,提示成功。

保存任务。

然后在新建的任务上导出数据,有向导提示,其中一项选择“从

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1