mssql与mysql基本语法以及其他的区别

       最近公司新项目要用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


         

你可能感兴趣的:(DataBase,mysql,ms,sql,区别)