mysql中的一些语法(录)

 

 

 

**********************************************************

MYSQL存储过程:

 

 

-- --------------------------------------------------------------------------------

-- Routine DDL

-- --------------------------------------------------------------------------------

DELIMITER $$

 

CREATE DEFINER=`root`@`` PROCEDURE `TableName_MethodName`(

    _Parameter MYSQLPARAMETERTYPE

)

BEGIN

 

    MYSQL_SENTENCE;

 

END$$

 

 

 

 

**********************************************************

MYSQL事物:

 

 

-- --------------------------------------------------------------------------------

-- Routine DDL

-- --------------------------------------------------------------------------------

DELIMITER $$

 

CREATE DEFINER=`root`@`` PROCEDURE `TableName_MethodName`(

    _Parameter MYSQLPARAMETERTYPE

)

BEGIN

 

 

 

    DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;

    START TRANSACTION;

    SAVEPOINT SP;

 

 

    MYSQL_SENTENCE;

 

    IF @@ERROR_COUNT <> 0 THEN

        ROLLBACK TO SAVEPOINT SP;

        ……;

    ELSE

        ……;

        COMMIT;

    END IF;

 

END$$

 

 

 

 

-- --------------------------------------------------------------------------------

-- Routine DDL

-- --------------------------------------------------------------------------------

DELIMITER $$

 

CREATE DEFINER=`root`@`` PROCEDURE `TableName_MethodName`(

    _Parameter MYSQLPARAMETERTYPE

)

BEGIN

 

    DECLARE EXIT HANDLER FOR SQLWARNING,SQLEXCEPTION

    BEGIN

        ROLLBACK;

        SET _PTransactionId = 0;

    END; 

 

 

    START TRANSACTION;

 

    MYSQL_SENTENCE;

 

    COMMIT;

 

END$$

 

后者的执行效率比前者高。

 

 

 

*********************************************************

MYSQL 函数:

 

 

-- --------------------------------------------------------------------------------

-- Routine DDL

-- --------------------------------------------------------------------------------

DELIMITER $$

 

CREATE DEFINER=`root`@`localhost` FUNCTION `Func_FunctionName`(`_Parameter` ParameterType) RETURNS ReturnType CHARSET utf8

BEGIN

 

    SET @ReturnVar = ParameterTypeDefaultValue;

 

    MYSQLSENTENCE;

 

    RETURN @ReturnVar;

 

END$$

 

 

 

*******************************************************

MYSQL 执行一个字符串语句@SqlStr='select……':

 

 

PREPARE StmtTotalCount FROM @SqlStr;

EXECUTE StmtTotalCount;

DEALLOCATE PREPARE StmtTotalCount;

 

 

 

*******************************************************

MYSQL连接字符串(mysql中不能用+连接字符串,可以用mysql的方法连接):

 

SET @SqlStr = CONCAT(@SqlStr, ' AND UserId > 0');

 

 

*******************************************************

MYSQL  IF ELSE:

 

IF conditions THEN

……

 

[ELSE]

……

 

[ELSE]

……

 

END IF;

 

 

*******************************************************

MYSQL WHILE:

 

WHILE CONDITIONS DO

 

……

 

END WHILE;

 

------------------------------------------------------------------------------------

eg.

依次取出最后一个EmployeeId进行操作

 

SET _EmployeeIds ='1,2,3,4,5,6,7,0,9,12,51,77'

 

WHILE _EmployeeIds != '' DO

 

        SET @EmployeeId = SUBSTRING_INDEX(_EmployeeIds,',',-1);

 

        INSERT INTO Member

        (

            EmployeeId

        )

        VALUES

        ( 

            @EmployeeId

        );

 

        SET @NUM = 0;

 

        SET @STR = _EmployeeIds;

 

        WHILE INSTR(@STR,SUBSTRING_INDEX( _EmployeeIds, ',', -1 )) != 0 DO  

 

            SET @NUM =@NUM+INSTR(@STR,SUBSTRING_INDEX( _EmployeeIds, ',', -1 ));  

 

            SET @STR = SUBSTRING(@STR,INSTR(@STR,SUBSTRING_INDEX( _EmployeeIds, ',', -1 ))+1);  

 

        END WHILE;

 

        SET _EmployeeIds=LEFT( _EmployeeIds, @NUM -2);

 

    END WHILE;

 

 

 

*******************************************************

 

MYSQL SELECT INTO:

 

mysql的table不支持select * from oldTable into newTable

 

但可以这么写:CREATE TABLE newTable (SELECT * FROM oldTable)

 

 

SET @COLVALUE = DEFAULTVALUE;

 

SELECT COL FROM TABLENAME INTO @COLVALUE;

 

将某个字段或者字段处理后的值放到自定义变量 @COLVALUE中。注意,@COLVALUE要赋初始值,否则会出现NULL值的情况。

 

 

 

*****************************************************

MYSQL中判断是否为NULL值用:col IS NULL 或者 col IS NOT NULL。

 

 

 

 

*****************************************************

MYSQL中

 

条件里用“=”而不是“==” 来表示是否等于。

 

“>=”,“<=”,“>”,“<”,“<>”分别表示“大于等于”,“小于等于”,“大于”,“小于”,“不等于”。

 

 

 

*****************************************************

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值