分类目录归档:Database

proc 编程执行 insert、delete、update语句

主题中提到的三种语句都是没有返回值的,所以我们实现起来也最简单,下面代码中包含了 insert、update 和 delete 三种语法的使用。值得注意的是在 insert 和 update 的时候使用宿主变量时的语法,在宿主变量前一定要加冒号,这是初学者最容易犯的错误。 继续阅读

oracle proc 编程基础及最小化案例

oracle proc 编程是在我的概念中是非常陌生的,学习了一天下来发现这东西真的好古老,但是依然健壮、稳定,其中间是编辑一个 .pc 的文件使用 proc 进行预处理,预处理后生成一个真正的.c文件,此时再由 gcc 去编译成一个可执行文件运行。因为 proc 涉及到的知识较多,我无法整理到几篇博文中就概述这些所涉及的知识,所以只能总结代码做好注释防止以后自己需要时忘记。如果有想进一步了解 proc 编程的,可以买名为“Oracle9I ProC C++编程指南”。包括 oracle 的环境搭建也并不是我们讨论的重点,如果有精力的话,我会给大家编写类似的教程。 继续阅读

oracle 索引

索引的概念不仅仅在 oracle 中存在,很多大型数据库软件都有索引的功能,其主要目的是为某张表的某个经常作为过滤条件的字段创建一个快速的索引区,当用户在查询过程中使用了这个过滤条件(比如 where id = 10)那么数据库会自动去索引区查找这个字段的索引,然后通过索引的指向快速找到需要查找的数据,可以抽象的理解它像我们C语言学习的指针一样。 继续阅读

oracle 视图

视图是一个抽象的概念,简单的说就是把表中的部分我们关注的内容保存一份出来到视图中,这样我们每次就不需要通过那么多字段的表去查询数据,只需要通过已经过滤出来的我们关系的数据中(视图中)取我们需要的数据。进一步说就是从一张大的表数据中抽离出来一部分我们关注的数据,这部分数据就是可以存放在视图中。向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句。

继续阅读

oracle 事务

事务,乍一看这个词不知其所以然,至少我第一次看到不知道他是干什么用的。要理解它并不难,你可以认为它就是我们在操作数据库时中间的一个通道,这个通道另一端就是数据库,从我们开始执行一个 DML 语句(参考:http://www.mycode.net.cn/database/823.html )开始,就相当于我们在向通道中塞数据或从通道中读取数据,但是要注意,这些数据不会立即到通道的另一端数据库内。只有我们执行了 commit 或者 执行了一条 DDL 语句时,系统会将我们之前执行的所有 DML 语句真正的应用到通道的另一端数据库中。那这个通道存在的价值是什么呢?那就只支持事务的回滚,意思就是如果我们对数据库做了一些错误的 DML 操作,那么可以通过回滚事务的方式回到执行了错误的 DML 语句之前,这就是事务的简单理解。 继续阅读

sql 语言的几种操作类型

sql 语句看大一点就是一本语言,他的操作对象是数据库,只有个别的数据库在 sql 的语法或数据库内置的函数上会有一些区别,但大体上 sql 的语法都是一样的,无论 oracle、mysql、mssqlserver、sqlite 等。除了语法上,有一些概念他们都是一样的,那就是操作数据库时 sql 的语句类型。

继续阅读

sql 根据其他表结构创建新表并批量插入数据

有一张表,我们希望创建一个与这个表内容差不多的另外一张表,但是我们不需要这张表里面的某些字段,我们只需要一部分字段的数据,这种需求常规情况下可以手动自己使用 create table 来创建表并书写表结构,不过有更好的方法,就是在创建一张表的时候根据某张表的结构来进行创建,也可以使用过滤条件将另外一种表的一部分数据copy过来,具体参考下面案例。 继续阅读

oracle 表的集合运算(联合查询)

以前使用 ms sqlserver 的时候就用到过 union 关键字,将多条查询语句保存到一个列表中用程序来处理,这样可以让多个查询结果集合合并在一起,一般很少有这种需求,个人在使用的时候除非是子查询或多表查询实在无法实现的情况下才会用到。 继续阅读