Oracle Sql高级编程--1.SQL语言

来源:互联网 发布:端口范围 编辑:程序博客网 时间:2024/05/21 13:57

1.SQL语言       

 SQL语言最早是IBM公司于20世纪70年代开发出来的,称为结构化英文查询语言,简称为SEQUEL。该语言是基于E.F.Codd在1969年提出的关系型数据库管理系统(RDBMS)的,后来因为商标的纠纷,其简称又进一步缩写为SQL。1986年和1987年,ANSI(美国国家标准化组织)和ISO(国际标准化组织)先后将SQL语言采纳

为标准语言。

       SQL的目的就是简单地提供一个到数据库的接口,本文指的是Oracle数据库,每一条SQL语句对于数据库来说就是一条命令或指令,SQL与其他编程语言(如C或Java)的区别就在于要处理数据集合而不是一行一行的数据。语言本身也不需要你提供如何导航到数据的指令——这是在后台透明地进行的。如在Oracle中写出高效和的SQL语名,了解数据及其在数据库的存储与存储位置是很重要的。

     由于不同的供应商(例如甲骨、IBM和微软)实现SQL核心功能机制相差无几,所有基于某一种数据库所学的技巧同样可以应用到其他类型的数据库上,你其本上可以利用同样的SQL语句来进行数据的查询、插入、更新和删除,以及创建、修改和删除对象,而不必管数库的供应商是哪家。

     尽管SQL是各种关系型数据库管理系统的标准语言,但实际上它并不一定是关系型的,如果想要了解更多的细节,推荐大家阅读C.J.Date的《SQL adn Relational Theory》一书。需要铭记于心的一点是SQL语言并不是总是严格遵守关系模型的——它根本就没有实现关系模型的某些要素,同时还不恰恰当地实现了一素。事实上,既然SQL是基于关系模型的,那么要想写出尽可能正确高效的SQL语名,你不公必须要理解SQL语言,还要理解关系模型。

 

2.数据库的接口

   多年以来人们开发出多种途径来传递SQL语句到数据库并获得结果。Oracle数据库的本地接口界面是Oracle调用界面(OCI)。OCI将由Oracle内核传送而来的查询语句发送到数库,当使用某种Oracle工具如SQL*Plus或者SQL Developer时,你都在使用OCI.其他的Oracle工具如SQL*Loader、数据泵(Data Pump)以及Real Application Testing(RAT)即

使用OCI,也可以使用语言特定的接口,如Oracle JDBC-OCI、ODP.Net、Oracle预编译器、Oracle ODBC以及Oracle ++调用接口(OCCI)驱动器。

 

3.SQL*Plus回顾

      SQL*Plus是一个不管采用哪个安装平台(Windows或Unix)都会提供的命令行工具,它是一个用来输入和执行SQL语句并显示输出结果的纯文本环境。用该工具可以直接输入、编辑命令,可以一条条地保存和执行命令或者通过脚本文件进行,然后将输出结果以很精美格式的报表输出,要启动SQL*Plus你只需要在主机的命令提示符后敲入sqlplus即可。

     连接到数据库:连接数据库之前,你需要在$ORACLE_HOME/network/admin/tnsnames.ora这个文件中找到你要连接数据库名,如下图,

             通过窗口命令提示符连接到SQL*Plus

            如果想要启动SQL*Plus而又不显示登录到数据库后的提示,可以在启动SQL*Plus时使用/nolog选项

           通过SQL>提示符连接SQL*Plus并登录到数据库

      

 

  SQL*Plus有很多命令:

     help index命令显地出来可用的命令

  

          set命令用来定制工作环境的最基本命令,如下为set命令的帮助文本部份内容

 

         有了上面这些可用命令,你就能够轻松定制最适合你的运行环境,但有一点要铭记于心的是当你退出或关闭SQL*Plus的时候,这些设置命令就不再被保留,为了避免每次使用SQL*Plus时都重敲一遍设置命令,你可以创建一个login.sql文件,事实上每次启动SQL*Plus它都会默认读两个文件,第一个是$ORACLE_HOME/sqlplus/admin目录下的glogin.sql文件,如果找到了这个文件,它就会被读进来,文件中的命令语句也会被执行。这样就可以把那些定制你的会话体验的SQL*Plus命令和SQL语句保存起来。

        在读取glogin.sql文件以后,SQL*Plus会进一步寻找login.sql文件,这个文件必须在SQL*Plus的启动文件夹中或者包含在环境变量SQLPATH所指向的文件夹路径中,在login.sql文件中的所有命令优先级都比glogin.sql文件中命令高。Oralce 10g之前,login.sql脚本文件只有在SQL*Plus启动的地候才会被执行,常见login.sql文件内容.

       

        执行命令

        有两种命令可以在SQL*Plus中执行:SQL语句和SQL*Plus命令。如果要执行SQL语句,就必须使用一个特定字符来表明你想要执行输入的语句,分号(;)或者斜线(/)都可以。使用分号的话可以直接放在输入命令的后面或者话接下来的空行中,而斜线则必须放在接下来的空行中才可以被识别。

       

     5个核心的SQL语句

     5个最常用的SQL语句,它们分别为Selec,insert,update,delete

     a.select语句

          select语句用来从一个或多个表中或都其他数据库对象中提取数据,一个查询语句在逻辑上的处理方式可能会与实际物理处理过程大相径庭。Oracle基于查询成本的优化器(cost-based optimizer,CBO)用来产生实际的执行计划。我们需要关心的是优化器将会决定如何访问表、按照什么样的顺序来处理它们,以及如何将多个表联结起来及如何使用筛选器。查询的处理在逻辑上是按照特定的顺序进行的。但是,优化器所选物理执行计划可能会按照完全不同顺序执行这些步骤。

          from子句列出了所有查询数据的源对象。这个子句可以包含表、视图、物化视图、分区或子分区,或者你可以建立一个子查询来生成子对象。如果使用了多个源对象,其逻辑处理阶段也将会应用到每一个联结类型以及谓词on,但注意在处理联结语句的时卢候是按照下面的顺序来进行的:

          (1)交叉联结,也称为笛卡儿乘积;

           (2)内联结;

           (3)外联结。

           where语句,SQL中逻辑比较的可能结果是TRUE、FALSE以及未知。当其中包含空值(null)的时候比较的结果就会是未知。空值与任何值比较或者用在表达式中都会得到空值,或者是未知。一个空值代表一个相应值的缺失,产且可能因为SQL语言中的不同部分对空值的处理不同而令人费解。一个比较的返回值将会是true或者false,你会发现当进行筛选的比较条件中包含空值的时候,将作为false来对待。

          

          

未完待继

 

 

原创粉丝点击