事务的隔离级别是针对链接挂而言的,不同链接(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