约束,视图,索引,序列及触发器的使用

1.约束及其使用

约束在Oracle中的作用与其字面意思相同,是对一个字段进行限制,分为六类(非空,主键,外键,检查,默认,唯一)。

非空约束(not null):该字段可以在视图建表时使用,一般为非空或not null等标识,当勾选该选项时表示插入数据时,这条数据的该选项不能为空,必须有值。通过语句建表时,可以在字段后直接声明not null 为该字段添加非空约束,建表后可通过(alter table 表名 modify constraint 约束名 约束类型)语句进行约束追加。

默认约束(default):默认约束与非空约束相似,当我们在建表时可以通过默认值或却省值来进行默认值的生成。当我们在添加数据时,若是不填写该字段,数据库会将我们设置的默认值填入其中。通过建表语句进行建表时,我们可以在字段后直接声明 default + 默认值的方式进行默认约束的声明(当数据类型为字符串时,需要将加单引号'')。建表后可通过(alter table 表名 modify constraint 约束名 约束类型)语句进行约束追加

唯一约束(unique key):唯一约束是保证数据在这张表中的唯一性,也就是说,有了唯一约束的字段,在一个表中是不会存在相同的数据的。在使用时,需要我们进行单独的约束添加,ob10中constraint选项代表约束的添加,新建约束时,我们一般按照约束名_表名_字段名 约束类型(字段)的形式进行命名,进入后将对应字段选入索引列即可。当我们通过建表语句进行添加时将语句  constraint uk_表名_字段名 约束类型(字段),写在字段的下面。

主键约束(primary key):主键约束的作用类似于非空约束和唯一约束的结合体,当对一个字段进行主键约束的时候,相当与同事满足了非空约束和唯一约束,且一个表中只能有一个主键。在使用中,我们一般将一个表的唯一标识符进行主键约束,也就是说我们可以通过主键字段进行该表的查询,且不会查出重复的数据。其添加方式与唯一约束类似 constraint pk_表名_字段名 约束类型(字段)

外键约束(foreign key):外键约束需要依附于另一个表中的主键约束存在,其存在意义是将两个表通过外键和连接的主键进行连接,也就是我们多表查询时使用的条件,使各个表之间有所联系,而不是各个单独存在的个。其命名方式与主键约束类似。 constraint fk_表名_字段名 约束类型(字段)。

检查约束(check):检查约束是将字段限制在一定的范围内,比如说一个age字段存储用户年龄,那应该是0~200之间(一般情况下),而不能输入一个负一(虽然我很想变成负一....),检查约束就可以帮我们限制住一个字段的范围。命名方式与主键约束类似。 constraint ck_表名_字段名 约束类型(字段)。

视图

我们在进行数据查询的时候只显示我们想要查询的数据,那当我们能否将我们的查询结果进行保留,并将其作为一个单独的表(不是真实存在的)进行一定的操作呢?视图就是满足我们这个需要的存在,当我们只想让别人查看一部的数据的时候,我们就可以将这部分数据做为一个视图进行存储,并通过视图进行数据的查询。但是需要注意的是,当我们对视图进行增删改操作的时候,实际上是对原表进行操作,所以在删除或是更新的时候要格外注意。其创建格式为

CREATE OR REPLACE VIEW 视图名
    (字段,字段)
AS
查询语句

索引

索引的作用相当于一本书的目录和页码。我们想要找到某个内容,可以快速的通过这个页码来找到我们想要找到的内容。这种类似于页码的形式,在我们的数据查找中可以很快的帮我们找到我们想要的内容,提高查找效率。其关键字为index。创建序列的方式如下图

序列

序列的创建可以帮我们自动的按一定的规律进行该列数据的填充,有人可能会觉得,我明明可以自己进行数据填充,为什么要用序列呢。我们做这样一个设想,当我们的java中有两个用户同事都进行了添加操作,那我们是填进去两个相同的数据吗?肯定是不能的,这样会导致我们之后工作的很多麻烦,而序列会自动获取下一个数字,就可以很好的避免这个问题,保证设有序列的这一列不会有重复的数字。其关键字为SEQUENCE 创建方式如下

扫描二维码关注公众号,回复: 6173066 查看本文章

代码创建方式如下

CREATE SEQUENCE 序列名

INCREMENT BY 2--序列的增量

START WITH 41--初始值(包括cache里的20 20*2

MAXVALUE  999--最大值

MINVALUE  888 --最小值没有最全面加no nominvalues

NOCYCLE --不循环 循环删no

CACHE 20 --预分配空间

NOORDER --顺序保证

/

代码修改/删除 create换成alterdrop

触发器

触发器的使用类似于我们日常生活中的开关,或是游戏中的隐藏boss,当我们按下开关的时候灯会亮,当我们满足特定条件时会开启隐藏任务一样。触发器的作用就是当我们在操作数据库时,进行了特定的操作时,就会触发触发器中的代码的执行。触发器可以应用于数据备份,多表连查等操作,其中行触发意为添加条数(目标表)根据触发表的添加条数确定,时间选项为触发表的操作前(后)进行语句执行。下列为触发器中常用操作

①添加数据的时候将相同的数据添加到备份表中

                                      insert into 表名 values (:new.字段,:new.字段);

                                      ②删除数据的同时将删除的数据添加到备份表中

                                      insert into 表名 values (:old.字段,:old.字段);

                                      ③删除表中数据并把备份表中的相应数据一起删除

                                      delete from 表名 where 字段 = :old.字段;

                                      ④自动添加流水号(序列号)

                                      select 序列名.nextval into :new.字段 from dual;

猜你喜欢

转载自blog.csdn.net/lwz18642660013/article/details/84192648
今日推荐