上一节, 我提到SQL中的查询语句
select * from table
但现实中, 有时查询没这么简单, 有可能
select * from table1 join table2 on ... where...
一大堆乱七八糟
这个场景似曾相识. Java中也似乎有
System.out.println("李好啊");
乱七八糟的代码
+
再给你一波算法
+
System.out.println("算法结果是:"+a);
此时, 我们该怎么做? 就是用个method+{}括起来.
同样, 数据库也有这样的操作:
- 视图 view
- 存储过程 store procedures
区别是啥?
视图: 给你一大波SQL
存储过程: 给你一大波SQL+code
当然通过类比方式, method是封装的一种方式, 也就是说, 我想让你看啥你就看啥.
而对应数据库, 也是如此.
我们称SQL叫宣告式编程(英语:Declarative programming),因为它只有命令, 而没有命令执行的过程, 而”我们”让”电脑”调用已经编辑好的view或者 store procedures, 其实也是一种宣告式, 换句话, 执行view, store procedures和用SQL没有区别
而我们平时打的Java代码
public void a(){
给你一波code
}
这种就叫命令式编程(英语:Imperative programming)
在此,我只是想说, 编写view的过程, 和Java别无两样
接下来就是index(索引)
index(索引)是view(视图)的亲兄弟.
但是它们有点区别 (查询的过程)
- index(索引)展示的是SQL, 一般而言, 就是查询table , 形象点比喻, 它就像静态语言(java), 编译后产生的.class文件. 是直接调用就可以的, 效率相对高
- 而view(视图)是动态语言, 它每次的改动都要自己”解释”一遍. (也就是真是的table改动, 它也要跟着改动)
另外的区别:
index的查询可优化, 优化后速度比view快.