转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
PL/Sql循序渐进全面学习教程--Oracle         ★★★★

PL/Sql循序渐进全面学习教程--Oracle

作者:闵涛 文章来源:闵涛的学习笔记 点击数:4216 更新时间:2009/4/22 22:04:46
SELECT last_name, title, salary
       2 FROM s_emp
       3 WHERE salary <
       4 (SELECT AVG(salary)
       5 FROM s_emp);
     实例2:
      选择出工资最高的员工的家庭住址:
     select emp_addr from employees where salary =
          (select max(salary) from employees);
      这是一个简单实用的例子,可以衍生出很多情况,在实际应用经常出现,请大家多多思考。
     实例3:
      SQL> SELECT dept_id, AVG(salary)
         2 FROM s_emp
         3 GROUP BY dept_id
         4 HAVING AVG(salary) >
         5 (SELECT AVG(salary)
         6 FROM s_emp
         7 WHERE dept_id = 32);
     子查询被多次执行,因为它出现在HAVING 子句中。
        SQL> SELECT title, AVG(salary)
          2 FROM s_emp
          3 GROUP BY title
          4 HAVING AVG(salary) =
          5 (SELECT MIN(AVG(salary))
          6 FROM s_emp
          7 GROUP BY title);
       对子查询,我们了解这么多在理论上已经覆盖了所有的知识点,对于UPDATE 和DELETE的子查询,不作为重点,但也要练习掌握。今天到这,谢谢大家。
    


                        课程 六 运行时应用变量


本课重点:

   1、创建一个SELECT语句,提示USER在运行时先对变量赋值。

   2、自动定义一系列变量,在SELECT运行时进行提取。

   3、在SQL PLUS中用ACCEPT定义变量

   

   注意:以下实例中标点均为英文半角

  

   一、概述:

       变量可以在运行时应用,变量可以出现在WHERE 字段,文本串,列名,表名等。

       1、我们这里的运行时,指的是在SQL PLUS中运行。

       2、ACCEPT :读取用户输入的值并赋值给变量

       3、DEFINE:创建并赋值给一个变量

       4、在做REPORT时经常使用,比如对某个部门的销售信息进行统计,部门名称可以以变量代替。

       SQL PLUS不支持对输入数据的有效性检查,因此提示要简单且不模棱两可。

   二、应用实例:

       1、SQL> SELECT id, last_name, salary

            2 FROM s_emp

            3 WHERE dept_id = &department_number;

       2、可以在赋值前后进行比较:

       SET VERIFY  ON

        .....

         1*  select * from emp where lastname=''''&last_name''''

      输入 last_name 的值:  adopt

       原值    1:  select * from emp where lastname=''''&last_name''''

       新值    1:  select * from emp where lastname=''''adopt''''

        ----如果在原语句中没有单引号,那么在输入值的时候要手工加上单引号。一般字符和日期型要在语句中加上单引号。

       SET VERIFY OFF 之后,原值和新值这两句消失。这在ORACLE8I中是默认为ON。

        3、子句为变量:WHERE &condition;  要注意引号

    三、DEFINE和ACCEPT的应用:

     1、SET ECHO OFF   //使内容不 显示在用户界面

        ACCEPT p_dname PROMPT ’Provide the department name: ’

         SELECT d.name, r.id, r.name ”REGION NAME”

          FROM s_dept d, s_region r

          WHERE d.region_id = r.id

       AND UPPER(d.name) LIKE UPPER(’%&p_dname%’)

        /

      SET ECHO ON

        存为文件:l7prompt.SQL

        SQL> START l7prompt

           Provide the department name: sales

       

      2、SQL> DEFINE dname = sales

        SQL> DEFINE dname

           DEFINE dname = ”sales” (CHAR)

          SQL> SELECT name

           2 FROM s_dept

           3 WHERE lower(name) = ’&dname’;

        可以正常执行了。

        SQL> DEFINE dname  主要是显示当前的变量是否赋值,值是什么。当然,我们可以用UNDEFINEGO 来使变量恢复初始,不然它会一直保持下去。

      3、如果变量在SQL SCRIPT文件中确定 :可以SQL> START l7param President 来赋值。

     

     总结:本课主要针对较古老的SQLPLUS方法,在REPORT和结果集生成方面使用变量,达到方便操作,动态修改的目的。

   


课程 七   其他数据库对象


                 SEQUENCE

创建实例:

 

SQL> CREATE SEQUENCE s_dept_id

2 INCREMENT BY 1

3 START WITH 51

4 MAXVALUE 9999999

5 NOCACHE

6 NOCYCLE;

Sequence created.

 

  1、NEXTVAL和CURRVAL的用法

    只有在INSERT 中,才可以作为子查询出现。

  以下几个方面不可用子查询:

    SELECT 子句OF A VIEW

    有DISTINCT的出现的SELECT。

    有GROUP BY,HAVING,ORDER BY的SELECT 子句。

    SELECT 或DELETE,UPDATE 中的子查询。

    DEFAULT选项中不能用。

  2、编辑SEQUENCE

  只有OWNER或有ALTER权限的用户才能修改SEQUENCE

  未来的NUMBER受修改的影响。

  不能修改START WITH,如果变,则要RE-CREATE。

  修改会受到某些有效性检验的限制,如MAXVALUE

  3、删除:

  DROP SEQUENCE sequence;

      

      ORACLE对象之INDEX

  一、INDEX概述:

    是ORACLE的一种数据对象,用POINTER来加速查询行。通过快速路径存取方法定位数据并减少I/O。 INDEX独立于表。INDEX由ORACLE SERVER来使用和保持。

  二、索引如何建立?

   1、自动:通过PRIMARY KEY和UNIQUE KEY约束来建立。

      2、用户手工建立非唯一性索引。

    三、创建方法:

    语法:CREATE INDEX index

ON table (column[, column]...);

    何时建立INDEX:

    此列经常被放到WHERE字段或JOIN来作条件查询。

    此列含有大量的数据。

    此列含有大量的空值。

    两个或几个列经常同时放到WHERE字段进行组合查询

    表很大而且只有少于2-4% 的ROW可能被查询的时候。

    以下情况不要建立索引:

    表很小;

    表被更新频繁。

     四、查看已经存在的索引:

     1、USER_INDEXES可以查询索引名和类型。

     2、USER_IND_COLUMNS包含索引名、表名、列名。

     实例:

     SQL> SELECT ic.index_name, ic.column_name,

2 ic.column_position col_pos, ix.uniqueness

3 FROM user_indexes ix, user_ind_columns ic

4 WHERE ic.index_name = ix.index_name

5 AND ic.table_name = ’S_EMP’;

     五、删除索引:

     DROP INDEX index;

            SYNONYMS 同义词

    语法:

     CREATE [PUBLIC] SYNONYM synonym for object;

     注意:此对象不能包含在一个包里;

           一个私有的同义词不能与同一USER的其他对象重名。

   

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页


[学习帮助]为什么学习那么的令人害怕呢.?  [精彩网文]直面高三
[精彩网文]学习成功=100%的学习意愿+100%的切实行动  [办公软件]学习PowerPoint心得体会
[网络安全]菜鸟学习—认识无线网络安全技术规范  [Web开发]如何学习Asp.net九步曲—菜鸟导读
[Web开发]最简单的AJAX 无刷新学习例子(示例,包含代码和完…  [Web开发]推荐学习的与NET相关的⑩项技术
[平面设计]Flash动画学习心得体会  [平面设计]学习Flash动画制作技巧、帧的理论知识尤为重要
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台