06-创建表、序列、索引和视图

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

表创建表create[globaltemporary]tabletable_name(column_nametype[constraintconstraint_defdefaultdefaultdefault_exp][,column_nametype[constraintconstraint_defdefaultdefaultdefault_exp]….])[oncommit{delete|preserve}rows]tablespacetab_space;1、globaltemporary:临时表,行的有效性取决于oncommit后面的选项。2、oncommit:控制临时表中行的有效性。delete:说明这些行在事务的末尾要被删除。preserve:说明这些行在会话的末尾要被删除。如果为临时表指定oncommit,那么默认是delete。经典建表语句。建了一个临时表。插入了一行数据。对于oncommitpreserverows来说,会话结束以后,里面的数据就会丢失。获得有关表的信息……………………最为常用的三个列是:table_name、tablespace_name、temporary。(表名、表空间名、是否为临时表空间)获得表中列的信息…………………………..table_name:表的名字column_name:列的名字data_type:列的数据类型data_length:数据长度data_precision:该列的数据精度(如果指定了数据精度)data_scale:数字列小数部分的位数修改表1、添加列2、修改列修改列的长度修改列的精度因为表中没有数据,因此可以减小精度。修改列的数据类型如果一个表中没有任何数据,就可以将列修改为任何一种数据类型。否则只能将列的数据类型修改为一种兼容的数据类型。例如varchar2—char(反之亦然),条件是没有缩短列的长度。修改列的默认值修改后的默认值只是作用于新添加的行。删除列添加约束约束约束类型意义CHECKC指定一列或者一组列的值必须满足特定的约束NOTNULLC指定一列不允许存储空值,也是一种CHECKPRIMARYKEYP主键由一列或者多列组成,唯一的标识一行FOREIGNKEYR指定表的外键,外键引用另外一个表的一列UNIQUEU指定一列或者一组列只能存储唯一值CHECKOPTIONV指定对视图执行的DML操作必须满足子查询的条件READONLYO指定视图只读添加CHECK约束对于check约束来说,括号里面是一个表达式,可以非常的复杂,因此check的功能非常的强大。添加NOTNULL约束添加notnull约束没有使用add而使用了modify。没有为约束指定名字,系统自动生成一个约束的名字。我们建议为约束指定有意义的名字,将来在发生约束冲突的时候,根据系统提示我们可以清楚的判断是那个数值出现了问题。添加foreignkey约束添加外键约束的时候,列不能已经存在。当父表中删除一行记录时,子表中匹配的所有行也都将删除。另外也可以设置为ondeletesetnull。当父表中删除一行记录时,子表中匹配的所有行的外键将被设置为空值。添加UNIQUE约束删除约束禁用约束启用约束,如果已有数据存在唯一性冲突,添加约束失败。如果已有数据有重复值,使用novalidate可以只对新插入的值进行唯一性校验。对已有数据不进行校验。延迟约束延迟约束是在事务被提交时强制执行的约束。在最初添加约束时可用deferrable子句指定约束是延迟约束。约束一旦添加以后,就不能修改为deferrable了,只能将其删除,再重新创建这个约束。在deferrable后面有两个选项1、initialimmediate:每次向表中添加数据,修改表的数据,从表中删除数据时都要检查这个约束(这与约束的默认行为相同)2、initialdeferred:只有在事务提交时,才会检查这个约束获得有关约束的信息该约束是否为可延迟约束。是否延迟。获取有关列的约束的信息重命名表向表和列添加注释获得表和列的注释截断表删除表中所有的行重置表的存储空间不需要数据库的undo空间不需要执行commit删除表序列序列所生成的整数通常可以用来填充数字类型的主键列。CREATESEQUENCEsequence_name[STARTWITHstart_num][INCREMENTBYincrement_num][{MAXVALUEmaximum_num|NOMAXVALUE}][{MINVALUEminimum_num|NOMINVALUE}][{CYCLE|NOCYCLE}][{CACHEcache_num|NOCACHE}][{ORDER|NOORDER}];1、sequence_name:指定序列的名字2、STARTWITHstart_num:指定序列从哪个整数开始,该值默认是13、INCREMENTBYincrement_num:指定该序列每次增加的增量,该值默认为14、MINVALUEminimum_num:指定该序列的最小整数,该值必须小于等于start_num,而且必须小于maxmum_num5、NOMINVALUE:指定升序序列的最小值为1,降序序列的最小值为-10^26NOMINVALUE为默认值6、MAXVALUEmaximum_num:指定该序列的最大整数,这个值必须大于等于start_num,而且必须大于minimum_num7、NOMAXVALUE指定升序序列的最大值为10^27,降序序列的最大值为-1NOMAXVALUE为默认值8、CYCLE:指定该序列即使已经达到最大值或最小值也继续生成整数,当升序序列达到最大值时,下一个生成的值是最小值。当降序序列达到最小值时,下一个生成的值是最大值9、NOCYCLE:指定该序列在达到最大值或最小值之后就不能再生成整数了,这个是默认值10、CACHEcache_num:指定要保留在内存中整数的个数,默认要缓存的整数为20个,可以缓存的整数最少为2个,可以缓存的整数最多为CELL(maximum_num-minimum_num)/ABS(increment_num)11、NOCACHE指定不缓存任何整数12、ORDER确保按照请求次序生成整数,在使用RAC时可以使用这个选项13、NOORDERED不确保按照请求次序生成整数,这个是默认值创建序列获取有关序列的信息使用序列序列生产一系列数字,一个序列中包含两个伪列,分别是currval、nextval,可以分别用来获取该序列的当前值和下一个值。在检索序列的当前值之前,必须通过检索序列的下一个值对序列进行初始化。第一次访问时被初始化为1使用next会让序列的数值增加。对于升序序列来说到达最大值以后,返回到最小值。降序序列。使用序列填充主键修改和删除序列1、不能修改序列的初值2、序列的最小值不能大于当前值3、序列的最大值不能小于当前值索引创建索引CREATE[UNIQUE]INDEXindex_nameONtable_name(column_name[,column_name…])TABLESPACEtab_space;1、UNIQUE指定索引列中的值必须是唯一的…..注意:为了性能考虑,通常应该将索引和表建立在不同的表空间中。建立索引的条件1、表的列经常出现在where限制条件中2、列的可选择性很高3、select数据的行数通常控制在10%以内上面三个语句分别建立了三种索引普通索引唯一索引复合索引创建基于函数的索引前面已经创建了这个索引。这个查询不会走索引。我们那需要建立基于函数的索引。要利用基于函数的索引,需要下面的参数为true。获取有关索引的信息获取列索引的信息修改索引视图试图实际上是一个或者多个表上的预定义查询。通过视图,也可以对基表进行DML操作。视图中并不存储数据,只会访问基表中的数据。视图的优点:1、限制用户只能通过视图检索数据,这样就可以对最终用户屏蔽创建视图所基于的底层基表。2、可以将复杂查询编写为视图,这样用户就可以书写简单。3、限制某个视图只能访问基表中的部分特定数据,实现一个层面的安全行。创建并使用视图CREATE[ORREPLACE]VIEW[{FORCE|NOFORCE}]view_name[(alias_name[,alias_name…])]assubquery[WITH{CHECKOPTION|READONLY}CONSTRAINTconstraint_name];1、ORREPLACE:说明如果视图已经存在,就替换掉现有视图2、FORCE:说明即使基表不存在也要创建视图3、NOFORCE:说明如果基表不存在,就不创建视图,这个是默认值4、view_name:指定视图的名字5、alias_name:为子查询中的表达式指定一个别名,别名的个数必须与子查询中表达式的个数相同6、subquery:指定一个子查询,他对基表进行检索7、WITHCHECKOPTION:说明只有子查询检索的行才能被插入、修改、或删除,默认情况下,在插入、更新或删除之前并不会检查这些行是否能被子查询所检索。8、constraint_name:指定WITHCHECKOPTION或READONLY约束的名称。9、WITHREADONLY:说明只能对基表中的行进行只读访问。视图的分类1、简单视图:包含一个子查询,只从一个基表中检索数据2、复杂视图:包含一个子查询从多个基表中检索数据使用groupby、distinct子句对行进行分组包含函数调用创建并使用简单视图使用视图检索数据对视图执行INSERT操作当视图没有使用withcheckoption的时候,可以插入视图不能检索的数据。列salary没有出现在视图中,使用视图插入的时候,这个列的值为NULL。创建具有CHECKOPTION约束的视图通过对视图添加CHECKOPTION约束,可以指定对视图执行的DML操作必须满足子查询的条件。创建具有READONLY约束的视图获取有关视图定义的信息…………………………..获取有关视图约束的信息CHECKOPTIONREADONLY创建并使用复杂的视图修改视图可以彻底替换一个视图删除一个视图的一个约束。删除视图

1 / 68
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功