zoukankan      html  css  js  c++  java
  • MySQL与MSSQL的一些语法差异(持续更新中)

    分号不能少;分号不能少;分号不能少;重要的事情说3遍

    Insert或者Update的数据包含反斜杠的时候需要进行转义\,例:insert into tablename(id,name) values(1,'刘\一哥'); -- 保存到数据库后就是 1 刘一哥

    一、变量申明(非常重要)

    1.带@的变量不需要申明直接使用

    select columnname into @V_ColumnName from tablename Limit 0,1;

    select @V_ColumnName;

    2.变量申明必须放在最前面,包括申明游标(如果游标是基于临时表的循环也是一样的,先申明游标,在后面创建循环的临时表);

    3.存储过程中的变量申明不能使用@

    例:Declare V_ID1,V_ID2 INT Default 0;

    4.变量的命名千万不要和字段名称一致,否则MySQL数据库会把字段当成是变量;比如可以在前面加上V_,例:V_ColumnName

    二、MySQL不支持匿名块

    例如:

    DECLARE V_ColumnName varchar(50);
    select columnname into V_ColumnName from tablename LIMIT 0,1;

    select V_ColumnName; -- 会报错,是不是很奇怪?明明没有语法错误吧,新手会这些问题搞得郁闷到死

    这种语句在MySQL中是不能执行的,如果要执行就必须放到存储过程或函数中;

    三、存储过程的调用

    call procedure_name(参数1,参数2……);

    如果有OUT参数,例如:Create Procedure SP_TEST(IN Param1 int, OUT Param2 int)

    call SP_TEST(1,@Param2);

    select @Param2;

    四、临时表

    不需要#号,#在MySQL是单行注释符,在存储过程中使用临时表必须先判断是否存在,否则同一进程中第二次执行存储过程就会提示表已经存在了

    例:DROP TEMPORARY TABLE IF EXISTS tmptable;

    Create TEMPORARY TABLE tmptable(……);

    五、IF语句

    IF ... THEN ... ELSEIF ... THEN ... ELSE ... END IF;

    记住千万不要闲得蛋疼给它加BEGIN END就对了;

    六、视图

    不能在视图中使用子查询,例:select * from (select * from xxx) as x;  --会报错的

    如果实在需要这样做,就创建2个视图进行嵌套;

    七、数据库内部函数

    1.类型转换函数:MySQL和MSSQL的类型转换函数名称都是CAST和CONVERT,但CONVERT函数的参数有些不太一致;

    MSSQL的语法如下:

    CAST ( expression AS data_type [ ( length ) ] )
    
    CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

    MySQL的语法如下:

    CAST ( expression AS data_type ( length ) );
    
    CONVERT ( expression , data_type ( length ) );

    但MYSQL中的类型转换函数有一些限制,type只能是以下几种类型:

    • BINARY[(N)]
    • CHAR[(N)]
    • DATE
    • DATETIME
    • DECIMAL[(M[,D])]
    • SIGNED [INTEGER]
    • TIME
    • UNSIGNED [INTEGER]

    使用的时候需要注意,诸如:SELECT CAST(0 AS INT); -- 这种写法是行不通的,给我乖乖改成--> SELECT CAST(0 AS SIGNED);

    2.获取字符串长度函数

    MYSQL中的CHAR_LENGTH()等同MSSQL中的LEN();

    MYSQL中的LENGTH()等同MSSQL中的DATA_LENGTH();

    未完待续……

  • 相关阅读:
    MKMapVIew学习系列2 在地图上绘制出你运行的轨迹
    WPF SDK研究 Intro(6) WordGame1
    WPF SDK研究 Intro(3) QuickStart3
    WPF SDK研究 Layout(1) Grid
    WPF SDK研究 目录 前言
    WPF SDK研究 Intro(7) WordGame2
    WPF SDK研究 Layout(2) GridComplex
    对vs2005创建的WPF模板分析
    WPF SDK研究 Intro(4) QuickStart4
    《Programming WPF》翻译 第6章 资源
  • 原文地址:https://www.cnblogs.com/lrl45/p/5896877.html
Copyright © 2011-2022 走看看