• MYSQL 总结


    1、数据库实质中访问的是 DBMC,数据库是一种存储介质

    2、groub by 与 having 理解

      group by 有一个原则,select后面的所有列中,没有使用聚合函数的列必须出现在 groub by 后面, groub by 和聚合函数一起使用

      where 子句的作用是对查询结果进行分组前,将不符合 where 条件的行去掉,即在分组之前过滤数据,条件中不能包括聚合函数

      having 子句的作用是筛选满足条件的组,即分组后过滤数据,条件中经常使用聚合函数

    3、模糊查询:% _

    4、mysql 中五种统计函数:max min sum avg count

    5、视图,虚拟的表,包含的不是数据,而是根据需要检索数据的查询,提供了一种 MySQL 的 select 语句层次的封装

    order by 可用在视图中,但如果从该视图检索 select 中也包含有 oder by,那么视图的 order by 将被覆盖

    6、存储过程,为了方便以后使用而保存的一条或多条 SQL 语句集合,形式如

      create proceder procedername(int|out|inout param paramtype)

    常用的数据类型有 VARCHAR DATE INT TEXT TIMESTAMP

    变量定义

      declare viraiblename datatype [default_value]

    变量赋值

      set var=expression

    用户变量,在客户端使用用户变量

      >select 'hello world' into @x;

      >select @x

    例子

    mysql>DELIMITER //
    mysql>CREATE PROCEDURE demo1(INOUT p_inout INT)
    ->BEGIN
    ->SELECT p_inout;
    ->SET p_inout=2;
    ->SELECT p_inout;
    ->END->//
    mysql>DELEMITER ;
    mysql>SET @p_inout=1;
    mysql>CALL demo1(@p_inout);

    7、MySQL存储过程的控制语句

    1)条件语句

    mysql>DELIMITER //
    mysql>CREATE PROCEDURE demo2(IN parameter INT)
    ->BEGIN
    ->IF parameter=0 THEN
    ->UPDATE t SET s1=s1+1;
    ->ELSE
    ->UPDATE t SET s2=s2+1;
    ->END IF;
    ->END->//
    mysql>DELEMITER ;

    2)case语句

    mysql>DELIMITER //
    mysql>CREATE PROCEDURE demo3(IN var INT)
    ->BEGIN
    ->CASE
    ->WHEN var=0 then
    ->SELECT 0;
    ->WHEN var>0 then
    ->SELECT 1;
    ->ELSE
    ->SELECT -1;
    ->END CASE;
    ->END
    ->//
    mysql>DELEMITER ;

    3)循环语句

    mysql>DELIMITER //
    mysql>CREATE PROCEDURE demo4(IN var INT)
    ->BEGIN
    ->DECLARE i INT DEFAULT 0;
    ->WHILE i < var do
    ->SELECT i;
    ->SELECT i+1 INTO i;
    ->END WHILE;
    ->END
    ->//
    mysql>DELEMITER ;
    mysql>DELIMITER //
    mysql>CREATE PROCEDURE demo5(IN var INT)
    ->BEGIN
    ->DECLARE i INT DEFAULT 0;
    ->REPEAT
    ->SELECT i;
    ->SELECT i+1 INTO i;
    ->UNTIL i>var;
    ->END REPEAT
    ->END
    ->//
    mysql>DELEMITER ;

     8、定义条件和处理程序

    1)定义条件

      DECLARE command_not_allowed CONDITION FOR {SQLSTATE '4200'|1148}

    2)定义处理程序

      DECLARE hadle_type HANDLER FOR condition_value[,...] sp_statement;

      handler_type:CONTINUE EXIT UNDO

    9、光标

    光标的使用包括声明光标,打开光标,使用光标各关闭光标,光标必须声明在处理程序之前,并且声明在变量和条件之后

    1)声明光标

      DECLARE cursor_name CURSOR FOR select_statement;

    2)打开光标

      OPEN cursor_name;

    3)使用光标

      FETCH cursor_name INTO var_name[,var_name,...];

    4)关闭光标

      CLOSE cursor_name;

    CREATE PROCEDURE curdemo
    BEGIN
        DECLARE stop_flag INT DEFAULT 0;
        DECLARE id INT DEFAULT 0;
        DECLARE type INT DEFAULT 0;
        DECLARE ord INT DEFAULT 0;
        DECLARE cur CURSOR FOR SELECT * FROM table1;
        DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag=1;
        OPEN cur;
        FETCH cur INTO id,type,ord;
        WHILE stop_flag <> 1 DO
            INSERT INTO table2 VALUES(id, type, ord);
            FETCH cur into id,type,ord;
        END WHILE;
        CLOSE CUR;
    END

    10、触发器

      CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW

        trigger_stmt

      trigger_time: BEFORE AFTER

      trigger_event: INSERT UPDATE DELETE

    11、事务(原子性,一致性,隔离性,持久性)

        START TRANSACTION;

        SAVEPOINT sp;

        ROLLBACK;

        ROLLBACK TO sp;

        COMMIT;

      事务隔离级别:

        读未提交,所有事务可以看到其他未提交事务的执行结果

        读已提交,一个事务只能看见已经提交事务所做改变

        可重复读,在一事务中看到是一致结果

        可串行化

    12、SQL语句

       SELECT columnname, ...

       FROM tablename, ...

       WHERE ...

       UNION ...

         GROUP BY ...

       HAVING ...

       ORDER BY ...

      

  • 相关阅读:
    idea连接数据库和版本控制(Version Control)
    Idea新手入门-部署tomcat
    Redis 列表(List)
    Redis 集合(Set)
    Redis中的哈希(Hash)
    Redis初步整理
    C#中的集合之ArryList
    linux中pip安装步骤与使用详解
    搭建 LAMP 环境
    搭建WordPress 个人博客
  • 原文地址:https://www.cnblogs.com/m2492565210/p/7212380.html
Copyright © 2020-2023  润新知