视图
来源:互联网 发布:wps表格怎么恢复数据 编辑:程序博客网 时间:2024/04/30 00:24
视图
视图是虚拟的表,只包含使用时动态检索数据的查询。
视图不包含任何列和数据,它包含的是一个查询。
重要的是视图仅仅是用来查看存储在别处的数据的一种设施,视图本身不包含数据,因此它们返回的数据时从其他表中检索出来的。在添加或更改这些表中的数据时,视图将返回改变过的数据。
基本语法: CREATE VIEW 视图名称 AS (这里是SELECT 查询语句)
—>使用视图的好处?
- 使操作简单化,可以对经常使用的查询定义一个视图,使用户不必为同样的查询操作指定条件。
- 增加数据的安全性,通过视图,用户只能查询和修改指定的数据。
- 提高表的逻辑独立性,视图可以屏蔽原有表结构变化带来的影响。
2.存储过程
存储过程简单来说,就是为以后的使用而保存的一条或者多条SQL语句的集合。可将其视为批文件。
总的来说,使用存储过程有三个主要的好处,即简单、安全、高性能。
就我个人理解来说,存储过程就类似一个实现某个特定功能的小接口或者函数,调用它可以实现对数据的某种处理。
下面举例来说明一下:
首先我们修改一下MYSQL中的结束符(从;修改为//)
mysql> delimiter //
1.无传入参数的存储过程:
显示版本:
mysql> CREATE PROCEDURE pro2() -> SELECT VERSION()//Query OK, 0 rows affected (0.00 sec)mysql> CALL pro2()//+------------+| VERSION() |+------------+| 5.6.26-log |+------------+1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)
其中 CALL 存储过程名称 用来执行存储过程。
2.带有传入参数的存储过程
现在我们创建一个删除指定id记录的存储过程:
原表:
mysql> select * from course//+-----------+-------------+| course_id | course_name |+-----------+-------------+| 1 | chinese || 2 | math || 3 | english || 4 | phy || 7 | bio |+-----------+-------------+5 rows in set (0.00 sec)
创建存储过程并且调用:
mysql> CREATE PROCEDURE removebyid(IN id int) -> BEGIN -> DELETE FROM course WHERE course_id=id; -> END -> //Query OK, 0 rows affected (0.00 sec)mysql> DELIMITER ;mysql> CALL removebyid(7);Query OK, 1 row affected (0.06 sec)mysql> select * from course;+-----------+-------------+| course_id | course_name |+-----------+-------------+| 1 | chinese || 2 | math || 3 | english || 4 | phy |+-----------+-------------+4 rows in set (0.00 sec)
注意,这里我们用到的‘形参’为id,这个形参的名字不能与表的字段的名字相同,否则会产生意想不到的后果。
IN:表示后面跟的是输入参数。
3.带有输出参数的存储过程
例子如下:
mysql> DELIMITER //mysql> CREATE PROCEDURE pro1(IN id INT,OUT nums INT) -> BEGIN -> DELETE FROM course WHERE course_id=id; -> SELECT COUNT(*) FROM course INTO nums; -> END -> //Query OK, 0 rows affected (0.00 sec)mysql> DELIMITER ;mysql> SELECT * FROM course;+-----------+-------------+| course_id | course_name |+-----------+-------------+| 1 | chinese || 3 | english || 2 | math || 4 | phy |+-----------+-------------+4 rows in set (0.00 sec)mysql> CALL rpo(2,@num);ERROR 1305 (42000): PROCEDURE learnsql.rpo does not existmysql> CALL pro1(2,@num);Query OK, 1 row affected (0.06 sec)mysql> select @num;+------+| @num |+------+| 3 |+------+1 row in set (0.00 sec)
上面我们在调用存储过程的时候,将输出参数传入@num这个参数。最后可以显示这个参数。
同理,可以选择多个输出参数,这也正是存储过程与函数不相同的一点。
存储过程的修改:存储过程不能修改过程体,只能删除重新建立存储过程。
0 0
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- 视图
- pig使用的一些注意事项
- Android自定义图片自动轮播控件:imagecycleview
- ROS学习之 cpp时间
- PLSQL Developer连接Oracle11g 64位
- js中return false,return,return true的用法及区别
- 视图
- 二层交换与三层IP转发
- hdu 3519 Lucky Coins Sequence 矩阵快速幂
- 二叉树<一> — — 3种方式的遍历
- Spring同Mybatis的整合
- SQLServer性能优化之 nolock,大幅提升数据库查询性能
- HTML&CSS基础学习笔记1.14-创建表格
- Spring中@Controller和@RestController之间的区别
- python学习心得(1) --- 大型文件的读取