博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle学习系列7
阅读量:5334 次
发布时间:2019-06-15

本文共 8235 字,大约阅读时间需要 27 分钟。

Oracle学习系列7************************************************************************************            关联表的约束:    强制删除关联表中的父表:        drop table tab_name cascade constraint ;             约束本身是可以修改的,但是不建议修改约束    知识点:                1,掌握视图的作用及定义        2,掌握序列的使用:SEQUENCE        3,掌握PowerDesigner设计工具的使用        4,了解同义词,了解用户管理,了解嵌套表及可变数组        5,理解数据库的设计范式--------------------------------------------------------        1,视图:                            封装了一条复杂的查询语句                            语法:                            create view view_name                     as 子查询                      {with check option | with read only } ; //不能更新视图的创建条件,不能更改视图数据                                建立一个视图,此视图包含了全部部门20的信息:                create view view_emp20                     as                          select  empno,ename, job,hiredate                             from emp                                 where deptno=20 ;                                            查询视图:                                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                         select d.dname, count(e.empno), avg(e.sal), avg(months_between(sysdate,e.hiredate)/12) years                            from emp e, dept d                                where e.deptno=d.deptno                                     group by d.dname ;                                更新视图:                                            修改视图中7369的部门编号:                            update view_emp20                                 set deptno=30                                    where empno=7369; //提示更新成功,但是视图表中无编号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 2;                        在序列中提供两种操作:                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(4),                proname  varchar(50),                prodate date                 ) ;        /                 //最后一个‘/' 不可少                        //使用porject_nt类型        create type project_nt as table of project_ty;         /                    //最后一个‘/' 不可少        create table department(                        deptno  number(2) primary key not null,                dname   varchar2(50) not null,                projects   project_nt                    ) nested table projects store  as project_nt_tab_temp ;        对于插入数据来讲,需要指定每个project_ty的数据类型        insert into department(deptno,dname,projects)            values(                1,'技术部',                project_nt(                    project_ty(1001,'erp',sysdate),                    project_ty(1002,'crm',sysdate),                    project_ty(1003,'oa',sysdate),                                )                        );        查询:            select * from department ;        若此时需要查看一个部门的全部项目的话,则需要查询嵌套表:            select * from table( select projects from department where deptno=1 ) ;        更新:        update table (select projects from department where deptno=1 ) pro            set values(pro )=project_ty('1001','测试项目',to_date('2016-02-12','yyyy-mm-dd'))                    where pro.proid=1001 ; --------------------------------------------------------可变数组(了解):                属于嵌套表的升级版,在可变数组中手机上就是将内部的嵌套表的内容的长度进行了限制。                //定义类型        create type worker_info as object(                    id        number,            name    varchar2(50),            sex     varchar2(6)                );        /                //定义数组类型        create type worker_info_list as varray(10) of worker_info ;        /        //创建可变数组表        create table department(                    deptno        number(2)    primary key not null,            dname        varchar2(50)    not null,            workers        worker_info_list                );                //插入数据                insert into department(deptno,dname,workers)            values( 20,'后勤部',                worker_info_list(                    worker_info(1,'dustin','F'),                    worker_info(2,'kevin','F'),                    worker_info(3,'allen','M')                                )                         );--------------------------------------------------------数据库设计范式(了解):        1.第一范式(确保每列保持原子性)        2.第二范式(确保表中的每列都和主键相关)        3.第三范式(确保每列都和主键列直接相关,而不是间接相关)            --------------------------------------------------------数据库设计工具(重点):            powerDesigner工具的使用

 

转载于:https://www.cnblogs.com/askDing/p/5468830.html

你可能感兴趣的文章
CSS flex 布局学习笔记
查看>>
hitb2017 sentosa writeup
查看>>
php实现字符串的排列(交换)(递归考虑所有情况)
查看>>
移动开发基础和Dalvik VM
查看>>
2、springboot返回json
查看>>
ZOJ 2083 Win the Game(SG函数)题解
查看>>
HDU 5919 Sequence II(主席树)题解
查看>>
PAT 1029
查看>>
显示服务器上的数据库
查看>>
java基础知识
查看>>
Obsolete此API即将移除
查看>>
登录表单(入门简单)
查看>>
toj 4074 CF 319C 斜率优化dp
查看>>
Java注解之Retention、Documented、Target、Inherited介绍
查看>>
Javascript:谈谈JS的全局变量跟局部变量
查看>>
重温设计模式 - 外观模式
查看>>
oracle数据文件迁移
查看>>
java Socket和ServerSocket多线程编程
查看>>
Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)...
查看>>
web模拟终端博客系统
查看>>