`

qlsql 学习实例代码3

阅读更多
-----------------------------------------------视图 view   (用来封装复杂的查询语句)
SQL> create or replace view myview       ---创建视图
  2  as
  3  select * from emp;

View created

SQL> select * from myview;              -----查询视图

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH      CLERK      7902 1980-12-17     800.00               20
7499 ALLEN      SALESMAN   7698 1981-2-20     1600.00    300.00     30
7521 WARD       SALESMAN   7698 1981-2-22     1250.00    500.00     30
7566 JONES      MANAGER    7839 1981-4-2      2975.00               20
7654 MARTIN     SALESMAN   7698 1981-9-28     1250.00   1400.00     30
7698 BLAKE      MANAGER    7839 1981-5-1      2850.00               30
7782 CLARK      MANAGER    7839 1981-6-9      2450.00               10
7788 SCOTT      ANALYST    7566 1987-4-19     3000.00               20
7839 KING       PRESIDENT       1981-11-17    5000.00               10
7844 TURNER     SALESMAN   7698 1981-9-8      1500.00      0.00     30
7876 ADAMS      CLERK      7788 1987-5-23     1100.00               20
7900 JAMES      CLERK      7698 1981-12-3      950.00               30
7902 FORD       ANALYST    7566 1981-12-3     3000.00               20
7934 MILLER     CLERK      7782 1982-1-23     1300.00               10

14 rows selected
SQL> insert into myview(empno,ename) values(1,'liwu');             ----插入一条记录后,查询视图和表,结果一样  

1 row inserted

SQL> select * from myview;

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH      CLERK      7902 1980-12-17     800.00               20
7499 ALLEN      SALESMAN   7698 1981-2-20     1600.00    300.00     30
7521 WARD       SALESMAN   7698 1981-2-22     1250.00    500.00     30
7566 JONES      MANAGER    7839 1981-4-2      2975.00               20
7654 MARTIN     SALESMAN   7698 1981-9-28     1250.00   1400.00     30
7698 BLAKE      MANAGER    7839 1981-5-1      2850.00               30
7782 CLARK      MANAGER    7839 1981-6-9      2450.00               10
7788 SCOTT      ANALYST    7566 1987-4-19     3000.00               20
7839 KING       PRESIDENT       1981-11-17    5000.00               10
7844 TURNER     SALESMAN   7698 1981-9-8      1500.00      0.00     30
7876 ADAMS      CLERK      7788 1987-5-23     1100.00               20
7900 JAMES      CLERK      7698 1981-12-3      950.00               30
7902 FORD       ANALYST    7566 1981-12-3     3000.00               20
7934 MILLER     CLERK      7782 1982-1-23     1300.00               10
    1 liwu                                                      

15 rows selected

SQL> select * from emp;

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH      CLERK      7902 1980-12-17     800.00               20
7499 ALLEN      SALESMAN   7698 1981-2-20     1600.00    300.00     30
7521 WARD       SALESMAN   7698 1981-2-22     1250.00    500.00     30
7566 JONES      MANAGER    7839 1981-4-2      2975.00               20
7654 MARTIN     SALESMAN   7698 1981-9-28     1250.00   1400.00     30
7698 BLAKE      MANAGER    7839 1981-5-1      2850.00               30
7782 CLARK      MANAGER    7839 1981-6-9      2450.00               10
7788 SCOTT      ANALYST    7566 1987-4-19     3000.00               20
7839 KING       PRESIDENT       1981-11-17    5000.00               10
7844 TURNER     SALESMAN   7698 1981-9-8      1500.00      0.00     30
7876 ADAMS      CLERK      7788 1987-5-23     1100.00               20
7900 JAMES      CLERK      7698 1981-12-3      950.00               30
7902 FORD       ANALYST    7566 1981-12-3     3000.00               20
7934 MILLER     CLERK      7782 1982-1-23     1300.00               10
    1 liwu                                                      

15 rows selected
-------------------------------------------------------------------------------------------

SQL> create or replace view myview           ----创建视图   此视图有where条件
  2  as
  3  select * from emp where sal <1000;

View created

SQL> select * from myview;

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH      CLERK      7902 1980-12-17     800.00               20
7900 JAMES      CLERK      7698 1981-12-3      950.00               30

SQL> insert into myview values(2,'abcd');

insert into myview values(2,'abcd')

ORA-00947: not enough values          ----插入报错,说明有where条件的视图,插入时要把字段写全

SQL> insert into myview values(8000,'john','java',null,null,6000,null,10);

1 row inserted

SQL> select * from emp;

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH      CLERK      7902 1980-12-17     800.00               20
7499 ALLEN      SALESMAN   7698 1981-2-20     1600.00    300.00     30
7521 WARD       SALESMAN   7698 1981-2-22     1250.00    500.00     30
7566 JONES      MANAGER    7839 1981-4-2      2975.00               20
7654 MARTIN     SALESMAN   7698 1981-9-28     1250.00   1400.00     30
7698 BLAKE      MANAGER    7839 1981-5-1      2850.00               30
7782 CLARK      MANAGER    7839 1981-6-9      2450.00               10
7788 SCOTT      ANALYST    7566 1987-4-19     3000.00               20
7839 KING       PRESIDENT       1981-11-17    5000.00               10
7844 TURNER     SALESMAN   7698 1981-9-8      1500.00      0.00     30
7876 ADAMS      CLERK      7788 1987-5-23     1100.00               20
7900 JAMES      CLERK      7698 1981-12-3      950.00               30
7902 FORD       ANALYST    7566 1981-12-3     3000.00               20
7934 MILLER     CLERK      7782 1982-1-23     1300.00               10
    1 liwu                                                      
8000 john       java                          6000.00               10

17 rows selected

SQL> select * from myview;           ---视图结果没有显示插入的记录是因为视图中的where条件

EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH      CLERK      7902 1980-12-17     800.00               20
7900 JAMES      CLERK      7698 1981-12-3      950.00               30
7999 john       java                           600.00               20
-------------------------------------------------------------------------------------

SQL> create or replace view myview
  2  as
  3  select * from dept where deptno >30
  4  with check option ;          ------创建视图时添加此限制语句,在视图添加操作时判断是否满足视图里面的where条件           


View created

SQL> select * from myview;

DEPTNO DNAME          LOC
------ -------------- -------------
    40 OPERATIONS     BOSTON

SQL> insert into myview values(5,'test','sss');       ----视图插入记录  不满足where条件

insert into myview values(5,'test','sss')

ORA-01402: view WITH CHECK OPTION where-clause violation    ----报错
 
----------------------------------------------------------------------------

SQL> select e.empno,e.ename,d.dname,d.loc from emp e,dept d where e.deptno = d.deptno;

EMPNO ENAME      DNAME          LOC
----- ---------- -------------- -------------
7369 SMITH      RESEARCH       DALLAS
7499 ALLEN      SALES          CHICAGO
7521 WARD       SALES          CHICAGO
7566 JONES      RESEARCH       DALLAS
7654 MARTIN     SALES          CHICAGO
7698 BLAKE      SALES          CHICAGO
7782 CLARK      ACCOUNTING     NEW YORK
7788 SCOTT      RESEARCH       DALLAS
7839 KING       ACCOUNTING     NEW YORK
7844 TURNER     SALES          CHICAGO
7876 ADAMS      RESEARCH       DALLAS
7900 JAMES      SALES          CHICAGO
7902 FORD       RESEARCH       DALLAS
7934 MILLER     ACCOUNTING     NEW YORK
8000 john       ACCOUNTING     NEW YORK

15 rows selected

SQL> create or replace view v_emp_dept            -----创建视图封装查询语句
  2  as
  3  select e.empno,e.ename,d.dname,d.loc from emp e,dept d where e.deptno = d.deptno;

View created

SQL> select * from v_emp_dept;             

EMPNO ENAME      DNAME          LOC
----- ---------- -------------- -------------
7369 SMITH      RESEARCH       DALLAS
7499 ALLEN      SALES          CHICAGO
7521 WARD       SALES          CHICAGO
7566 JONES      RESEARCH       DALLAS
7654 MARTIN     SALES          CHICAGO
7698 BLAKE      SALES          CHICAGO
7782 CLARK      ACCOUNTING     NEW YORK
7788 SCOTT      RESEARCH       DALLAS
7839 KING       ACCOUNTING     NEW YORK
7844 TURNER     SALES          CHICAGO
7876 ADAMS      RESEARCH       DALLAS
7900 JAMES      SALES          CHICAGO
7902 FORD       RESEARCH       DALLAS
7934 MILLER     ACCOUNTING     NEW YORK
8000 john       ACCOUNTING     NEW YORK

15 rows selected


两个基表或以上的查询语句组成的试图是不能够进行 视图的增操作的或其他操作,
解决办法是 利用oracle的替代触发器
----------------------------------------------------------------------------------
SQL> create or replace view v_read      ---创建视图
  2  as
  3  select * from dept
  4  with read only;             -----限制语句,此视图为只读的,有的视图里面的查询语句虽然没有此限制语句但是select语                                  句中有group by ,distinct等函数,那么视图也是只读的,不能修改

View created

--------------------------------------------
SQL> create sequence myseq              -----创建序列sequence
  2  start with 1      --从几开始
  3  increment by 1    --递增
  4  order              --排序
  5  nocycle;          --不循环

Sequence created

SQL> select myseq.nextval from dual;

   NEXTVAL
----------
         1

SQL> select myseq.nextval from dual;

   NEXTVAL
----------
         2

SQL> select myseq.nextval from dual;    --查询下一个序列值

   NEXTVAL
----------
         3
SQL> select myseq.currval from dual;      --查询当前的序列值

   CURRVAL
----------
         3

SQL> alter sequence myseq             ---修改序列的递增值   可以修改递增量,但不能修改当前的序列值
  2  increment by 3;

Sequence altered

SQL> select myseq.nextval from dual;

   NEXTVAL
----------
         6

SQL> select myseq.nextval from dual;

   NEXTVAL
----------
         9

SQL> select myseq.nextval from dual;

   NEXTVAL
----------
        12













































































2
0
分享到:
评论

相关推荐

    plsql语法编程实例

    本资料包“plsql语法编程实例”提供了一系列SQL基础语法和PL/SQL编程实例,对于学习和掌握这一技能非常有帮助。 首先,SQL(Structured Query Language)是关系型数据库管理系统中用于管理和处理数据的标准语言。其...

    plsql 实例plsql 实例plsql 实例

    PL/SQL,全称Procedural ...通过这些实例,你可以学习如何在Oracle数据库环境中编写和执行复杂的逻辑,进行数据处理和管理。实际操作时,你可以使用Oracle的SQL Developer或其他IDE工具来编写和测试PL/SQL代码。

    plsql代码和学习资料

    总的来说,"PLSQL_code"压缩包中的内容可能是对PLSQL编程语言和Oracle 11g数据库管理系统的实战教程和实例代码,对于想深入了解和提升这方面技能的学习者来说,是非常宝贵的资源。通过深入学习和实践,你可以成为一...

    Oracle PLSQL实例精解(英文原书第4版)

    《Oracle PLSQL实例精解(英文原书第4版)》是Oracle数据库开发领域的一本经典著作,专注于讲解PL/SQL编程语言的应用。PL/SQL是Oracle数据库系统中用于处理结构化查询语言(SQL)的编程环境,它扩展了SQL的功能,使...

    PLSQL学习笔记(1-7)

    本“PLSQL学习笔记”将逐步讲解这些概念,通过实例和练习帮助读者巩固理解,进一步提升在Oracle数据库开发中的技能。无论你是初学者还是有经验的开发者,这份笔记都能提供有价值的参考。通过深入学习和实践,你将...

    PLSQL编程学习资料

    例如,实例2和实例3展示了如何定义一个简单的PLSQL块,包括变量声明、查询和异常处理。 2. **变量声明**: 变量在PLSQL中使用`DECLARE`关键字进行声明,如`v_ename VARCHAR2(5)`和`v_sal emp.sal%TYPE`。`emp.sal%...

    ORACLE PLSQL实例精解(第4版) 中文版

    ### ORACLE PL/SQL 实例精解(第4版)知识点概述 #### 一、PL/SQL基础 **1.1 PL/SQL简介** - **定义**:PL/SQL(Procedural Language for SQL)是一种过程化语言,专门用于增强Oracle数据库的功能。它将SQL命令与...

    PLSQL学习基础课件PPT

    本PLSQL学习基础课件PPT旨在为初学者提供深入浅出的教程,帮助他们掌握这一强大的数据库编程工具。 首先,我们要了解PLSQL的基本结构,它由声明部分、执行部分和异常处理部分组成。声明部分包括变量、常量、游标、...

    plsql建表实例.txt

    通过这个示例,我们可以学习如何在Oracle数据库中定义复杂的表结构,并理解不同类型的列约束、非空约束以及数据类型的选择等关键概念。 #### 创建表命令详解 在提供的部分代码中,我们看到一个名为`fare`的表被...

    Oracle PLSQL语法大全及实例讲解.pdf

    Oracle PL/SQL是一种强大...通过学习和实践这些基本概念,你可以构建复杂的PL/SQL程序来管理Oracle数据库中的数据,进行数据处理和业务逻辑实现。了解并熟练掌握这些知识点对于任何Oracle数据库开发者来说都至关重要。

    PLSql循序渐进全面学习教程

    10. **PLSql调试和错误处理**:学习如何使用Oracle的调试工具,以及如何编写健壮的错误处理代码,能帮助你快速定位和解决问题。 11. **数据库链接**:数据库链接允许你在不同的Oracle实例之间进行通信,这对于...

    ORACLE_PLSQL专家指南代码

    通过深入研究这个指南中的代码实例,你可以深化对PL/SQL的理解,提升解决实际问题的能力。同时,理解数据库的内部工作原理,如何有效地与SQL交互,以及如何利用PL/SQL提供的高级功能,都是成为一个真正Oracle PL/SQL...

    oracle-PLSQL实例精析

    8. **性能优化**:学习如何编写高效的PL/SQL代码,减少数据库访问,利用绑定变量提升性能。 9. **事务管理**:掌握BEGIN、COMMIT、ROLLBACK语句,理解事务的概念和其在保持数据一致性中的关键角色。 10. **数据库...

    PLSQL教程

    在PLSQL的学习过程中,"源码"可能是指编写和执行的存储过程、函数、触发器等代码片段,而"工具"可能指的是PLSQL Developer这样的集成开发环境,它为编写、调试和管理PLSQL代码提供了便利。 在压缩包中的两个文件名...

    PLSQL操作ORALCE数据库

    通过PLSQL Developer,可以进行SQL性能分析,查看执行计划,定位性能瓶颈,帮助优化SQL语句和PLSQL代码,提升数据库的运行效率。 总结来说,PLSQL是Oracle数据库编程的核心工具,结合PLSQL Developer这样的专业开发...

    PLSQL学习基础资料

    本文将深入探讨"PLSQL学习基础资料"中的关键知识点,旨在为初学者提供一个全面的入门指南。 首先,让我们从"Oracle-SQL语言基础"开始。SQL(Structured Query Language)是用于查询、更新和管理关系数据库的标准...

    PLSQL电子书小合集

    这个“PLSQL电子书小合集”显然是一个包含了关于PLSQL学习资料的压缩包,可能包括教程、指南、实战案例等内容,对于想要深入理解和掌握PLSQL的用户来说非常有价值。 PLSQL的主要组成部分包括声明部分、执行部分和...

    Oracle PLSQL实例精解(原书第4版) 源码下载

    《Oracle PLSQL实例精解(原书第4版)》是一本深入探讨Oracle数据库编程语言PL/SQL的专业书籍。此书旨在帮助读者掌握PL/SQL的精髓,通过丰富的实例和详细解析,提升在Oracle数据库环境中的开发能力。作者在书中不仅...

Global site tag (gtag.js) - Google Analytics