• 数据库对象


    同义词是先用数据库对象的别名;序列用于生成唯一、连续的序号;

    视图是基于一个或多个表的虚拟表;索引是与表相关的一个可选结构,用于提高SQL语句执行的性能

    一、数据库对象:

       模式对象:

    数据库对象是逻辑结构的集合,最基本的数据库对象是表;

    其他对象包括:create增、drop删、改alter

      同义词、序列、视图、索引

    1、同义词:

    ①、 现有对象的一个别名:

      简化SQL语句,隐藏对象的名称和所有者,提供对对象的公共访问;

    ②、类型:

    私有同义词:

      只能在其模式下内访问,且不能与当前模式的对象同名(当前用户下使用);

    公有同义词:

      可被所有的数据库用户访问。只能是管理员用户创建。

    ③、私有:synonym(system身份登录创建)

    ---创建用户
    
    CREATE  USER  test  IDENTIFIED  BY  123456;--创建一个用户名为 test 密码为123456的用户
    GRANT  CONNECT , CREATE  SYNONYM TO test; ---授予权限(连接数据库,创建同义词--起别名)
    GRANT  SELECT   ON   SCOTT.EMP  TO test;--查询
    GRANT  DELETE  ON   SCOTT.EMP TO test;--删除
    GRANT  UPDATE  ON  SCOTT.EMP TO test;--
    
    select * from scott.emp;
    create synonym staff for scott.emp;--起别名--提高安全性
    select * from staff;---私有同义词,只能谁创建谁访问

    ④、公有:public

    需要sys或者system用户来创建

    --一sys或system身份登录,创建公有同义词--谁都能查
    create public synonym emps for scott.emp;  
    select * from emps;

    修改和删除的原则是:谁创建谁修改、删除

    二、序列:

    1、Oracle是不支持自增长的;

      ①、序列是用于生成唯一、连续序号的对象;

      ②、序列可以是升序,也可以是降序的;

      ③、创建:create sequence(前三个必须写)

    2、访问序列:

    nextval:返回序列的下一个值;

    currval:返回序列的当前值

    ---创建序列(相当于计数器,与表无关)
    create sequence seq_student start with 1 increment by 1;
    
    create table stu(
           ssid int primary key,
           sname varchar(10)
    )
    --给ssid赋值为序列的值
    insert into stu values(seq_student.nextval,'李四');---nextval 下一个值
    insert into stu values(seq_student.nextval,'张三');
    select * from stu
    
    select seq_student.currval from dual;-- currval 当前值

    注意:

    序列与表无任何关系!!!

     3、当出现异常需要修改和删除的序列时,友情提示:删除重新建!

    三、视图:

    1、视图以经过定制的方式显示来自一个或多个表的数据;

      可以视为“虚拟表”或“存储的查询”;

    2、创建视图所依据的表称为“基表”;

    3、优点:

       提供了另外一种级别的表安全性;

      隐藏的数据的复杂性;

      简化的用户的SQL命令;

      隔离基表结构的改变;

      通过重命名列,从另一个角度提供数据。

    4、

    --创建视图(scott下,将查询的结果封装到个视图里面)
    
    select * from emp
    select * from dept
    select * from emp join dept on emp.deptno=dept.deptno;
    
    --授权(system下给scott用户授予创建视图的权利)
    grant create view to scott;
    
    create view emp_dept as (select empno,ename,job,mgr,sal,comm,emp.deptno,dname,loc from emp join dept on emp.deptno=dept.deptno);
    
    --查询视图
    select * from emp_dept

    5、在视图上可以使用修改数据的DML语句:

    不过有如下限制:

      只能修改一个底层的基表;

      如果修改违反了基表的约束条件,则无法更新视图;

      如果视图包含连接数据库、去重关键字等,则将无法更新视图;

      如果视图包含伪列或表达式,则将无法更新视图

      (总结:可以修改数据,但尽量不要在视图上修改!!!在基表上改

    6、使用create or replace语句修改视图定义(尽量不要如此麻烦)

     CREATE  OR REPLACE   [FORCE] VIEW   
      view_name [(alias[, alias]...)] 
      AS  
      select_statement
      [WITH CHECK OPTION]
      [WITH READ ONLY];

    四、索引:

    1、索引是与表相关的一个可选结构;

      用以提高SQL语句执行的性能;

      在逻辑上和物理上都独立于表的数据;

      Oracle自动维护索引

    2、

    --创建表
    create table t_testseq
    (
      id number,
      name varchar2(10)
    );
    --创建序列
    create sequence seq_value
    start with 1
    increment by 1;
    -- oracle里面事务需要手动提交事务
    select * from t_testseq where id=50000    -- 0.023
    
    
    --创建索引 CREATE  INDEX    索引名    ON   表名 (索引字段)
    create index  t_testseq on t_testseq(id)  -- 0.015
    
  • 相关阅读:
    es6之Promise
    es6之Proxy,Reflect
    js之对象
    Set,Map与Array,Object对比
    es6之数据结构 set,WeakSet,mapWeakMap
    es6之Symbol
    flex布局
    盒子模型,top和margin-top
    POJ1274-The Perfect Stall
    Codeforces 671D. Roads in Yusland 题解
  • 原文地址:https://www.cnblogs.com/21-forever/p/11265924.html
Copyright © 2020-2023  润新知