欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle SQL Plus 命令收集

程序员文章站 2022-05-03 13:20:55
...

Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。 我们通常所说的DML、DD

Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。
我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。

除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。
下面就介绍一下一些常用的sql*plus命令:

1)无登录进入SQL命令行状态
>sqlplus /nolog
SQL>


2)以指定帐号登录数据库
>sqlplus [用户名]/[用户密码]@[本地服务名]

>sqlplus [用户名]/[用户密码]@[服务器IP]:[服务器端口,通常为1521]/[SID]
如果帐号是sysdba,命令行需增加参数 as sysdba,,如
>sqlplus [用户名]/[用户密码]@[本地服务名] as sysdba


3)执行SQL脚本文件
SQL>start [sql文件]

SQL>@ [sql文件]


4)重新运行上一次运行的sql语句
SQL>/


5)将显示的内容输出到指定文件
SQL> SPOOL [文件名]
在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。
如要关闭spool输出,运行如下命令:
SQL> SPOOL OFF
只有关闭spool输出,才会在输出文件中看到输出的内容。


6)显示一个表的结构
SQL> desc table_name


7)显示当前环境变量的值:
SQL> Show all


8)显示当前在创建函数、存储过程、触发器、包等对象的错误信息
SQL> Show error
当创建一个函数、存储过程等出错时,变可以用该命令查看在那个地方出错及相应的出错信息,进行修改后再次进行编译。


9)显示初始化参数的值:
SQL> show PARAMETERS [parameter_name]


10) 显示数据库的版本:
SQL> show REL[EASE]


11)显示SGA的大小
SQL> show SGA


12)显示当前的用户名
SQL> show user


13)创建用户并付权限
SQL> create user [用户名] identified by [密码] default tablespace [默认的表空间名];
SQL> grant connect,resource to [用户名];
或SQL> grant create session, create table to [用户名];
connect只有create session权限,这是连接数据库的基本权限;resource是开发者权限,至于其中包含的内容可以查询系统表中的具体内容:
SQL> select * from role_sys_privs where role='RESOURCE';
resource一般包括如下权限:
CREATE SEQUENCE
CREATE TRIGGER
CREATE CLUSTER
CREATE PROCEDURE
CREATE TYPE
CREATE OPERATOR
CREATE TABLE
CREATE INDEXTYPE
如果要修改密码,则运行如下命令:
SQL> alert user [用户名] identified by [新密码];


14)创建用户并付权限
SQL> drop user [用户名] cascade;
如果该urer刚创建没有表等对象,可以使用drop user命令删除,否则要使用drop user cascade命令删除,此时会将该用户拥有的对象一同删除。


15)常用函数
sysdate -- 当前日期时间
lower(utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => '888888'))) -- md5加密
concat('a','b') -- 合并两个字符串
'a' || 'b' || 'c' -- 合并多个字符串
to_date('2011-01-01 20:28:03','YYYY-MM-DD HH24:MI:SS') -->字符串转换为date类型,参考ORACLE中date类型字段的处理 见
to_char(t.create_date,'YYYY-MM-DD HH24:MI:SS') -->日期转换为字符串


16) 一些特殊的表的查询
查找指定用户的所有表(注意用户名用大写):select * from all_tables where OWNER = '【USERNAME】';
结果中列TABLESPACE_NAME的值为表空间的名称
查找指定表的所有约束:select * from all_constraints where TABLE_NAME = '【TABLE_NAME】';
查找指定表的所有外键:select * from all_constraints where TABLE_NAME = '【TABLE_NAME】' and CONSTRAINT_TYPE = 'R';
对于CONSTRAINT_TYPE的值,R -- 外键、P -- 主键、U -- 唯一性约束、C -- 一般约束(如某列不能为空)
查找指定用户的所有存储过程和函数:select * from all_procedures where OWNER = '【USERNAME】';
地中OBJECT_TYPE列的值为FUNCTION代表函数,值为PROCEDURE代表存储过程
指定索引:select /*+ index(tablename index_name)*/ from tablename


特别注意:
1)用SQL Plus命令行运行sql文件,建表语句内不能有空行,否则报语法错误
2)用SQL Plus命令行运行sql文件,文件内若包含中文,文件格式必须为ANSI(GBK),设为UTF-8会中文乱码

Oracle SQL Plus 命令收集