oracle练习(mldn视频课程)四

来源:互联网 发布:道路 检测 大数据 编辑:程序博客网 时间:2024/05/21 10:36

视图
创建新表:create table emp2 as select * from emp;
create view empv20 as select empno,ename,job,hiredate,deptno from emp where deptno=20 with check option;
语法:create or replace view 视图名称 as 子查询(修改之后的子查询)
替换视图(修改)
create or replace view empv20 as select empno,ename,job,hiredate,deptno,sal from emp
where deptno=20 with check option;
语法:update 视图名 set 更新内容 条件
更新视图
有两个参数:with check option和with read only
将视图中的7369职员的部门号修改为30
update empv20 set deptno=30 where empno=7369;
创建视图时添加上with check option则不会对创建条件更新,但是可以对其他字段更新。
若修改视图中7369的职员姓名为“史密斯”,可否修改?
update empv20 set ename='史密斯' where empno=7369;
创建视图时添加上with read only则不会对创建条件更新,
create view empv20 as select empno,ename,job,hiredate,deptno from emp where deptno=20 with read only;
以下操作时提示不允许虚拟列,是只读操作
update empv20 set deptno=30 where empno=7369;
update empv20 set ename='史密斯' where empno=7369;
序列
语法:create sequence 序列名
范例:create sequence myseq
使用序列
两种操作:nextval—取得序列的下一个内容
          currval—取得序列的当前内容
insert into 表名(列一,列二) values(表名.nextval,表名.currval);
删除序列:drop sequence 序列名
增长幅度:increment by 长度(放在创建序列的后边)
范例:1,创建序列create sequence myseq
      2,创建表create table testseq(next number,curr number);
      3,重复插入数据insert into testseq(next,curr) values(myseq.nextval,myseq.currval);
      4,查询数据select * from testseq;
      查询出来的数据以步长为一的速度增加,若想要步长不为一,则需要在创建序列时加上increment by n,n为步长,
      语法为:create sequence 序列名 increment by n
不能修改已创建序列的步长,只能删除序列重新创建时修改步长。
默认情况下序列是从1开始的,若想修改可以使用start with n,则可以设置为从n开始,
语法为:create sequence 序列名 start with n
固定取值
create sequence 序列名 maxvalue n increment by m start with l cache k cycle;
序列从l开始按照步长为m开始循环取值,最大值不超过n,缓存为k,k必须小于n,例如m=2,n=10,k=2,则循环取值为:1,3,5,7,9
同义词
同义词,可以让其他用户通过一个名称方便的访问“用户名.表名称”。
创建语法:create synonym 同义词名称 for 用户名.表名称,范例:create synonym emp for scott.emp
删除语法:drop synonym 同义词名称,范例:drop synonym emp
用户管理
创建用户:create user 用户名 identified by 密码
用户授权:grant 权限1,权限2.... to 用户名
如果想要把锁个权限一次性赋予一个用户,则可以将这些权限定义成一组角色,有两个角色:connect和resource。
用户登录之后再赋权限。
超级管理员修改普通用户密码:alter user 用户名 identified by 密码;
手工使密码失效:alter user 用户名 password expire;
锁住用户:alter user 用户名 account lock
解锁用户:alter user 用户名 account unlock
当前普通用户去访问其他用户的表,需要授予此张表的权限(超级管理员可以操作)
grant 权限1,权限2.... on 用户名A.表1 to 用户名B,将用户A的表1的权限1和权限2赋给用户B
回收权限:revoke 权限 on 用户A.表名称 from 用户B,将A用户的权限从B用户那里收回来
数据库备份与恢复
备份:exp
恢复:imp
范例:在d盘上建立一个data的文件夹,在此文件夹中保存所有的备份文件,如果要备份,则需要使用dos命令行方式
      进入到d:/data文件夹中。
      备份完成之后,为了检验备份的效果,将数据库中的全部表删除掉。

原创粉丝点击