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();

    未完待续……

  • 相关阅读:
    shell流程控制
    shell编程变量介绍与表达式详解
    shell编程简介
    反向代理与负载均衡
    存储库之mongodb,redis,mysql
    请求库之requests,selenium
    解析库之re、beautifulsoup、pyquery
    爬虫基本原理
    Django 函数和方法的区别
    Django 知识补漏单例模式
  • 原文地址:https://www.cnblogs.com/lrl45/p/5896877.html
Copyright © 2011-2022 走看看