zoukankan      html  css  js  c++  java
  • 事务隔离级别,数据库存储过程,Mysql视图,Mysql语句

    相关链接: https://www.cnblogs.com/chenpi/p/5133648.html  https://www.cnblogs.com/huanongying/p/7021555.html

    事务的隔离级别是针对链接挂而言的,不同链接(Connection)可以有不同的隔离级别。

    事务并发问题:

    读脏数据:一个事务读到了其他事务被回滚的数据。

    不可重复读:一个事务多次读同一条记录,由于其他事务的修改,读到的结果不一致。

    幻读:一个事务多次读取满足条件的记录,由于其他事务进行增删操作,读到的数目不同。

    不可重复读需要锁行,幻读需要锁表。

    MySql事务隔离的四个级别:

    读未提交(read-uncommitted):会出现脏读、幻读、不可重复读

    read-committed :不会出现脏读,会出现幻读、不可重复读

    repeatable-read:不会出现脏读、不可重复读、幻读

    serializable:不会出现脏读、幻读、不可重复读

    mysql默认的事务隔离级别是 repeatable-read

    SQL,结构化存储语言,有自己的语法规则。存储过程使得,一系列sql语句可以通过函数调用的形式进行使用。

    sql语句是运行时编译执行的,而存储过程可以预编译,性能快一些。

    mysql 变量表示形式,@varName

    use life;
    set @param = "ddd";
    set @param2 = 1;
    select @param, @param2;
    

    mysql的存储过程:

    mysql 定义存储过程的时候,如果过程体是很多条语句,需要使用begin end,但是在begin end中间写;会报错,说begin没有配套的end。解决方式是DELIMITER // 。。。DELIMITER ;  

    mysql的DELIMITER 表示解释器在遇到什么符号的时候可以开始执行。

    drop procedure if exists selectById;
    DELIMITER // 
    create procedure selectById( a int)
    begin
      select * from family where _id =a;
    end//
    DELIMITER ; 
    
    set @a = 1;
    call selectById(@a);
    

    sql视图:select的结果的结构叫做视图,视图和基本表有区别。视图通过基本表或视图运算得到,它引用基本表的数据,不存储具体的数据。

    视图方便操作,减少复杂的查询语句。

    对视图进行的增删改操作要符合基本表的约束,例如:使用insert、delete操作视图来操作基本表,需要保证未出现在视图中的列都允许空。(!delete 也需要)

    mysql部分数据类型 tinyint 1字节,int 4字节,bigint 8字节,float 4字节,double 8字节。

    char(n) 定长字符串,varchar(n)不定长字符串,text 长文本数据( 5.0.3以上版本 varchar长度可以很大, 可使用varchar 存储长文本,节省空间  )

    创建数据库,创建表

    drop database if exists life;
    create database life;
    use life;
    
    drop table if exists family;
    create table family (
    fullName varchar(8),
    info varchar(300)
    );
    alter table family add column _id int not null primary key auto_increment;
    
    
    insert into family (fullName, info) values("father","love food");
    insert into family (fullName, info) values("mother", "love flowers");
    insert into family (fullName, info) values("brother", "sunny boy");
    insert into family (fullName, info) values("sister", "shy girl");
    
    drop table if exists worklife;
    create table worklife(
    _id int not null primary key auto_increment,
    _name varchar(40),
    detail varchar(800)
    );
    
    insert into worklife (_name, detail) values ("first_c", "say goodbye to school");
    insert into worklife (_name, detail) values ("second_c", "say goodbye to first leader");
    insert into worklife (_name, detail) values ("known", "spring is coming");
    

    修改表结构:

    alter table t_name add column col_name col_type;

    alter table t_name drop column col_name ;

    alter table t_name add primary key (col_name);

    alter table t_name drop primary key (col_name);

    增删改查

    insert into t_name values (all col_values)

    insert into t_name (interested col_names) values (col_values)

    select * from t_name where condition_words;

    update t_name set field1 = field1+3

    select t_col_name as v_col_name from t_name where

    select avg(t_col_name) as v_col_name from t_name where

    求和函数sum,求平均数avg 最大值max,最小值min

    delete from t_name where

  • 相关阅读:
    socket的半包,粘包与分包的问题
    /dev/tty /dev/ttyS0 /dev/tty0,/dev/null区别
    23种设计模式小结
    嵌入式试题
    怎样给filter加入自己定义接口及调用
    实现Launcher默认壁纸、选择壁纸定制化功能
    javascript中的稀疏数组(sparse array)和密集数组
    【Linux学习】Linux的文件权限(一)
    HDU--5280(dp或枚举)
    UISegmentedControl UISlider
  • 原文地址:https://www.cnblogs.com/afraidToForget/p/10126209.html
Copyright © 2011-2022 走看看