• 69期-Java SE-034_MySQL-5 索引、事务、视图、触发器、存储过程


    ###索引 index
    
    普通索引、唯一性索引、全文索引、单列索引、多列索引、空间索引。
    
    1、添加索引
    
    ```sql
    alter table 表名 add index 索引名(字段)
    ```
    
    ```sql
    create index 索引名 on 表名(字段)
    ```
    
    2、删除索引
    
    ```sql
    alter table 表名 drop index 索引名
    ```
    
    ```sql
    drop index 索引名 on 表名
    ```
    
    
    
    ```sql
    select name,age from user where id = 10;
    ```
    
    where 后面的字段加索引,select 后面的字段不加索引。
    
    
    
    ### 事务 transaction
    
    将多条 SQL 作为一个整体,要么全执行,要么一条都不执行。
    
    张三和李四各有1000块钱,张三借给李四500块钱,用数据库来体现这一场景。
    
    - 原子性:多条 SQL 语句是一个整体,不可再分割。
    - 一致性:SQL 语句执行前后,数据库数据的值保持一致。
    - 隔离性:一个事务的执行不能被其他事务所干扰。
    - 持久性:一个事务一旦提交,数据库中数据的改变是永久的。
    
    MySQL 是默认自动提交事务的,可以通过语句来查询是否开启了事务的自动提交
    
    ```sql
    show variables like 'autocommit';
    ```
    
    开启/关闭自动提交
    
    ```sql
    set autocommit = 1/0;
    ```
    
    事务的操作:
    
    1、开启事务
    
    start transaction;
    
    2、回滚
    
    rollback;
    
    3、提交
    
    commit;
    
    ```sql
    start transaction;
    update people set money = 500 where id = 1;
    update people set money = 1500 where id = 2;
    rollback;
    ```
    
    ```sql
    start transaction;
    update people set money = 500 where id = 1;
    update people set money = 1500 where id = 2;
    commit;
    ```
    
    
    
    ### 视图 view
    
    数据库中一张虚拟的表,允许不同用户或应用程序以不同的方式查看同一张表中的数据。
    
    创建视图:
    
    ```sql
    create view view_common as select id,name from people;
    ```
    
    使用视图:
    
    ```sql
    select * from view_common;
    ```
    
    删除视图:
    
    ```sql
    drop view view_common;
    ```
    
    
    
    ### 触发器 trigger
    
    触发器定义了一系列操作,可以在对指定的表进行插入、更新或者删除操作的同时自动执行这些预先定义好的操作。
    
    触发器的优点
    
    - 开发更快,因为触发器存储在数据库中,所以不必编写每个触发器在应用程序中执行的操作。
    - 更容易维护,定义好触发器之后,访问目标表,会自动调用触发器。
    - 业务全局实现,如果修改业务,只需要修改触发器即可,不需要修改业务代码。
    
    触发器的分类:
    
    - 前触发器:在更新、插入操作之前执行。
    - 后触发器:在更新、插入、删除之后执行。
    - Before delete触发器:在删除之前执行。
    - Insted of 触发器:对复杂视图执行插入、更新和删除时执行。
    
    ```sql
    create table tab1(
      tab1_id varchar(11)
    );
    create table tab2(
      tab2_id varchar(11)
    );
    ```
    
    创建触发器
    
    ```sql
    create trigger t_afterinsert_on_tab1
      after insert on tab1
      for each row
      begin
        insert into tab2(tab2_id) values (new.tab1_id);
      end;
    ```
    
    删除触发器
    
    ```sql
    drop trigger t_afterinsert_on_tab1;
    ```
    
    
    
    ```sql
    create trigger t_afterdelete_on_tab1
      after delete on tab1
      for each row
      begin
        delete from tab2 where tab2_id = old.tab1_id;
      end;
    ```
    
    ```sql
    drop trigger t_afterdelete_on_tab1;
    ```
    
    
    
    ### 存储过程 procedure
    
    存储过程是一组为了完成特定功能的 SQL 语句的集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
    
    一次编写,多次调用,避免开发人员重复编写相同的 SQL,存储过程是在数据库存储和执行的。可以减少客户端和服务器之间的数据传输,提高效率。
    
    优点:
    
    - 模块化的程序设计,只需要创建一次存储过程,以后就可以在程序中调用该存储过程任意次。
    - 执行速度更快,如果某操作需要执行大量的 SQL 语句或重复执行 SQL 语句,存储过程比普通的 SQL 语句执行更快。
    - 更好的安全机制,对于没有权限执行存储过程的用户,也可以授权他们执行存储过程。
    
    
    
    创建存储过程
    
    ```sql
    create produce 存储过程名称(参数列表) routine_body
    ```
    
    参数列表:参数数据类型,参数名称,输入输出类型(in 入参,out 出参)
    
    ```sql
    create procedure add_name(in target int)
    begin
      declare name varchar(20);
      if target = 1 then
        set name = "MySQL";
        else
        set name = "Java";
      end if;
      insert into user(name) values (name);
    end;
    ```
    
    ```sql
    call add_name(2);
    ```
    
    ```sql
    drop procedure add_name;
    ```
    
    
    
    ```sql
    create procedure count_of_user(out count_num int)
    begin
      select count(*) into count_num from user;
    end;
    ```
    
    ```sql
    call count_of_user(@count_num);
    select @count_num;
    ```
    
    ```sql
    drop procedure count_of_user;
    ```
  • 相关阅读:
    网易在帮助我们泄漏密码吗?
    ADC转换参数——INL_DNL
    高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWOTONE IMD
    Altium Designer如何批量修改名称,数值,封装,NET颜色
    MAC和PHY的区别
    以太网,IP,TCP,UDP数据包分析
    《西安JAVA培训教学视频西安云工厂旺旺老师》更新struts1.SQLServer.设计模式.JavaScript.JavaWeb
    在DOS命令下写一个简单的HelloWorld程序
    你想遇到什么样的人,你先要成为什么样的人
    一些重要的shell命令
  • 原文地址:https://www.cnblogs.com/HiJackykun/p/11166779.html
Copyright © 2020-2023  润新知