zoukankan      html  css  js  c++  java
  • sql语句整理2

    动态sql

    如果动态语句是 SELECT 语句,可以把查询的结果保存到 INTO 后面的变量中。如果动态语句中存在参数,USING 为语句中的参数传值。 动态 SQL 中的参数格式是:[:参数名],参数在运行时需要使用 USING 传值。

    EXECUTE IMMEDIATE 动态语句字符串
    [INTO 变量列表]
    [USING 参数列表]
    

    oracle在进行跨库访问时,可以通过创建dblink实现。 oracle database link可分为下面三类: (1)private:创建的是用户级别的dblink,只有创建该dblink的用户才可以使用这个dblink来访问远程的数据库,同时也只有该用户可以删除这个dblink。 (2)public:创建的是数据库级别的dblink,本地数据库中所有的用户数据库访问权限的用户或者pl/sql程序都能使用这个dblink。 (3)global:创建的是网络级别的dblink,这是对于oracle network而言的。

    select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='WANGYONG';
    

    如果查询有返回行,则表示具备创建database link权限,否则,则需要使用sys登陆orcl为用户赋予创建权限:grant create public database link to 用户名

    授权某张表的权限给用户:

    grant  xxx权限 on 表名 to 用户
    

    第二步:创建dblink 有两种:1)通过pl/sql developer图形化创建、2)通过sqlplus中的sql语句创建 在这里插入图片描述 或者

    create public database link TESTLINK2 connect to 
    user_name identified by "密码" USING '连接的数据库'
    

    使用dblink:

    -- 最简单的用法
    SELECT * FROM table_name@database_link;
    -- 不想让别人知道database link名字的时候,可以使用同义词包装一下
    CREATE SYNONYM table_name for table_name@database_link;
    SELECT * FROM table_name;
    -- 也可以建立一个视图来封装
    CREATE VIEW table_name_v AS SELECT * FROM table_name@database_link;
    

    删除dblink:

    -- 删除public类型的dblink
    DROP PUBLIC DATABASE LINK dblink_name;
    -- 删除private类型的dblink,只有创建者自己能删
    DROP DATABASE LINK dblink_name;
    

    同义词

    同义词是数据库当前用户通过给另外一个用户的对象创建一个别名,然后可以通过对别名进行查询和操作,等价于直接操作该数据库对象。也可以为使用频率高的一长串的字符设同义词,查询起来会比较省事

    语法:
    CREATE [OR REPLACE] synonym 同义词 for (表名......)
    

    查看当前的用户是否有创建同义词的权限:

    select * from session_privs
    

    没有的话,先赋权限

    --其中USER_B是需要创建同义词的用户
    GRANT CREATE SYNONYM TO USER_B; 
    --这个时候还需要一个权限就是USER_B用户select USER_A用户table的权限,
    --这个时候是在USER_A用户下赋值的
    grant select on tableA to user_temp;  
    

    删除同义词:

    DROP [PUBLIC] SYNONYM [用户.]sysnonym_name;
    

    视图

    视图就是一个预处理的查询语句,可以从若干表中过滤数据。 view 和with as都是先查询数据,再被其他操作调用。 View和with as 的区别就是View创建之后就是一张虚表,with as 相当于临时数据表,View创建之后不删除一直都还在,with as 执行之后就不存在了

    CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name
    AS
    SELECT查询
    [WITH READ ONLY CONSTRAINT]
    

    FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表 创建成功后,视图才能正常使用。 NOFORCE:如果基表不存在,无法创建视图,该项是默认选项

    drop view 视图名 #删除视图
    

    索引

    索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。可以提高查询速度 单一索引:create index 索引名 on 表名(列名); 组合索引:create index 索引名 on 表名(列名1,列名2); 删除索引:drop index 索引名; 查看该表的所有索引:

    select * from all_indexes where table_name = '表名';
    

    表空间

    表和索引一旦创建,表空间无法修改。 创建表空间:

    CREATE TABLESPACE 表空间名
    DATAFILE '数据文件路径' SIZE 大小
    [AUTOEXTEND ON] [NEXT 大小]
    [MAXSIZE 大小];
    

    说明:  [ ]里面内容可选项,数据文件路径中若包含目录需先创建  SIZE 为初始表空间大小,单位为K或者M  AUTOEXTEND 是否自动扩展,值为ON或OFF  NEXT 为文件满了后扩展大小  MAXSIZE 为文件最大大小,值为数值或UNLIMITED(表示不限大小)

    查询表空间:

    --管理员角色查看表空间
    SELECT file_name, tablespace_name, bytes, autoextensible
    FROM dba_data_files
    WHERE tablespace_name = '表空间名';
    

    重命名表空间:

    alter tablespace 原表空间名 rename to 新表空间名
    

    扩充表空间:

    ALTER TABLESPACE 表空间名
    ADD DATAFILE '文件路径' SIZE 大小
    [AUTOEXTEND ON] [NEXT大小]
    [MAXSIZE 大小];
    

    统计所有表空间的空闲大小:

    select a.tablespace_name,nvl(sum(b.bytes),0) bytes 
    from dba_data_files a,dba_free_space b where a.tablespace_name=b.tablespace_name(+) and a.file_id=b.file_id(+) 
    group by a.tablespace_name
    

    统计表空间的使用情况:

    select c.tablespace_name "表空间",round(a.bytes/1024/1024,2)"表空间大小",
    round((a.bytes-b.bytes)/1048576,2)"已使用空间",
    round(b.bytes/1048576,2)"剩余空间",
    round(b.bytes/a.bytes * 100,2)||'%'"剩余百分比"
    from (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
    (select a.tablespace_name ,nvl(sum(b.bytes),0) bytes from dba_data_files a,dba_free_space b where a.tablespace_name=b.tablespace_name(+) 
    and a.file_id=b.file_id(+) group by a.tablespace_name) b,
    DBA_tablespaces c where a.tablespace_name=b.tablespace_name(+) and a.tablespace_name=c.tablespace_name order by round(b.bytes/1024/1024,2)
    

    删除表空间:

    --仅删除表空间
    DROP TABLESPACE 表空间名;
    --删除表空间及数据文件
    DROP TABLESPACE 表空间名 INCLUDING CONTENTS AND DATAFILES;
    
  • 相关阅读:
    前端CSS-font属性,超链接的美化,css精灵,background综合属性
    iOS App上架流程(2016详细版)
    iOS中使用正则
    iOS开发--JS调用原生OC篇
    iOS开发--OC调用JS篇
    CocoaPods 的简单快速安装方法
    iOS开发小技巧 -- tableView-section圆角边框解决方案
    Mac合并分区
    iOS开发小技巧
    iOS开发中遇到的错误整理
  • 原文地址:https://www.cnblogs.com/xujint/p/13228523.html
Copyright © 2011-2022 走看看