你知道吗?Oracle11g(11gRelease2)的SQL语言参考(SQLLanguageReference)一共有页,其中CREATETABLE这个命令的语法图解就有20页之多,而整个命令的说明更是达到了76页!到了Oracle12c(12cRelease1),整个手册的页数则达到页,CREATETABLE命令的语法图解是21页,整个命令的说明则达到87页!Oracle语法是如此繁杂,简直让人望而却步!你可能会说,我知道啊!我看过这个手册,而且CREATETABLE这个命令其实还不是最复杂的,最复杂的命令是ALTERTABLE,12c中占据了页的篇幅,其中语法图解就有34页!对,如果你知道,那说明你蛮厉害,你对Oracle的SQL语法不陌生。可是如果我告诉你,在Oracle版本7中,CREATETABLE和ALTERTABLE这两个命令的语法图解都不足一页!你会不会感到惊讶?选择了Oracle,就得去面对它繁杂的语法文档。但是一个人的精力是有限的,要想又快又好地掌握Oracle语法,就得讲究方式方法了。第一步:了解Oracle基本概念SQL语法与Oracle基本概念紧密相关,在为数众多的SQL命令中,大部分命令是围绕Oracle基本概念设计的。比如CREATETABLE、ALTERTABLE、DROPTABLE这三个命令,围绕TABLE(表)这个概念来设计,用于定义TABLE的结构。类似的SQL命令还有很多很多。所以我们要掌握SQL命令,首先应理解Oracle的基本概念。让我们从关系数据库最基本、同时也是最核心的概念开始,分析几个Oracle基本概念的由来及含义。首先,为了在数据库中存放数据,Oracle定义了表。表是数据的集合,由行和列组成。当一个表很大的时候(包含成千上万的行),为了提升数据检索的速度,Oracle引入了索引。索引是实现数据高效检索的基础,也是SQL调优的最基本手段。表中包含行,不同的行代表不同的实体。行不允许相同,否则无法代表不同实体,这就是实体的完整性约束。为了实现完整性约束,Oracle引入了序列:序列用来在整个数据库范围内产生唯一的顺序编号。关系数据库的基本目的是在不同的用户间共享数据。表级别的授权无法实现行粒度和列粒度的权限管理,为此Oracle引入了视图。视图对表的行和列进行帅选,实现了行粒度和列粒度的权限管理目的。有时我们要频繁地从多个表检索数据。各个表的数据默认存放到不同的段中,这意味着要到不同的数据块获取数据。为了加快检索速度,Oracle把若干个表的行存放到相同的数据块,这就是簇。簇提高了多表关联的性能,Oracle内部的数据字典表设计就用到了簇。有了表、索引、序列和视图之后,Oracle把这些对象聚合在一起,形成数据库。表和索引之类的东西最终会存放到磁盘,其存在形式就是数据库文件。让我们思考一个问题:如果定义表时,直接把表关联到文件会有什么问题?答案很明显:如果数据文件位置发生变化,就得修改表的定义。为了解决此问题,Oracle引入了表空间。表空间是多个文件的集合,实现了数据库的逻辑表现与数据存储的分离,使之更易于管理。大机构的数据很多,通常会分散到不同的数据库中。为了在不同数据库之间访问彼此的数据,Oracle引入了数据库链接。数据库链接是不同数据库间互相访问的通道。如果应用程序访问了多个数据库,当某个库的部署发生变动时,如何避免对应用程序的代码做更改呢?和表空间类似,Oracle引入了同义词来解决该问题。同义词是模式对象的别名,提供了数据独立性和位置透明性的功能。上述概念是Oracle早期版本就具有的。在后续各个版本中,Oracle不断补充新概念,功能不断增强,Oracle数据库管理系统就像一棵树一样茁壮成长,枝繁叶茂。上面简单地引出了几个Oracle基本概念,对于概念本身的阐述只是点到为止,未做深入解释。为了准确理解这些概念,我们看看Oracle是如何定义这些概念的:表(table):BasicunitofdatastorageinOracleDatabase.Dataintablesisstoredinrowsandcolumns.索引(index):Optionalschemaobjectassociatedwithanonclusteredtable,tablepartition,ortablecluster.Insomecasesindexesspeeddataaccess.序列(sequence):Aschemaobjectthatgeneratesaseriallistofuniquenumbersfortablecolumns.视图(view):Acustom-tailoredpresentationofthedatainoneormoretables.Theviewsdonotactuallycontainorstoredata,butderiveitfromthetablesonwhichtheyarebased.簇(cluster):Optionalstructureforstoringtabledata.Clustersaregroupsofoneormoretablesphysicallystoredtogetherbecausetheyshare
白癜风能不能彻底治好西藏治疗白癜风的医院
转载请注明:http://www.jiaju1314.com/lsqy/9448.html