MySql与SQLServer数据库基础语法差异;

发布时间 2023-11-10 18:20:06作者: xd_1989

1. 应用Native 工具将数据同步,将数据库结构和同步到MySql。视图、存储过程、函数手动创建。
2. 移除数据所有数据查询的数据框架标识"dbo";
3. MySQL中IFNULL用法,用法与SQLServer中ISNULL(expr1,expr2)用法相似.,而MySql中isnull()的返回值为1,否则返回值为0;
4. sql server的识别符号是[],而mysql的识别符号是`
5. MySql字符串拼接用CONCAT(str1,str2)函数,其实在SqlServer中也存在CONCat函数,效果一致;
6. 创建视图不能包含子查询,GO非MySql关键字
7. 对象名称不能包含中括号(表名,视图名,存储过程名称)
8. SqlServer 查询Top 10,在My Sql 中维护限定 LIMIT 10
9. sql server支持用getdate()的方法获取当前时间日期,但是mysql获取当前日期方法是通过cur_date(),获取当前完整时间则是要通过now()函数。
10. MySql中在查询时,如果同时用星号【*】和指定字段名,指定字段名只能放在星号之后,
11. 在Mysql中虽然数据类型定义了Int类型,但是在字符串转Int类型是,只能应用CAST(str1 as SIGNED);
12. MySql和Sqlserver都定义了Convert函数,但是语法结构不同,Sql Server 中类型转换CONVERT(type, str1),而在MySql中则为CONVERT(str1,type);另外mysql 定义了特殊的函数将字符串转换为时间类型 str_to_date(str, format),也可以使用Cast或者Convert(时间类型转换参考: MySQL中将字符串转为datetime类型_mysql 字符串转datetime_小白学数分的博客-CSDN博客)
13. 关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL 。MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。<=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true
14. INSERT IGNORE INTO 与 INSERT INTO 的区别就是 INSERT IGNORE INTO 会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据(建议不使用)。
15. 存储过程:
a. MySql函数必须有返回值,存储过程没有;
b. 存储过程的参数可以使用IN、OUT、INOUT类型,而函数的参数只能是IN类型;
c. 存储过程参数不需要@符号,在存储过程方法体内部,如果使用@符号申请参数,表明参数为全局参数;
d. 在参数和方法体之前不需要AS关键字;
e. MySQL 存储过程名字后面的“()”是必须的,即使没有一个参数,也需要“()”;
f. 存储过程的参数不能指定默认值。
g. 存储过程的参数不能指定默认值。
h. 批处理工程中IF条件判断时,语法为IF {contdition} then {body } end if。en if 已分好结尾,若body同时有多行语句,则需要使用begin {body} end。
i. 通常在创建存储过程之前,会通过delimiter $$命令将语句的结束符,从";"改成其他符号,这里使用的是"$$",这样在存储过程中的";"就不会被mysql解释成语句的结束而提示错误
j. 删除存储过程的语法:drop {procedure | function} [if exists] sp_name
k. 查看存储过程或函数的状态: show {procedure | function} status [like 'pattern']
l. 调用存储过程时,需要在过程名字后面加上(),即使没有参数.语法:call pr_no_param();

16. 从Mysql8.0开始增加with as的语法,功能和Sql Server一致,若要实现递归调用,则需要在with 后增加关键字 RECURSIVE
17. mysql的递增语句是AUTO_INCREMENT,而sql server的递增语句是identity
18. 创建临时表时,一种语法和普通创建表是一样的,在 Create之后增减关键字TEMPORARY, 语法:CREATE TEMPORARY TABLE ;另一种语法 CREATE TEMPORARY TABLE { temp_tablename } SELECT F_Id from { tablename}
MySql 不支持 select into from 语法;