• 售前

  • 售后

热门帖子
入门百科

SQL PLUS根本命令的使用方法示例

[复制链接]
123456811 显示全部楼层 发表于 2021-8-14 15:05:48 |阅读模式 打印 上一主题 下一主题
1、Oracle 中 dba,all,user, 之间的区别
  1. 1. 结论:'权限大小不同': dba_* > all_* > user_*
  2.    (1) dba_* : 可以访问 '数据库' 中所有的对象(前提:该用户是 dba 用户)
  3.    (2) all_* :某一用户 '拥有' 的或 '可以访问' 的所有的对象
  4.    (3) user_*:某一用户 '拥有' 的所有对象
  5. 2. 查询是否是 dba 用户
  6.    select * from dba_role_privs t where t.granted_role = 'DBA';
复制代码
2、desc
  1. desc:万能查看命令
  2. 查看dept表
  3. SQL> desc dept
  4. Name                                      Null?    Type
  5. ----------------------------------------- -------- --------------------------
  6. DEPTNO                                    NOT NULL NUMBER(2)
  7. DNAME                                              VARCHAR2(14)
  8. LOC                                                VARCHAR2(13)
复制代码

3、设置SQL*PLUS的运行情况,包罗每行的表现字符数、每页表现行数、每页打印标题前空行数。 set命令基本语法
在Oracle 11g数据库中,用户可以使用set命令来设置SQL*Plus的运行情况;
  1. set system_variable value;
  2. system_variable:变量名;
  3. value:变量值;
复制代码
通过set命令设置的情况变量是暂时的,不是永久的;

当用户退出SQL*Plus情况后,用户设置的情况参数会全部消失;
使用set命令设置运行情况
  1. pagesize变量:该变量用来设置从顶部标题至页结束之间的行数;
  2. set pagesize value;
  3. value的默认值为14;
  4. 使用show pagesize命令显示当前SQL*Plus环境中的一页有多少行;
  5. show pagesize;
  6. 同理:
  7. newpage变量:该变量用来设置一页中空行的数量;
  8. set newpage value;
  9. value的默认值为1;
  10. show newpage;
  11. linesize变量:
  12. 该变量用来设置在SQL*Plus环境中一行所显示的最多字符总数;
  13. set linesize value;
  14. value的默认值为80;
  15. show linesize;
  16. pause变量:
  17. 该变量用来设置SQL*Plus输出结果是否滚动显示;
  18. set pause value;
  19. value变量值有以下三种情况:
  20. - off:默认值,表示返回结果一次性输出完毕,中间的每一页不会暂停;
  21. - on:表示输出结果的每一页都暂停,用户按后回车键后会继续显示;
  22. - text:在设置pause的值为on之后,再设置text的值,则每次暂停都将显示该字符串;
  23.         当pause的值设置为off时,设置text的值没有任何意义;
复制代码

oracle用命令实行sql脚本文件

当sql命令过多(sql文件过大)时,用plsql实行时比力慢而且轻易超时,此时可以用sqlplus命令直接实行sql脚本文件。
  1. @ H:/sql/test.sql  (绝对路径)
复制代码

oracle中spool将查询的数据写入文件

通常情况下,我们使用SPOOL方法,将数据库中的表导出为文本文件的时间会接纳两种方法,如下述:
  1. 方法一:采用以下格式脚本
  2. set colsep '' ------设置列分隔符
  3. set trimspool on
  4. set linesize 120
  5. set pagesize 2000
  6. set newpage 1
  7. set heading off
  8. set term off
  9. spool 路径+文件名
  10. select * from tablename;
  11. spool off
  12. 方法二:采用以下脚本
  13. set trimspool on
  14. set linesize 120
  15. set pagesize 2000
  16. set newpage 1
  17. set heading off
  18. set term off
  19. spool 路径+文件名
  20. select col1||','||col2||','||col3||','||col4||'..' from tablename;
  21. spool off
复制代码


差异:
比力以上方法,即方法一接纳设定分隔符然后由sqlplus自己使用设定的分隔符对字段举行分割,方法二将分隔符拼接在SELECT语句中,即手工控制输特别式。
在实践中,我发现通过方法一导出来的数据具有很大的不确定性,这种方法导出来的数据再由sql导入的时间堕落的大概性在95%以上,尤其对大批量的数据表,如100万条记载的表更是如此,而且导出的数据文件狂大。
而方法二导出的数据文件格式很规整,数据文件的巨细大概是方法一的1/4左右。经这种方法导出来的数据文件再由sqll导入时,堕落的大概性很小,基本都可以导入乐成。
因此,实践中我发起大家使用方法二手工去控制spool文件的格式,这样可以减小堕落的大概性,制止走许多弯路。
ttitle,btitle命令
  1. 它主要是对头标题与尾标题的设置,如下:
  2. eg:为查询结果设置居中的头部标题、居右的当天日期作为尾部标题,并为查询结果列定义列标题。
  3. SQL> ttitle center '结果';
  4. SQL> btitle right '2021/03/30';
  5. SQL> select * from dept; ;
  6.                                       结果
  7.     DEPTNO DNAME          LOC
  8. ---------- -------------- -------------
  9.         10 ACCOUNTING     NEW YORK
  10.         20 RESEARCH       DALLAS
  11.         30 SALES          CHICAGO
  12.         40 OPERATIONS     BOSTON
  13.                                                                       2021/03/30
  14. 如果想撤消ttitle与btitle:
  15. SQL> ttitle off;
  16. SQL> btitle off;
  17. SQL> select * from dept;
  18.     DEPTNO DNAME          LOC
  19. ---------- -------------- -------------
  20.         10 ACCOUNTING     NEW YORK
  21.         20 RESEARCH       DALLAS
  22.         30 SALES          CHICAGO
  23.         40 OPERATIONS     BOSTON
  24. SQL>
  25.                                                    
复制代码

column 命令

format格式化输出
  1. format 选项
  2. 用于格式化指定的列
  3. SQL> column sal format $99,99,99;
  4. SQL> select empno,ename,sal from scott.emp;
  5.      EMPNO ENAME             SAL
  6. ---------- ---------- ----------
  7.       7369 SMITH           $8,00
  8.       7499 ALLEN          $16,00
  9.       7521 WARD           $12,50
  10.       7566 JONES          $29,75
  11.       7654 MARTIN         $12,50
  12.       7698 BLAKE          $28,50
  13.       7782 CLARK          $24,50
  14.       7788 SCOTT          $30,00
  15.       7839 KING           $50,00
  16.       7844 TURNER         $15,00
  17.       7876 ADAMS          $11,00
  18.      EMPNO ENAME             SAL
  19. ---------- ---------- ----------
  20.       7900 JAMES           $9,50
  21.       7902 FORD           $30,00
  22.       7934 MILLER         $13,00
  23. 14 rows selected.
  24. heading 选项
  25. 用于定义列标题
  26. SQL> col empno heading 雇员编号;
  27. SQL> col ename heading 雇员姓名;
  28. SQL> col sal heading 雇员薪水;
  29. SQL> select empno,ename,sal from scott.emp;
  30.   雇员编号 雇员姓名     雇员薪水
  31. ---------- ---------- ----------
  32.       7369 SMITH           $8,00
  33.       7499 ALLEN          $16,00
  34.       7521 WARD           $12,50
  35.       7566 JONES          $29,75
  36.       7654 MARTIN         $12,50
  37.       7698 BLAKE          $28,50
  38.       7782 CLARK          $24,50
  39.       7788 SCOTT          $30,00
  40.       7839 KING           $50,00
  41.       7844 TURNER         $15,00
  42.       7876 ADAMS          $11,00
  43.   雇员编号 雇员姓名     雇员薪水
  44. ---------- ---------- ----------
  45.       7900 JAMES           $9,50
  46.       7902 FORD           $30,00
  47.       7934 MILLER         $13,00
  48. 14 rows selected.
复制代码


对缓存区的操纵
  1. (1)查看当前缓存区中的SQL命令。
  2. >list
  3. (2)执行存储在缓存区的SQL命令。
  4. >run
  5. (3)将缓存区中的内容保存到一个SQL脚本文件(文件名自拟)。
  6. >save C:/sql.sql
  7. (4)把一个脚本文件的内容放进缓存区,并执行缓存区中的语句。
  8. >get C:/sql.sql
  9. >start C:/sql.sql
  10. (5)清除缓存区中的内容。
  11. >clear buffer
  12. SQL> save H:/sql/test3.txt;
  13. Created file H:/sql/test3.txt
  14. SQL> get H:/sql/test.sql;
  15.   1  select table_name from user_tables;
  16.   2* desc dept
  17. SQL> start H:/sql/test.sql;
  18. TABLE_NAME
  19. ------------------------------
  20. DEPT
  21. EMP
  22. BONUS
  23. SALGRADE
  24. Name                                      Null?    Type
  25. ----------------------------------------- -------- ----------------------------
  26. DEPTNO                                    NOT NULL NUMBER(2)
  27. DNAME                                              VARCHAR2(14)
  28. LOC                                                VARCHAR2(13)
  29. SQL> clear buffer;
  30. buffer cleared
  31. SQL>
复制代码

总结

到此这篇关于SQL PLUS基本命令使用的文章就先容到这了,更多相干SQL PLUS命令使用内容请搜索草根技术分享从前的文章或继续欣赏下面的相干文章渴望大家以后多多支持草根技术分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作