数据库存储过程,Mysql视图,Mysql语句

Posted dearYou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库存储过程,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

 

以上是关于数据库存储过程,Mysql视图,Mysql语句的主要内容,如果未能解决你的问题,请参考以下文章

MySQL视图存储过程与存储引擎

MYSQL数据库重点:流程控制语句自定义函数存储过程触发器事件视图

mysql基础教程-----事务视图存储过程和函数流程控制

MySQL 系列你不知道的 视图触发器存储过程函数事务索引语句

MySQL第43天------视图SQL注入问题事务存储过程

mysql事务触发器视图存储过程函数