博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 基础知识
阅读量:5140 次
发布时间:2019-06-13

本文共 4347 字,大约阅读时间需要 14 分钟。

SQLDevelop

1. 查看数据库版本 :  select  *  from   v$version;

2. 查看表结构:        desc     TABLE_NAME

3. 查看当前连接用户:  select  *  from  v$session;     (show user;  在SQLPlus中显示当前用户名)

4. 查看当前被锁定的表:

SELECT    OSUSER, machine, object_name, s.sid, s.serial#

FROM      gv$locked_object l  ,  
              dba_objects     o,    
            gv$session    s
WHERE    l.object_id  = o.object_id
AND               l.session_id = s.sid

5.   解锁被锁定的表: alter system kill session 'sid, serial#';     (e.g:  : alter system kill session  '23, 4561'  )

6.   NVL函数,处理空值null :    SELECT   id,   NVL(name, 'name_is_null')  from  STU1;   -- 如果STU1表中,name字段为null, 则用name_is_null替换.

7. 查询当前用户下是否有某个表: SELECT  COUNT(1)  FROM USER_TABLES  WHERE TABLE_NAME='STU12'; --如果存在为1, 不存在为0

8. 查询某个用户下是否有某个表:  select count(1) from dba_tables  where   owner = 'USER_NAME' and table_name = 'TABLE_NAME';

9. 查看当前用户下是否有某个(Package/Procedure/Function) :

     SELECT   *  FROM  USER_PROCEDURES   OBJECT_TYPE=' FUNCTION| PROCEDURE | PACKAGE'

10. 查看所有用户  SELECT  *  FROM  all_users;

 11. Sequence 的用法

create sequence  mysql START WITH      1   INCREMENT  BY  1 NOMAXVALUE   NOMINVALUE NOCYCLE     -- if CYCLE 1000 表示增长到1000之后又从1开始 NOCACHE

   12.    union,  union all,  intersect,  minus 的操作

- union all  将结果集累加  (包含重复记录)SELECT * FROM  STU1union allSELECT * FROM STU2-- union     将结果集累加(去除重复)SELECT * FROM  STU1union  SELECT * FROM STU2-- intersect  去结果集的: 交集SELECT * FROM  STU1intersect   SELECT * FROM STU2-- minus  去结果集的: 差集 (将第一个select所得结果, 减去 所有出现在 第二select的结果)SELECT * FROM  STU1minus   SELECT * FROM STU2

 13.   oracle  数据的五种对象:别名(synonym) ,  序列(Sequence),  视图(View),  索引(Index)  ,  族(cluser).

14.   sign(num)的用法:

  if  num > 0,   sign(num) =1;

  if  num =0,   sign(num) =0;

  if  num <0 , sign(num) = -1;

15. decode 函数用法:

Usage#1:    decode( expression , search , result [, search , result]... [, default] )
select  decode(id,   1, '#1', 2, '#2', 3, '#3', 4, '#4', '#Default NO#'),           name from     STU1;   --  将id为1,2,3,4分别转义为#1,#2,#3,#4, 如果不是1,2,3,4则转换为 #Default NO# :

  Usage#2:  decode((date1 - date2) - abs(date1 - date2), 0, date2, date1)  --  比较2个中大小,返回较小的一个

  Usage#3: 结合sign(num)函数,判断学生成绩 >=80 为优秀, 60<=  score <80  为良好,  socre < 60 为不及格

select  id, name ,score, decode(sign(score-80), 1 , '优秀', 0, '优秀', -1,                                                                              decode(sign(score-60), 1, '良好', 0, '良好', -1 ,'不及格') )   from STU1;

 16.  trunc( number, [ decimal_places ] ) 用法(decimal_places必须为>=0的整数,将number后面多余的位数抹掉,不足的位数,保留原有的摸样)

trunc(125.815)        would return 125trunc(125.815, 0)     would return 125trunc(125.815, 1)     would return 125.8trunc(125.815, 2)     would return 125.81trunc(125.81, 3)      would return 125.81trunc(-125.815, 2)    would return -125.81trunc(125.815, -1)    would return 120trunc(125.815, -2)    would return 100trunc(125.81, -3)     would return 0 如果decimal_places 大于number 本身的小数位数,返回原数字不会加0. 如:trunc(125.81,3) would return 125.81; 如果decimal_places 为负数,那么将指定的位数设置为0

 17.  查询哪些用户连接到数据库了,并且他们的IP地址分别是什么?

    17-1.   缺省从 v$session 中不能直接获得客户端 IP,可以在数据库中创建一个追踪客户端IP地址的触发器:

create or replace trigger on_logon_trigger after logon on database  begin      dbms_application_info.set_client_info(sys_context('userenv', 'ip_address'));  end;

    17-2.  退出之后,当用户重新登录时,可以查看IP地址

select sid,serial#,username,program,machine,client_info      from   v$session      where  username is not null      order   by username,program,machine;

 18.  SYSTEM  用户忘记密码

D:\oracle\product\11.2.0\dbhome_1\BIN>sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on 星期四 7月 25 14:35:36 2013Copyright (c) 1982, 2010, Oracle.  All rights reserved.SQL> conn /as sysdba已连接。SQL> alter user SYSTEM identified by  新密码;用户已更改。SQL> exit

 19.  复制表

ORACLE 如果表不存在:
只复制表结构:create table T_COLUMN_BK as select * from T_COLUMN WHERE 1<>1; //如果只是复制部分字段,可以用具体的字段列表代替 *  表结构+数据: create table T_COLUMN_BK as select * from T_COLUMN ;           //如果只是复制部分字段,可以用具体的字段列表代替 * ORACLE 如果表已经存在:       复制表数据: INSERT INTO  T_COLUMN_BK   SELECT  *  FROM  T_COLUMN

 20.   查询当前数据库实例名称:     SELECT    instance_name   FROM   v$instance; 

 21,   查询当前数据库名称:           SELECT    name      FROM   v$database; 

          默认情况下,数据库实例名称和数据库名称相同。

22.   NVL() 函数的使用

      -- NVL(expr1,  expr2)        if   expr1==null,  return expr2;    e.g:     NVL(null, 'aa' )   ---> aa ;

                                             if   expr1 != null,  return expr1;  e.g :     NVL('xx', 'aa' )----> xx  

 

    -- NVL2(expr,  expr1,  expr2)       if  expr == null,    return expr2;    e.g:   NVL2(null, 'aa', 'bb')   ----->bb

                                                     if  expr != null,     return  expr1;    e.g:   NVL2('xxx', 'aa', 'bb')  ---->aa

 

 

转载于:https://www.cnblogs.com/dragonflyyi/p/3179502.html

你可能感兴趣的文章
海上孤独的帆
查看>>
error: more than one device and emulator 问题解决
查看>>
Java基础:容器
查看>>
YUV摘要格式
查看>>
【方法2】删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录
查看>>
C# CheckedListBox控件的使用方法
查看>>
【HDOJ】2007平方和与立方和
查看>>
js中const,var,let区别
查看>>
SharePoint自定义程序页面部署 不用重启IIS
查看>>
2014-11-30-2333-Java-数组
查看>>
Nginx 自动补全url地址补全最后的斜线
查看>>
【SQL Server 2008 安装全过程】
查看>>
xml的解析及案例的分析和分享
查看>>
[译] 盘点CSS3中的新特性
查看>>
Test
查看>>
猜字母
查看>>
POJ 2421 Constructing Roads(最小生成树)
查看>>
weibo_json
查看>>
30 最小n个数
查看>>
ACM题目————最长回文串
查看>>