Hbase数据库,视图,事务,存储过程,触发器------周东海

视图

1.定义

视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

2.为什么用

简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。

                安全性:通过视图用户只能查询和修改他们所能见到的数据。但不能授到数据库特定行和特定的列上。

逻辑数据独立性:视图可帮助用户屏蔽真实表结构变化带来的影响。

3.用法

1.创建视图
CREATE VIEW v_blog(编号,标题,内容,作者编号) 
AS SELECT * FROM blog 
WITH CHECK OPTION;

2.查询视图
select * from v_long;

修改视图字段会将基表字段修改掉

#修改试图数据-->修改基表数据
UPDATE v_blog SET 内容 = '修改后的内容' WHERE 编号 = 1;

2.事务

1.定义

在数据库中,我们将一条 SQL 语句称为一次基本的操作。将若干条 SQL 语句“打包”在一起,共同执行一个完整的任务,这就是事务。


2.为什么要用

为了避免出现意外,可以将以上两条语句放到一个事务中,其中一条语句执行失败时,数据库将回滚到原来的状态。对于买家来说,数据库回滚会导致下单失败,但这很容易处理,让买家再次下单即可。数据库的正确性永远是最重要的。

3.用法


#开启事务
BEGIN;
#插入语句
INSERT INTO runoob (id) VALUE(5);
INSERT INTO runoob (id) VALUE(6);
#提交事务
COMMIT;

BEGIN;
#插入语句
INSERT INTO runoob (id) VALUE('abc');
INSERT INTO runoob (id) VALUE(8);
#回滚
ROLLBACK;

3.存储过程

是存储这个过程而不是存储的过程

1.定义

存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。

2.为什么用

        1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。
        2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
        3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。

3.语法

#创建存储过程
DELIMITER $
CREATE PROCEDURE test2()
BEGIN
	#声明变量类型
	DECLARE un VARCHAR(32) DEFAULT '';
	#给username变量赋值
	SET un = '小心';
	#将查询结果赋值给un变量
	SELECT username INTO un FROM student WHERE stuid = 3;
	#查询un变量 返回
	SELECT un;
END $
DELIMITER ;

#调用存储过程
CALL test2();

4.触发器

1.定义

触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。

2.为什么用

触发器的主要好处在于它们可以包含使用 Transact-SQL 代码的复杂处理逻辑。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法。实体完整性总应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY 和 UNIQUE 约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过 CHECK 约束进行强制,而引用完整性(RI) 则应通过 FOREIGN KEY 约束进行强制。在约束所支持的功能无法满足应用程序的功能要求时,触发器就极为有用。

3.语法

#触发器 关键词:trigger
CREATE TRIGGER ins_stu
AFTER INSERT ON student FOR EACH ROW
	INSERT INTO cj(stu_id,stu_name,math,chinese,english)VALUES
	(new.stuid,new.username,88,66,95)

#执行触发过程
INSERT INTO student(username,PASSWORD,birthday)VALUES
('张三','32323233','2016-08-23');

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值