zoukankan      html  css  js  c++  java
  • mysql 存储过程项目小结

    1. false :0  true 1 切记

    官方文档:http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

    •  BOOLBOOLEAN

      These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true:

      mysql> SELECT IF(0, 'true', 'false');
      +------------------------+
      | IF(0, 'true', 'false') |
      +------------------------+
      | false                  |
      +------------------------+
      
      mysql> SELECT IF(1, 'true', 'false');
      +------------------------+
      | IF(1, 'true', 'false') |
      +------------------------+
      | true                   |
      +------------------------+
      
      mysql> SELECT IF(2, 'true', 'false');
      +------------------------+
      | IF(2, 'true', 'false') |
      +------------------------+
      | true                   |
      +------------------------+

      However, the values TRUE and FALSE are merely aliases for 1 and 0, respectively, as shown here:

      mysql> SELECT IF(0 = FALSE, 'true', 'false');
      +--------------------------------+
      | IF(0 = FALSE, 'true', 'false') |
      +--------------------------------+
      | true                           |
      +--------------------------------+
      
      mysql> SELECT IF(1 = TRUE, 'true', 'false');
      +-------------------------------+
      | IF(1 = TRUE, 'true', 'false') |
      +-------------------------------+
      | true                          |
      +-------------------------------+
      
      mysql> SELECT IF(2 = TRUE, 'true', 'false');
      +-------------------------------+
      | IF(2 = TRUE, 'true', 'false') |
      +-------------------------------+
      | false                         |
      +-------------------------------+
      
      mysql> SELECT IF(2 = FALSE, 'true', 'false');
      +--------------------------------+
      | IF(2 = FALSE, 'true', 'false') |
      +--------------------------------+
      | false                          |
      +--------------------------------+

      The last two statements display the results shown because 2 is equal to neither 1 nor 0.

    2 存储过程中执行动态sql

    官方文档:

    http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html

    The first example shows how to create a prepared statement by using a string literal to supply the text of the statement:

    mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
    mysql> SET @a = 3;
    mysql> SET @b = 4;
    mysql> EXECUTE stmt1 USING @a, @b;
    +------------+
    | hypotenuse |
    +------------+
    |          5 |
    +------------+
    mysql> DEALLOCATE PREPARE stmt1;

    The second example is similar, but supplies the text of the statement as a user variable:

    mysql> SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
    mysql> PREPARE stmt2 FROM @s;
    mysql> SET @a = 6;
    mysql> SET @b = 8;
    mysql> EXECUTE stmt2 USING @a, @b;
    +------------+
    | hypotenuse |
    +------------+
    |         10 |
    +------------+
    mysql> DEALLOCATE PREPARE stmt2;

    Here is an additional example which demonstrates how to choose the table on which to perform a query at runtime, by storing the name of the table as a user variable:

    mysql> USE test;
    mysql> CREATE TABLE t1 (a INT NOT NULL);
    mysql> INSERT INTO t1 VALUES (4), (8), (11), (32), (80);
    
    mysql> SET @table = 't1';
    mysql> SET @s = CONCAT('SELECT * FROM ', @table);
    
    mysql> PREPARE stmt3 FROM @s;
    mysql> EXECUTE stmt3;
    +----+
    | a  |
    +----+
    |  4 |
    |  8 |
    | 11 |
    | 32 |
    | 80 |
    +----+
    
    mysql> DEALLOCATE PREPARE stmt3;

    总结:

    执行动态sql,分三步走:

    1. PREPARE;

     Syntax:

    PREPARE stmt_name FROM preparable_stmt

    2. EXECUTE;

       Syntax:

      EXECUTE stmt_name [USING @var_name [, @var_name] ...]

    3. DEALLOCATE PREPARE;

      Syntax:

    {DEALLOCATE | DROP} PREPARE stmt_name

     3. 存储过程中的事务

     语法:

    START TRANSACTION [WITH CONSISTENT SNAPSHOT]
    BEGIN [WORK]
    COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
    ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
    SET autocommit = {0 | 1}
  • 相关阅读:
    8-kubernetes-安全
    6-kubernetes网络
    5-kunernetes资源调度
    4-K8S 部署Java应用及应用程序生命周期管理
    3-kubernetes监控与日志管理
    2-K8S常用命令
    1-kubeadm部署1.18.0单master集群
    部署Prometheus+Grafana监控
    微信小程序学习
    vue 中使用 @scroll事件 没有用
  • 原文地址:https://www.cnblogs.com/davidwang456/p/4147132.html
Copyright © 2011-2022 走看看