ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 49273|回复: 188

[精华] Oracle SQL命令通解三步曲

[复制链接]
论坛徽章:
6
2014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08优秀写手
日期:2014-02-27 06:00:02问答徽章
日期:2014-04-13 19:36:532015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
发表于 2014-2-25 02:10 | 显示全部楼层 |阅读模式
本帖最后由 芳林野草 于 2014-2-25 02:42 编辑

你知道吗?Oracle 11g(11g Release 2)的SQL语言参考(SQL Language Reference)一共有1522页,其中CREATE TABLE这个命令的语法图解就有20页之多,而整个命令的说明更是达到了76页!

到了Oracle 12c(12c Release 1),整个手册的页数则达到1824页,CREATE TABLE命令的语法图解是21页,整个命令的说明则达到87页!Oracle语法是如此繁杂,简直让人望而却步!

你可能会说,我知道啊!我看过这个手册,而且CREATE TABLE 这个命令其实还不是最复杂的,最复杂的命令是ALTER TABLE,12c中占据了103页的篇幅,其中语法图解就有34页!

对,如果你知道,那说明你蛮厉害,你对Oracle的SQL语法不陌生。

可是如果我告诉你,在Oracle 版本7中,CREATE TABLE和ALTER TABLE这两个命令的语法图解都不足一页!你会不会感到惊讶?

选择了Oracle,就得去面对它繁杂的语法文档。但是一个人的精力是有限的,要想又快又好地掌握Oracle语法,就得讲究方式方法了。

Oracle SQL命令通解三步曲》将引领大家从Oracle基本概念入手了解某个早期版本语法命令,而后逐步了解各版本新增命令,从而建立起一个SQL命令的完整视图

Oracle SQL命令通解三步曲.rar (454.87 KB, 下载次数: 4136)
论坛徽章:
6
2014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08优秀写手
日期:2014-02-27 06:00:02问答徽章
日期:2014-04-13 19:36:532015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
 楼主| 发表于 2014-2-25 06:55 | 显示全部楼层
本帖最后由 芳林野草 于 2014-3-27 09:49 编辑

第一步:了解Oracle基本概念



SQL语法与Oracle基本概念紧密相关,在为数众多的SQL命令中,大部分命令是围绕Oracle基本概念设计的。比如CREATE TABLEALTERTABLEDROP TABLE这三个命令,围绕TABLE(表)这个概念来设计,用于定义TABLE的结构。类似的SQL命令还有很多很多。所以我们要掌握SQL命令,首先应理解Oracle的基本概念。


让我们从关系数据库最基本、同时也是最核心的概念开始,分析几个Oracle基本概念的由来及含义。


首先,为了在数据库中存放数据,Oracle定义了。表是数据的集合,由行和列组成。


当一个表很大的时候(包含成千上万的行),为了提升数据检索的速度,Oracle引入了索引。索引是实现数据高效检索的基础,也是SQL调优的最基本手段。


表中包含行,不同的行代表不同的实体。行不允许相同,否则无法代表不同实体,这就是实体的完整性约束。为了实现完整性约束,Oracle引入了序列:序列用来在整个数据库范围内产生唯一的顺序编号。


关系数据库的基本目的是在不同的用户间共享数据。表级别的授权无法实现行粒度和列粒度的权限管理,为此Oracle引入了视图。视图对表的行和列进行帅选,实现了行粒度和列粒度的权限管理目的。


有时我们要频繁地从多个表检索数据。各个表的数据默认存放到不同的段中,这意味着要到不同的数据块获取数据。为了加快检索速度,Oracle把若干个表的行存放到相同的数据块,这就是。簇提高了多表关联的性能,Oracle内部的数据字典表设计就用到了簇。


有了表、索引、序列和视图之后,Oracle把这些对象聚合在一起,形成数据库。表和索引之类的东西最终会存放到磁盘,其存在形式就是数据库文件。


让我们思考一个问题:如果定义表时,直接把表关联到文件会有什么问题?答案很明显:如果数据文件位置发生变化,就得修改表的定义。为了解决此问题,Oracle引入了表空间。表空间是多个文件的集合,实现了数据库的逻辑表现与数据存储的分离,使之更易于管理。


大机构的数据很多,通常会分散到不同的数据库中。为了在不同数据库之间访问彼此的数据,Oracle引入了数据库链接。数据库链接是不同数据库间互相访问的通道。


如果应用程序访问了多个数据库,当某个库的部署发生变动时,如何避免对应用程序的代码做更改呢?和表空间类似,Oracle引入了同义词来解决该问题。同义词是模式对象的别名,提供了数据独立性和位置透明性的功能。


上述概念是Oracle早期版本就具有的。在后续各个版本中,Oracle不断补充新概念,功能不断增强,Oracle数据库管理系统就像一棵树一样茁壮成长,枝繁叶茂。

上面简单地引出了几个Oracle基本概念,对于概念本身的阐述只是点到为止,未做深入解释。为了准确理解这些概念,我们看看Oracle是如何定义这些概念的:


表(table):Basic unit of data storage in Oracle Database. Data in tables is storedin rows and columns.
索引(index):Optional schema object associated with a nonclustered table, tablepartition, or table cluster. In some cases indexes speed data access.
序列(sequence):A schema object that generates a serial list of unique numbers for tablecolumns.
视图(view):A custom-tailored presentation of the data in one or more tables. Theviews do not actually contain or store data, but derive it from the tables onwhich they are based.
簇(cluster):Optional structure for storing table data. Clusters are groups of one ormore tables physically stored together because they share common columns andare often used together. Because related rows are physically stored together,disk access time improves.
数据库(database):Organized collection of data treated as a unit. The purpose of adatabase is to store and retrieve related information. Every Oracle databaseinstance accesses only one database in its lifetime.
表空间(tablespace):A database storage unit that groups related logical structures together.The database data files are stored in tablespaces.
数据库链接(database link):A named schema object that describes a pathfrom one database to another. Database links are implicitly used when areference is made to a global object name in a distributed database.
同义词(synonym):An alias for a schema object. You can use synonyms to provide dataindependence and location transparency.
注:以上内容来自Oracle手册《DatabaseConcepts》。

要注意的是,应结合实际例子来理解这些概念,而不能只停留在文字上。Oracle在不同版本中对某个概念的定义可能不同,若想透彻理解其本质,应仔细阅读《Database Concepts》相关内容。很多DBA反复阅读该文档,就是为了把握概念的本质。


使用道具 举报

回复
论坛徽章:
6
2014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08优秀写手
日期:2014-02-27 06:00:02问答徽章
日期:2014-04-13 19:36:532015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
 楼主| 发表于 2014-2-25 06:56 | 显示全部楼层
本帖最后由 芳林野草 于 2014-2-25 07:25 编辑

第二步:了解Oracle版本6SQL命令


事物的发展是循序渐进的,因此认识事物也应如此。
为了全面了解SQL命令,我们从Oracle版本6开始,构建一个最初的SQL命令清单,然后不断扩充其内容。

OracleSQL命令按功能分为六大类:
1数据定义语言命令Data Definition Language commands,简称DDL命令)
2数据操纵语言命令Data Manipulation Language commands,简称DML命令)
3事务控制命令Transaction Control commands
4会话控制命令Session Control commands
5系统控制命令System Control commands
6嵌入式SQL命令EmbeddedSQL commands
其中,DDL命令又分为如下细类:
·        对象的创建、修改与删除相关命令(create, alter, and drop objects
·        授权、权限回收以及角色管理相关命令(grant and revoke privileges and roles
·        表、索引及簇统计信息分析命令(analyze information on a table, index, orcluster
·        数据库安全审计相关命令(establish auditing options
·        数据库对象备注相关命令(add comments to the data dictionary

首先看DDL命令。
还记得我们前面介绍的那些Oracle基本概念吗?这些概念对应了如下27DDL命令:

Capture01.JPG
上述命令的含义无须过多解释,大家一看自明。
值得关注的是,为什么没有DROP DATABASEALTER DATABASE LINKALTERSYNONYMCREATE USERDROP USER这些命令呢?
我猜测,Oracle一开始不提供DROP DATABASE命令的原因,是觉得这个命令过于危险;不提供ALTER DATABASE LINKALTER SYNONYM这两个命令,是因为数据库链接和同义词本身结构简单,没有修改的必要;而不提供CREATE USERDROP USER命令的原因,是早期的Oracle采用系统用户登录的方式(和DB2类似)。(注意:Oracle在后续版本中陆续补充了CREATE USER,DROP USER, DROP DATABASEALTER DATABASE LINK这些命令。)
与授权及权限回收相关的DDL命令有2个:GRANTREVOKE。前者用于授权,后者用于收回权限。
与数据库安全审计相关的DDL命令也有2个:AUDIT (Traditional Auditing)NOAUDIT(Traditional Auditing),前者用于开启审计,后者用于取消审计。
COMMENT命令用于给数据库对象添加备注,RENAME命令用于重命名数据库对象,二者亦为DDL命令。

再看DML命令。
版本6中提供了如下6DML命令:
·        INSERTUPDATEDELETE三个命令用于插入、修改及删除表中的行;
·        SELECT命令用于从表中检索行
·        LOCKTABLE命令以显式的方式给表和视图加锁
·        EXPLAINPLAN命令用于查看Oracle优化器预期的执行计划
剩下5个命令是事务控制和会话控制命令:
1COMMITROLLBACKSAVEPOINTSETTRANSACTION4个命令用来控制事务
2ALTER SESSION命令用于控制会话
(注意,Oracle版本6中还没有系统控制命令,该命令在Oracle版本7中首次出现)


至此,我们构建了一个Oracle版本6的命令清单:

Capture02.JPG


使用道具 举报

回复
论坛徽章:
6
2014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08优秀写手
日期:2014-02-27 06:00:02问答徽章
日期:2014-04-13 19:36:532015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
 楼主| 发表于 2014-2-25 07:13 | 显示全部楼层
本帖最后由 芳林野草 于 2014-2-25 07:28 编辑

第三步:了解Oracle各版本新增SQL命令




Oracle从版本6到目前最新的版本12c,期间经历了:版本7,版本8,版本8i,版本9i,版本10g,版本11g,每一次版本发布都出现了或多或少的新命令,下面逐一介绍。


Oracle 版本7新增SQL命令
版本7引入了众多新概念及相关SQL命令,包括过程化SQL、触发器、安全管理、对象管理、系统控制等一共30个新命令。
Capture03.JPG
Capture04.JPG



Oracle版本8新增SQL命令
版本8引入了目录、库、物化视图、类型等概念及18个相关命令。
Capture05.JPG
Capture06.JPG



Oracle8i新增SQL命令
8i版本引入了上下文、维度、Java、统计信息等概念以及18个相关命令。
Capture07.JPG
Capture08.JPG




Oracle 9i新增SQL命令
9i版本引入了服务器参数文件的概念,新增了3个命令。
Capture09.JPG



Oracle 10g新增SQL命令
10g版本引入了ASM磁盘组以及闪回数据库的概念及9个相关新命令。
Capture10.JPG



Oracle 11g新增SQL命令
11g版本引入了闪回数据归档模式对象多版本的概念,以及相关的7个命令。
Capture11.JPG



Oracle 12c新增SQL命令
12c版本为了支撑软件即服务的应用模式,提供了多租户架构的数据库支撑,引入可插拔式数据库的概念以及相关的安全审计策略,包含了10个新增命令。
Capture12.JPG


至此,我们简单介绍了Oracle各个版本引入的关键概念,并通过这些概念来把握相关的SQL命令,从而对整个SQL命令体系有了大致了解。


使用道具 举报

回复
论坛徽章:
12
问答徽章
日期:2014-02-13 15:15:45ITPUB社区12周年站庆徽章
日期:2013-08-26 10:32:46优秀写手
日期:2013-12-24 06:00:12马上有车
日期:2014-04-08 13:08:042014年新春福章
日期:2014-02-18 16:47:53马上加薪
日期:2014-02-18 16:47:53马上有车
日期:2014-03-27 15:59:39马上有钱
日期:2014-04-10 12:55:42
发表于 2014-2-25 08:16 | 显示全部楼层
牛。

使用道具 举报

回复
认证徽章
论坛徽章:
135
马上有钱
日期:2014-03-20 16:14:11马上有钱
日期:2014-03-20 17:48:302014年世界杯参赛球队: 厄瓜多尔
日期:2014-06-05 17:37:40生肖徽章2007版:猴
日期:2014-07-02 09:59:34生肖徽章2007版:鸡
日期:2014-07-02 09:22:43灰彻蛋
日期:2014-07-02 09:23:49蓝色妖姬
日期:2014-07-02 10:11:04生肖徽章:龙
日期:2014-07-16 11:20:252014年世界杯参赛球队: 乌拉圭
日期:2014-06-10 14:49:222014年世界杯参赛球队: 比利时
日期:2014-06-10 14:49:22
发表于 2014-2-25 08:58 | 显示全部楼层

牛。

使用道具 举报

回复
论坛徽章:
10
2010新春纪念徽章
日期:2010-01-04 08:33:082011新春纪念徽章
日期:2011-02-18 11:43:352012新春纪念徽章
日期:2012-01-04 11:54:46一汽
日期:2013-09-09 13:57:04ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:422014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
发表于 2014-2-25 08:59 | 显示全部楼层
赞一个!

使用道具 举报

回复
论坛徽章:
0
发表于 2014-2-25 09:35 | 显示全部楼层

32个赞

使用道具 举报

回复
求职 : 数据库管理员
认证徽章
论坛徽章:
123
祖国65周年纪念徽章
日期:2014-09-29 10:39:00祖国65周年纪念徽章
日期:2014-09-29 21:00:17祖国65周年纪念徽章
日期:2014-10-01 10:45:34祖国65周年纪念徽章
日期:2014-10-01 12:33:03祖国65周年纪念徽章
日期:2014-10-01 12:33:07祖国65周年纪念徽章
日期:2014-10-03 14:27:11itpub13周年纪念徽章
日期:2014-10-01 12:57:11itpub13周年纪念徽章
日期:2014-09-28 17:39:51itpub13周年纪念徽章
日期:2014-09-28 18:00:21itpub13周年纪念徽章
日期:2014-09-29 18:04:10
发表于 2014-2-25 09:44 | 显示全部楼层
   

使用道具 举报

回复
求职 : 数据库管理员
认证徽章
论坛徽章:
9
BLOG每日发帖之星
日期:2010-07-25 01:01:012013年新春福章
日期:2013-02-25 14:51:24马上加薪
日期:2014-07-23 13:50:23奔驰
日期:2013-09-24 09:56:17雪铁龙
日期:2013-10-09 11:29:13路虎
日期:2013-12-25 09:03:102014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09青年奥林匹克运动会-现代五项
日期:2014-08-29 14:56:04
发表于 2014-2-25 10:09 | 显示全部楼层

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

SACC2017购票8.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月30日前

活动链接>>
TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表