前段时间学的有关sql的相关知识,很多都没及时去整理,今天刚好有时间有没心情做其他的是,就整理整理吧
一直以为做开发的对数据库操作方面的要求不会很高,只要会对数据增删改查就ok了.现在才知道对数据库的操作还应该包括写存储和函数,还要创建序列、索引,视图等.
首先,还是讲序列, 序列是Oracle 9i提供的用于按照设定的规则自动产生数据的方案对象。在某些数据表的结构中,有些字段需要这种特性。比如,对于某个学生数据表的学号关键字段,用户可以希望在录入数据时,能够自动在上一个记录的学号字段上自动加1等.总之序列就是你为列设定你想要的增长方式
格式为:
create sequence hibernate_sequence <------序列名
increment by 1 <------步长
start with 1 <------开始值
maxvalue 999999 <----最大值
其次是视图, 视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是 SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所使用的方法,在 Transact-SQL 语句中通过引用视图名称来使用虚拟表。使用视图可以实现下列任一或所有功能:
将用户限定在表中的特定行上。
例如,只允许雇员看见工作跟踪表内记录其工作的行。
将用户限定在特定列上。
例如,对于那些不负责处理工资单的雇员,只允许他们看见雇员表中的姓名列、办公室列、工作电话列和部门列,而不能看见任何包含工资信息或个人信息的列。
将多个表中的列联接起来,使它们看起来象一个表。
聚合信息而非提供详细信息。
例如,显示一个列的和,或列的最大值和最小值。
格式为
create view viewname
as
select ...
创建成功后就可以当做table来用了
接着是索引,其实对索引还不是很明白.看网上意思大概是用于对查询优化的吧
格式为:
create index indexname
on tablename (column[,column...])
再接着就应该是触发器了,在所有的数据库技术中,我最喜欢的就是触发器了,因为他可以让数据库管理变得很简单,很多繁琐的工作都可以由他来帮我们来做了.比如视图的同步更新等,在我看来,如果没有触发器,视图存在的意义就要大打折扣了.
格式
Create Trigger truStudent --触发器名字
On Student --在Student表中创建触发器
for Update --为什么事件触发
As --事件触发后所要做的事情
if Update(StudentID)
begin
Update BorrowRecord
Set StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted临时表
Where br.StudentID=d.StudentID
end
触发器应该也是数据库管理用的比较多吧.
最后就是函数和过程.应该来说函数和过程给数据管理和访问都带来了很多的扩展,但我对这两个最不感冒了.郁闷
格式:
create or replace function 函数名
(
参数名1 数据类型,
参数名2 数据类型
)
return 返回类型
is(或者as)
begin
....操作
return 该类型的一个值;
end;
函数必须有返回值
而过程却没有返回值,只能通过out类型的参数来带出值来
创建过程的简要语法
create or replace procedure 过程名
(
参数名1 数据类型,
参数名2 数据类型
)
is(或者as)
begin
....操作
end;
最后顺便带下 包的创建 ,包包括包头的创建和包体的创建,并且,创建包体前一定要先创建好包头.
格式如下:
create or replace package 包名is
function 函数名(参数 ) return number;
end;
/
create or replace package body 包名is
function 函数名(参数 ) return number
as
begin
....操作
return 需要返回的值;
end;
end;