最近在做一个数据迁移的项目,把mysql数据库中的数据迁移到SqlServer数据库中。在这里记录一下最近遇到的一些问题。
一、MySQL中没有top
在MySQL中没有top查询,但是可以使用limit限制查询来实现相同的效果,语法为“SELECT * FROM tableName LIMIT [offset,] rows | rows OFFSET offset”。
例如:查询前10条记录:
select * from tablename order by orderfield desc limit 0,10
也可以使用 limit 来实现分页,LIMIT [位置偏移量,] 行数 。“位置偏移量”指MySQL从哪一行开始,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始。
例如:第11至20条记录:
SELECT * FROM tableName LIMIT 10,10;
二、MySQL update语句报错
执行update语句,出现问题:You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
原因是在安全模式下只能通过 where 主键来修改。
解决方法有两种:
1.关闭安全模式,可以在工具中关闭,也可使用命令来修改。修改命令:SET SQL_SAFE_UPDATES = 0;
2.就在 update 后面跟带上where条件。例如修改全部数据:update tableName set username=’aaa’ where id>0
三、字段是关键字
如果表中的某个字段使用了关键字,在查询的时候又要使用该字段进行筛选,要把是关键字的字段用反引号包上。反引号的位置在 Tab 键上面那个键。
四、MySQL和SQL Server 语法不同的地方
1.在MySQL中对部分对象的引用是大小写敏感的,如:数据库名、表名。但对字段、索引、函数、存储过程等的引用不敏感。
2.在MySQL中支持三种注释方法:
a.使用#作为开头,后面的全是注释。
b.使用 – 作为注释开头,但要注意,MySQL中这种注释方法和SQLServer 注释语法稍有不同,MySQL要求第二个短线后面必须跟一个空白字符,如空格、制表符等。
c.使用/**/注释符。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/281336.html