最近公司新项目要用mysql数据库,总结点mssql与mysql语法以及其他方面的一些不同,跟大家分享一下。
1 mysql不支持nchar,nvarchar,ntext类型,mssql支持这些类型;
2 mysql的递增语句是AUTO_INCREMENT,而mssql是identity(1,1);--设置自增列
--sqlserver
CREATE TABLE emp
(
id INT IDENTITY(1, 1)
)
--mysql
-- 设置自增ID从N开始
CREATE TABLE emp (
ID INT PRIMARY KEY AUTO_INCREMENT
) AUTO_INCREMENT = 100 ; --(设置自增ID从100开始)
3 mysql需要为表指定存储类型
4 mssql识别符是[],[type]表示他区别于关键字,但是mysql却是 `,[tab键上面]来加以区别
5 mssql支持getdate()方法获取当前时间日期,但是mysql里面可以分日期类型和时间类型,获取当前日期是cur_date(),当前完整时间是 now()函数
6 mssql不支持limit语句,是非常遗憾的,只能用top 取代limt 0,N,row_number() over()函数取代limit N,M
7 mysql在创建表时要为每个表指定一个存储引擎类型,而mssql只支持一种存储引擎
8 mysql不支持默认值为当前时间的datetime类型(mssql很容易做到),在mysql里面是用timestamp类型
9 mssql里面检查是否有这个表再删除,需要这样:
if exists(select * from dbo.sysobjects where id=object_id(N'uc_newpm') and OBJECTPROPERTY(id,N'IsUserTable')=1)
但是在mysql里面只需要 DROP TABLE IF EXISTS cdb_forums;
10 mysql支持无符号型的整数,那么比不支持无符号型的mssql就能多出一倍的最大数存储
11 mysql不支持在mssql里面使用非常方便的varchar(max)类型,这个类型在mssql里面既可做一般数据存储,也可以做blob数据存储
12 mysql的ifnull()函数对应sql的isnull()函数;注意:MySql也有isnull()函数,但意义不一样
13 mysql的存储过程中变量的定义去掉@;
14 mysql的uuid()对应mssql的GUID();
15 字符串相加
SqlServer 直接用 +,MySql concat()
16 修改表名也有差异,将表emp改为emp2
-sqlserver
EXEC sys.[sp_rename] @objname = N'emp', -- nvarchar(1035)
@newname = 'emp2' -- sysname
--mysql
ALTER TABLE emp RENAME emp2
17 修改字段的数据类型
将id字段的int类型改为bigint
-sqlserver
ALTER TABLE [dbo].[emp2] ALTER COLUMN [ID] BIGINT
--mysql
ALTER TABLE emp2 MODIFY id BIGINT
18 添加字段
添加字段的语法差不多,但是MYSQL里可以使用FIRST和AFTER关键字指定添加的字段的位置
--sqlserver
ALTER TABLE [dbo].[emp2] ADD NAME NVARCHAR(200) NULL
--mysql
ALTER TABLE emp2 ADD NAME NVARCHAR(200) NULL