Oracle学习系列7
************************************************************************************

关联表的约束:
    强制删除关联表中的父表:
        drop table tab_name cascade constraint ; 

    约束本身是可以修改的,但是不建议修改约束

知识点:

        ,掌握视图的作用及定义
        ,掌握序列的使用:SEQUENCE
        ,掌握PowerDesigner设计工具的使用
        ,了解同义词,了解用户管理,了解嵌套表及可变数组
        ,理解数据库的设计范式

--------------------------------------------------------

        ,视图:

                封装了一条复杂的查询语句

            语法:

                create view view_name
                    as 子查询
                    {with check option | with read only } ; //不能更新视图的创建条件,不能更改视图数据

            建立一个视图,此视图包含了全部部门20的信息:
                create view view_emp20
                    as
                        select  empno,ename, job,hiredate
                            from emp
                                 ;

            查询视图:

                sele * from view_emp20 ;

            删除视图:

                drop view view_name ;

                ex:
                    drop view view_emp20 ;

            完整语法格式:

                create or replace view  view_name
                    as 子查询   //系统会为用户自动进行删除及重建的功能

            ex:
                create or replace view view_emp20
                    as
                        ) years
                            from emp e, dept d
                                where e.deptno=d.deptno
                                     group by d.dname ;

                更新视图:

                        修改视图中7369的部门编号:
                            update view_emp20 

                                    ; //提示更新成功,但是视图表中无编号7369的雇员

--------------------------------------------------------
序列(重点)

    在oracle完成自动序列增长的功能,则只能依靠序列完成
    格式:

        create sequence  seq_name
            [increment by n] [start with n]
            [{maxvalue n |nomaxvalue}]
            [{minvalue n | nominvalue }]
            [{cycle | nocycle}]
            [{cache n | nocache }];

        删除:
            drop sequence seq_name

        ex:创建一个myseq的序列,验证自动增长的操作:

            create sequence myseq  increment by ;

            在序列中提供两种操作:
                nextVal:取得序列的下一个内容
                currVal:取得序列的当前内容

            创建表test_seq:
                create table test_seq(

                        curr number,
                        next number

                );

            使用序列:
                insert into test_seq(curr,next)
                    values(myseq.currval,myseq.nextVal)  ;

--------------------------------------------------------
同义词(了解):

        功能:可以让其他用户通过一个名称方便的访问‘user.table_name’.

        语法:

            create  synonym  syn_name  for  user.tab_name  ; //建立

            drop  synonym syn_name ;   //删除

        ex: create synonym   dual  for sys.dual ;

            ------------------------------------------

            select  sysdate from dual ;//dual是张虚拟表

            conn sys/change_on_install as sysdba ;
            select * from tab
                where TNAME='DUAL';//在sys用户下存在此表

--------------------------------------------------------
用户管理(了解):

        语法:
            create user user_name  identified by passwd //创建用户(sys用户权限)
                [default tablespace  default_tablespace]
                [temporary tablespace  temporary_tablespace ]

            grant 权限1,权限2,权限3.. to user ;//给用户授权   create session

            alter user user_name identified by passwd_new ; //修改用户密码

         eg:
             create user kevin  identified by root ;
            grant  conncet, resource to kevin ; 

        角色:connect 、resource   //每个角色有好多不同的权限

        解/锁住用户:
            alter user user_name  account  lock /unlock;

            eg:
                alter user kevin account lock /unlock ;

                授权emp表:
                    grant 权限1,权限2  on   user_name.tabl_name  to user_name ;
            将scott用户下的emp表的查询权限及删除权限给kevin:
                    grant select ,delete on scott.emp to kevin;

                回收权限:

                    revoke 权限1,权限2,.. on  user.tab_name  from user_name ;

                    eg:
                        revoke select ,delete on scott.emp from kevin ;

        grant/(revoke)  权限1,权限2,权限3   on  user.tab_name  to / (from)  user_name ;                    

--------------------------------------------------------

数据库的备份与恢复(了解):

        数据库备份: exp

                D:\data>exp         

        数据库恢复:    imp        

                D:\data>impf    

        查看错误:show error
--------------------------------------------------------
嵌套表(了解):

            在一个表中包含另外一个子表
        //创建project_ty类型
        create type project_ty as object(

                proid number(),
                proname  varchar(),
                prodate date 

        ) ;
        /                 //最后一个‘/' 不可少

        //使用porject_nt类型
        create type project_nt as table of project_ty;
         /                    //最后一个‘/' 不可少

        create table department(

                deptno  number() primary key not null,
                dname   varchar2() not null,
                projects   project_nt

            ) nested table projects store  as project_nt_tab_temp ;

        对于插入数据来讲,需要指定每个project_ty的数据类型
        insert into department(deptno,dname,projects)
            values(
                ,'技术部',
                project_nt(
                    project_ty(,'erp',sysdate),
                    project_ty(,'crm',sysdate),
                    project_ty(,'oa',sysdate),

                )

            );

        查询:
            select * from department ;

        若此时需要查看一个部门的全部项目的话,则需要查询嵌套表:
             ) ;

        更新:
        update table ( ) pro
            ','测试项目',to_date('2016-02-12','yyyy-mm-dd'))
                     ; 

--------------------------------------------------------
可变数组(了解):

        属于嵌套表的升级版,在可变数组中手机上就是将内部的嵌套表的内容的长度进行了限制。

        //定义类型
        create type worker_info as object(

            id        number,
            name    varchar2(),
            sex     varchar2()

        );
        /

        //定义数组类型
        create type worker_info_list ) of worker_info ;
        /

        //创建可变数组表
        create table department(

            deptno        number()    primary key not null,
            dname        varchar2()    not null,
            workers        worker_info_list

        );

        //插入数据

        insert into department(deptno,dname,workers)
            values( ,'后勤部',
                worker_info_list(
                    worker_info(,'dustin','F'),
                    worker_info(,'kevin','F'),
                    worker_info(,'allen','M')

                ) 

            );

--------------------------------------------------------

数据库设计范式(了解):

        .第一范式(确保每列保持原子性)
        .第二范式(确保表中的每列都和主键相关)
        .第三范式(确保每列都和主键列直接相关,而不是间接相关)

--------------------------------------------------------

数据库设计工具(重点):
            powerDesigner工具的使用

Oracle学习系列7的更多相关文章

  1. Oracle学习系列1-7

    Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...

  2. Oracle学习系列6

    Oracle学习系列6 ************************************************************************************ 删除约 ...

  3. Oracle学习系列5

    Oracle学习系列5 ************************************************************************************ ,掌握 ...

  4. Oracle学习系列4

    Oracle学习系列4 ************************************************************************************ 数据库 ...

  5. Oracle学习系列3

    Oracle学习系列3 ************************************************************************************ 多表查 ...

  6. Oracle学习系列1

    两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 300 ; set pag ...

  7. oracle学习系列之四 (视图)

    视图视图是数据库中特有的对象.视图用于存储查询,但不会存储数据(物化视图除外).这是视图和数据表的重要区别.可以利用视图进行查询,插入,更新和删除数据.Oracle有如下四种视图(关系视图,内嵌视图, ...

  8. oracle学习系列之三 (约束)

    主键约束:外键约束:唯一性约束:检查约束:默认值约束 -——————五大约束 一. 主键约束: --创建表的主键约束  create table student (student_id number ...

  9. Oracle 学习系列之二(会话与事务级临时表和dual表 )

    一. 会话临时表 --创建会话临时表create global temporary table tmp_user_session(user_id int, user_name varchar2(20) ...

随机推荐

  1. Oracle数据备份bat

    @echo on setlocal rem 设置数据库和备份文件参数... set sid=testorcl set username=testname set password=testpwd se ...

  2. 《BI项目笔记》挑选产出分析Cube

    数据源设置: 数据处理逻辑: --I_GBGradeID SELECT * FROM T_NPick_PkgMov WHERE I_GBGradeID NOT IN ( SELECT I_GBGrad ...

  3. wamp环境下phpmyadmin拒绝访问

    You don't have permission to access /phpmyadmin on this server. 找到 alias/phpmyadmin.conf  的配置文件 将 &l ...

  4. tomcat下iims的配置感悟

    1.没有想(意识)到清楚:resin下的web.xml 和tomcat下的web.xml是不同的. 2.对于connect读取配置文件以及连接数据库根本就没有意识. /** * 获取本系统DB配置的文 ...

  5. hdu 2177 取(2堆)石子游戏(威佐夫博奕)

    题目链接:hdu 2177 这题不是普通的 Nim 博弈,我想它应该是另一种博弈吧,于是便推 sg 函数打了个 20*20 的表来看,为了方便看一些,我用颜色作了标记,打表代码如下: #include ...

  6. 20160817_Redis配置操作

    ZC: 主要是 做一些配置,使得 java程序能够访问到 redis服务器,主要内容为:ZC: ①.redis服务端服务 重启的命令ZC: ②.取消绑定 本地IP的配置,使得 所有本网段局域网机器都能 ...

  7. [教程] 离线封装原版WIN7系统 100%纯净

    raymond 发表于 2015-11-28 18:54:15 https://www.itsk.com/thread-360376-1-4.html 对于之前我用母盘封装的系统,纯粹是为了体积而折腾 ...

  8. meta name="viewport" content="width=device-width,initial-scale=1.0" 解释

     <meta name="viewport" content="width=device-width,initial-scale=1.0">   c ...

  9. javascript 特殊的一些知识

    基础知识 1.注释/**/ 块注释,与正则表达式有冲突,不安全. 2.js数字类型只有一个,即为64位的浮动值 3.NaN是一个数值,他不能产生正常结果的运算结果.NaN不等于任何值,包括它自己.is ...

  10. PHP中多态,抽象类,接口,

    小例子: 需求:公司定义一个接口让我们开发功能 usb.interface.php: <?php interface USB{ public function run(); } store.cl ...