MySQL和Sql Server的sql语句区别

   项目需要做sql server适配,因此需要将所有写的mysql的sql语句转变成sqlserver里面的sql语句。在做适配的过程中,总结出了以下几点关于MySQL和SQLServer的sql语句的不同之处。

1、自增长列的插入:

SQLServer中可以不为自动增长列插入值,

MySQL中需要为自动增长列插入值。


2、获取当前时间函数:

SQLServer写法:getdate()

MySQL写法:now()


3、从数据库定位到表。

Sqlserver写法:库名.dbo.表名 ;或者:库名..表名  (注:中间使用两个点)

select password from Info.dbo.users where userName='boss'

或者

select password from Info..users where userName='boss'

mysql写法:库名.表名

select password from Info.users where userName='boss'


4、判断是否存在某个数据库,若存在,则删除

Sqlserver写法:

IF DB_ID('users') IS NOT NULL

DROP DATABASE users

Mysql写法:

Drop DATABASEif exists users


拓展:若sqlserver数据库正在使用中,删除之前,先要把数据库变成“单一用户”,再删除

ALTER DATABASE users SET SINGLE_USER with ROLLBACK IMMEDIATE IF DB_ID('users') IS NOT NULL DROP DATABASE users


另附:判断某数据库中是否存在某张表,若存在,则删除

Sqlserver写法:

if exists(select * from sysobjects where name ='Users_test')
drop table Users_test

Mysql写法:

DROP TABLE IF EXISTS Users_test


5、主键存在,则更新,不存在,则插入

Mysql写法:    

INSERT into users (userID,userName,password) VALUES (1,’jmj’,’123’) ON DUPLICATE KEY UPDATE  userName ='jmj', password =123


Sqlserver没有mysql这样的关键字,只能组合sql语句来实现操作:

if not exists (select userID from users where userID= 1)insert into users (userID,userName,password) values(1,’jmj’,’123’) else update users set userName = ’jmj’, password=’123’ where userID = 1


(关于On duplicate key update的两篇文章,推荐给大家!

可遇不可求的Question之SQLServer的INSERT ON DUPLICATE KEY UPDATE语法篇

MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)


6、符号的使用

mysql对参数可以使用单引号,也可以使用双引号,对字段名和表明可以使用反引号。

sqlserver只能使用单引号,且不能使用反引号。

Mysql写法:

Select `password` from Users where userName='boss' or username=”jmj”

Sqlserver写法:

Select password from Users where userName='boss' or username=’jmj’

 

7、取出查询结果中的第一条数据或者前几条记录(取前几条记录只需要修改对应的数字即可),分页也是使用这个关键字:

SQLServer写法:

select top 1 password from users where userName='boss'  

MySQL写法:

select password from users where userName='111'limit 0,1

 

8、查询所有库

SQLServer写法:

select * from [master]..[SysDatabases];
MySQL写法:

SHOW DATABASES;


9、查询指定库中的所有表

SQLServer写法:

select *from 库名.dbo.[SysObjects] where[type]='U';

(注:若想知道[type]='U'代表什么意思,请点击http://blog.csdn.net/winddai/article/details/5815138

MySQL写法:

SHOW TABLES


10、某些关键词的使用

10.1截取字符串

SQLServer只能使用SUBSTRING关键词来截取字符串。

MySQL可以使用SUBSTRING和SUBSTR截取字符串

10.2取得字符串的长度

SQLServer只能使用Len关键词取得字符串的长度

MySQL可以使用Length取得字符串的长度


11、相同点

delete,select,insert,drop(删除数据库:drop database 库名),update,create(创建数据库:create database 库名)语句一样。

   到目前为止,小编只遇到了这些,若有不足之处,欢迎补充!

 

  • 5
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: MySQLSQL Server是两种不同的关系型数据库管理系统。它们的语句有一些区别,主要包括以下几点: 1. 数据类型:MySQLSQL Server支持的数据类型有所不同,例如MySQL支持的数据类型包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT等,而SQL Server支持的数据类型包括TINYINT、SMALLINT、INT、BIGINT、FLOAT、REAL、NUMERIC、DECIMAL等。 2. 语法:MySQLSQL Server的语法也有所不同,例如MySQL使用LIMIT语句来限制查询结果的数量,而SQL Server使用TOP语句来实现同样的功能。 3. 存储过程:MySQLSQL Server的存储过程语法也有所不同,例如MySQL使用DELIMITER语句来定义存储过程的结束符,而SQL Server使用GO语句来分隔多个语句。 4. 索引:MySQLSQL Server的索引语法也有所不同,例如MySQL支持FULLTEXT索引,而SQL Server则支持CLUSTERED和NONCLUSTERED索引。 总之,MySQLSQL Server虽然都是关系型数据库管理系统,但它们的语句有一些区别,需要根据具体情况进行选择和使用。 ### 回答2: MySQLSQL Server是两种常见的关系型数据库管理系统。虽然它们都使用结构化查询语言(SQL)作为操作语言,但实际上存在一些区别。 1.数据类型 MySQL支持的数据类型包括整数(INT和BIGINT),字符(VARCHAR和TEXT)和日期时间(DATETIME和TIMESTAMP)等。而SQL Server还支持二进制大对象(BLOB)、XML、空间和地理位置数据类型等。SQL Server的数据类型比MySQL更多,更加丰富、多样。 2.表和索引 MySQL默认使用的存储引擎是MyISAM,SQL Server默认使用的存储引擎是B-tree。MySQL中创建表和索引时,可以指定不同的存储引擎,而SQL Server只有一种默认的B-tree存储引擎。 3.编程语言 MySQL是用C和C++编写的。使用MySQL的话,可以使用C、C++、PHP、Java、Python等编程语言来操作数据库。而SQL Server一般结合使用MS SQL和Microsoft Visual Studio等编程工具,使用.NET框架来与数据库进行交互。因此,对于不同的编程语言,其操作MySQLSQL Server的语法会有一定的差别。 4.性能和扩展性 MySQL适合处理大量的并发查询,但对于大量并发插入、更新和删除的操作支持相对较弱。而SQL Server则适用于复杂的联合查询和深度数据分析,其对于大量并发插入、更新和删除的操作支持更加完善。当然,这也取决于所应用的硬件环境和应用场景。 总之,MySQLSQL Server是两种不同的数据库管理系统,而在操作语言使用上,它们还是存在一些区别的。但无论是哪种数据库管理系统,应用场景的不同也会影响到其使用差异,应根据实际需求来选择合适的数据库管理系统。 ### 回答3: MySQLSQL Server都是常用的关系型数据库管理系统,都支持SQL语言作为操作数据库的主要语言。但是,两者在SQL语言的标准化实现和特有拓展方面存在差异,导致了一些语句的在两者之间的不兼容。 1. 数据类型 MySQLSQL Server在数据类型的定义方面存在差异。例如:MySQL中的auto_increment可以设置为BIGINT类型,而在SQL Server中只支持INT类型;又如:MySQL中的ENUM类型可以存储枚举值,而SQL Server中没有类似的数据类型。 2. 函数 在函数方面,MySQLSQL Server都有很多自己的函数,但是有些函数名在两者之间存在差别。例如:MySQL中的DATE_FORMAT函数用于将日期格式化,而SQL Server中的DATENAME则返回日期的名称。 3. 子查询 MySQLSQL Server对子查询的支持也有所不同。MySQL允许在select、from、where子句中任何位置使用子查询,并且认为子查询中的表是对外不可见的;而SQL Server只允许在from和where子句中使用子查询,并把子查询中的表看作一个临时表。 4. 字符串拼接 字符串拼接在开发中是常用的操作之一,但是在MySQLSQL Server中实现方式不一。MySQL使用concat函数完成字符串拼接,SQL Server使用+号来拼接字符串。 5. 索引 在索引的创建方面,MySQLSQL Server也存在差异。MySQL中可以为一个列创建多个索引,而SQL Server的一个列只能创建一个索引。此外,SQL Server中可以为一个视图创建索引,而MySQL中则不能。 总的来说,MySQLSQL Server语句的实现和特有扩展上存在差异,开发者在操作时应该注意到这些差别,在实际开发中要结合实际情况选择适合的数据库,并根据不同的场景选择相应的操作语句

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值