搜索
简帛阁>技术文章>MySQL数据库 视图, 事务, 索引 ,存储过程 ,触发器

MySQL数据库 视图, 事务, 索引 ,存储过程 ,触发器

视图:(子查询)是从一个或多个表导出的虚拟的表,其内容由查询定义

单表视图一般用于查询和修改,会改变基本表的数据

   多表视图一般用于查询,不会改变基本表的数据。

作用:

①简化了操作,把经常使用的数据定义为视图。

②安全性,用户只能查询和修改能看到的数据。

③逻辑上的独立性,屏蔽了真实表的结构带来的影响。

view 对查询的结果做一个快捷方式,视图根据表的数据实时更新,

创建:

create view 起的名字 as 查询...

从视图中检索数据:

select * from 视图名字;

删除视图:

drop view 名字;

 

索引:

数据库系统满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。

优点:可以大大提高MySQL的检索速度。缺点:增加了数据库的存储空间,在插入和修改数据时要花费较多的时间,

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。但过多的使用索引将会造成滥,虽然索引提高了查询速度,同时却会降低更新表的速度,

二分查找,有序数据,字符串汉字转换UNICODE 编码比较 ord()函数

创建索引:create index 名字 on 表具体的字段

删除索引:DROP INDEX [indexName] ON表具体的字段 ;

显示索引信息:SHOW INDEX FROM

唯一索引:UNIQUE INDEX indexName ON表具体的字段 ;索引列的值必须唯一,但允许有空值, unique indexName (字段)

联合唯一索引:unique indexName (字段1,字段2)两个字段的值不能完全一样

存储过程:

存储过程 (Stored Procedure) 是在大型数据库系统中 , 一组为了完成特定功能的 SQL 语句集 , 存储在数据库中 , 经过第一次编译后再次调用不需要再次编译 , 用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数) 来执行它 , 存储过程是数据库中的一个重要对象 ; 存储过程中可以包含 逻辑控制语句 和 数据操纵语句 , 它可以接受参数 , 输出参数 , 返回单个或多个结果集以及返回值 ;

存储过程就像函数一样,有名字 有参数,有语句,要把结束符改掉,否则可能会遇到结束符会语句提交,最后在替换回来,可以把常用的SQL语句写成存储过程,存储过程可以避免sql注入,(所有 MySql 变量都必须以 @ 开始)

获得最后一个ID :select LAST_INSERT_ID()

select@@identity

 

创建存储过程:

create procedure xxx();

调用存储过程:

call xxx();

删除存储过程:

drop procedure xxx;

 

例:

delimiter $$ #更改结束符

create procedure open_order(

in card_num int, #输入参数 参数3种类型in 输入 out 输出 inout 输入输出

out order_id int # 输出参数

)

begin #要做什么

insert into orders(m_num)valus(card_num); #赋值给参数

select@@identity,#系统变量,可以直接执行,代表系统刚刚插入的自增ID

end$$ ; #结束

delimiter; #改回结束符

set @oid=0; # set赋值

call open_order(10001,@oid) #调用函数,加参数,两个参数,一个参数给输入,第二个给输出

 

@自定义变量 set @x=xx 或查询ID中id into @x

@@系统自带的变量 一般显示系统当前的状态

最常用的@@identity

一般子查询都可以用自定义变量来拆分多条语句 但是一组值不能用变量传值 可以用游标

事务:

事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性简称为ACID特性(ACID properties)。

原子性:事务中包括的所有操作要么都做,要么都不做

一致性:事务执行的结果必须是使数据库从一个一致性状态变成另一个一致性状态

隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的

持续性:也称永久性(Permanence),指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。

开启事务start transaction;

提交事务commit;

回滚撤销rollback;可以设置回滚点

 

 

触发器

本质: 触发器是一种特殊的存储过程,它在插入,删除或改动特定表中的数据时触发运行,它比数据库本身标细和更准的功能有更精复杂的数据控制能力。

定义一个触发器的语法:

delimiter $$

after insert(字段名)

on records(创建在那个表中)

from each row

begin

declare a char(8);

declare b char(10);

declare c char(10);

declare d int (定义a b c d 为全局变量)

select gno,gname,gtype,conut into a,b,c,d from goods where gno = new.gid;

if d < 100 then

insert into not_enough values(a,b,c,d)

on buplicate key update count = d;

end (红色部分为SQL语句 触发器的作用)

end if;

end $$

delimiter ;

 

# 增加数据(触发 触发器)

insert into records(oid,gid,count,price_s)values(6,'A0001002',1,16.0);

 

建表:用于描述库存不足。

create tble not_enough(

gno char(8) pyimary key,

gname char(10) ,

gtype vhar(10),

count int not null

);

 

增加not_enough 表中数据

set @c =97 #定义c 为变量

insrt into not_enough values('A0001002', '朗姆可乐' ,'250mL',@c); 这里增加会报错(主键冲突)。

主键冲突解决方法:on duplicate key update count =@c;

 

视图:(子查询)是从一个或多个表导出的虚拟的表,其内容由查询定义单表视图一般用于查询和修改,会改变基本表的数据,多表视图一般用于查询,不会改变基本表的数据。作用:①简化了操作,把经常使用的数据定义为视
不论是做那种语言的编程,我们都离不开和数据库打交道,在面试过程中难免会问到一些和数据库相关的知识点,下面我来对常用并且比较重点的知识点进行梳理,大家在面试之前也可以看看,祝找到更好的工作,下面以mys
ay47一视图(了解)创建视图临时表应用举例应用:二触发器(了解)案例小练习三事务(*****)1什么是事务?2为什么需要事务?3事务特性(4种):4事务运行模式(3种)5如何使用事务总结:四存储
心得:对我来说现在最重要的是时间,一分一秒都不想去浪费它。视图视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该
阅读目录本文内容:视图触发器事务存储过程内置函数流程控制索引一、视图视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可。如果要频繁使用一张虚拟表,可以不用重复查询视图使用方法:注:如果你对
Mysql视图触发器存储过程游标游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行
视图:也就是一个虚拟表(不是真实存在的),它的本质就是根据SQL语句获取动态的数据集,并为其命名。用户使用时只需要使用命名的视图即可获取结果集,并可以当做表来使用。它的作用就是方便查询操作,减少复杂的
一,mysql事务MYSQL中只有INNODB类型的数据表才能支持事务处理。启动事务有两种方法(1)用begin,rollback,commit来实现代码如下:begin开始一个事务rollback
一、mysql事务数据库中的事务是指对数据库执行一批操作,在同一个事务当中,这些操作最终要么全部执行成功,要么全部失败,不会存在部分成功的情况。MySQL事务主要用于处理操作量大,复杂度高的数据。事
事务Transaction事务是逻辑上的一组操作,要么都执行,要么都不执行事务方法开启事务:starttransaction提交事务:commit回滚事务:rollback事务的特性:ACID原子性(