数据库了解

视图

1、什么是视图

视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可

2.如何用视图

create view teacher2course as
select * from teacher inner join course on teacher.tid = course.teacher_id;
"""
创建好了之后 验证它的存在navicat验证 cmd终端验证
最后文件验证 得出下面的结论 视图只有表结构数据还是来源于之前的表
delete from teacher2course where id=1;
"""

强调

1、在硬盘中,视图只有表结构文件,没有表数据文件

2、视图通常是用于查询,尽量不要修改视图中的数据  

删除视图

drop view 视图名;

触发器

在满足对某张表数据的增、删、改的情况下,自动触发的功能称之为触发器

为何要用触发器

触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行
就会触发触发器的执行,即自动运行另外一段sql代码

创建触发器语法

语法结构                    之前    之后 插入   修改     删除
create trigger 触发器的名字 before/after insert/update/delete on 表名 for each row
begin
	sql语句
end

"""
需要注意 在书写sql代码的时候结束符是; 而整个触发器的结束也需要分号;
这就会出现语法冲突 需要我们临时修改结束符号
delimiter $$
delimiter ; 
该语法只在当前窗口有效

# 删除触发器
drop trigger tri_after_insert_cmd;

事务

什么是事务

开启一个事务可以包含一些sql语句,这些sql语句要么同时成功
要么一个都别想成功,称之为事务的原子性

事务的作用

保证了对数据操作的数据安全性

案例:用交行的卡操作建行ATM机给工商的账户转钱

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性

原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

如何使用

# 先介绍事务的三个关键字 再去用表实际展示效果
start transaction; # 开启事务
commit;  # 提交事务
rollback; # 回滚事务

存储过程

存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql,类似于python中的自定义函数

基本使用

DBA:数据库管理员---------->专门管理数据的人员------->数据备份------>

delimiter $$
create procedure p2()
begin
	select * from cmd;
end $$
delimiter ;

# 调用
call p1()
# 针对res需要先提前定义
set @res=10;  定义
select @res;  查看
call p5(1,4,@res)  调用
select @res  查看

# 内部原理:@_p1_0=2,@_p1_1=4,@_p1_2=10;

@_p1_0   取第一个数

@_p1_1  取第二个数

@_p1_2 取第三个数

函数

date_format(sub_time,'%Y-%m')      sub_time 字段名   date_dormat    函数   获取现在时间,

'%Y-%m'    格式:年-月

流程控制

# if条件语句
delimiter //             #修改结束符号
create PROCEDURE proc_if ()     
 begin    
 
    declare i int default 0;
    if i = 1 then 
    	SELECT 1;
    elseif i = 2 then
        SELECT 2;
    else
        SELECT 7;
    end if;

END //
delimiter ;
# while循环
delimiter //                      #修改结束符号
CREATE PROCEDURE proc_while ()
BEGIN

    DECLARE num INT ;
    SET num = 0 ;
    WHILE num < 10 DO
        SELECT
            num ;
        SET num = num + 1 ;
    END WHILE ;

END //
delimiter ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值