• oracle6


    转换函数  
     介绍
    转换函数用于将数据类型从一种转为另外一种。在某些情况下,oracle server允许值的数据类型和实际的不一样,这时oracle server会隐含的转化数据类型 
    比如: 
    create table t1(id int); 
    insert into t1 values('10');-->这样oracle会自动的将'10' -->10 
    
    create table t2 (id varchar2(10)); 
    insert into t2 values(1); -->这样oracle就会自动的将1 -->'1'; 
    我们要说的是尽管oracle可以进行隐含的数据类型的转换,但是它并不适应所有的情况,为了提高程序的可靠性,我们应该使用转换函数进行转换。 
    
     to_char
    你可以使用select ename, hiredate, sal from emp where deptno = 10;显示信息,可是,在某些情况下,这个并不能满足你的需求。 
    
    问题:日期是否可以显示 时/分/秒 
    SQL> select ename, to_char(hiredate, 'yyyy-mm-dd hh24:mi:ss') from emp; 
    问题:薪水是否可以显示指定的货币符号 
    SQL> 
    
    
    yy:两位数字的年份 2004-->04 
    yyyy:四位数字的年份  2004年 
    mm:两位数字的月份 8月-->08 
    dd:两位数字的天 30号-->30 
    hh24: 8点-->20 
    hh12:8点-->08 
    mi、ss-->显示分钟秒 
    
    9:显示数字,并忽略前面0 ,to_char(sal,'L99999.99') 
    0:显示数字,如位数不足,则用0补齐to_char(sal,'L09999.99') 
    .:在指定位置显示小数点to_char(sal,'L99999.99') 
    ,:在指定位置显示逗号 to_char(sal,'L99,999.99')
    $:在数字前加美元 to_char(sal,'$99999.99')
    L:在数字前面加本地货币符号 to_char(sal,'L99,999.99')
    C:在数字前面加国际货币符号 
    G:在指定位置显示组分隔符、 
    D:在指定位置显示小数点符号(.) 
    
    问题:显示薪水的时候,把本地货币单位加在前面 
    SQL> select ename, to_char(hiredate, 'yyyy-mm-dd hh24:mi:ss'), to_char(sal,'L99999.99') from emp; 
    问题:显示1980年入职的所有员工 
    SQL> select * from emp where to_char(hiredate, 'yyyy')=1980; 
    问题:显示所有12月份入职的员工 
    SQL> select * from emp where to_char(hiredate, 'mm')=12; 
    
     to_date
    函数to_date用于将字符串转换成date类型的数据。 
    问题:能否按照中国人习惯的方式年—月—日添加日期。 
    
    系统函数 
     sys_context,以下是7个参数:
    1)terminal:当前会话客户所对应的终端的标示符 
    2)lanuage: 语言 
    3)db_name: 当前数据库名称 
    4)nls_date_format: 当前会话客户所对应的日期格式 
    5)session_user: 当前会话客户所对应的数据库用户名 
    6)current_schema: 当前会话客户所对应的默认方案名 (一个用户对应一个方案,方案名和用户是一样的)
    7)host: 返回数据库所在主机的名称 
    通过该函数,可以查询一些重要信息,比如你正在使用哪个数据库? 
    select sys_context('USERENV','db_name') from dual; 
    注意:USERENV是固定的,不能改的,db_name可以换成其它,比如select sys_context('USERENV','lanuage') from dual;又比如select sys_context('USERENV','current_schema') from dual; 

    方案(schema)

    理解:当一个用户,创建好以后,如果该用户创建了任意一个数据对象,此时,我们的dbms就会创建一个对应的方案与该用户对应。方案名与用户名完全一样。方案里面有很多的数据对象(表、视图、触发器、存储过程),是以方案的方式组织数据对象.

     

    小技巧:如果希望看到某个用户的方案究竟有什么数据对象,我们可以使用pl/sql developer

    方案这个概念的实际应用:
    要求:请完成一个功能,让xiaohong用户可以去查询scott的emp表
    步骤:
    1、先用scott登录
    sql>conn scott/tiger;
    2、赋权限给xiaohong
    给某用户添加表[增删改查]权限基本语法:grant [select|update|delete|insert|all] on 表名 to 用户名;
    sql>grant select on emp to xiaohong;
    3、xiaohong查询scott的emp
    用户查询授权表的基本语法:select * from [方案名].表名;
    注意:方案名不带的话,默认是查询自己方案中的表。
    sql>select * from scott.emp;
    数据库管理,表的逻辑备份与恢复
    数据库管理员 
     介绍
    每个oracle数据库应该至少有一个数据库管理员(dba),对于一个小的数据库,一个dba就够了,但是对于一个大的数据库可能需要多个dba分担不同的管理职责。那么一个数据库管理员的主要工作是什么呢: 
     职责
    1.安装和升级oracle数据库 
    2.建库,表空间,表,视图,索引… 
    3.制定并实施备份和恢复计划 
    4.数据库权限管理,调优,故障排除 
    5.对于高级dba,要求能参与项目开发,会编写sql语句、存储过程、触发器、规则、约束、包 
    
     管理数据库的用户主要是sys和system        
    (sys好像是董事长,system好像是总经理,董事长比总经理大,但是通常是总经理干事) 
    在前面我们已经提到这两个用户,区别主要是: 
    1.最重要的区别,存储的数据的重要性不同 
    sys:所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba,sysdba,sysoper角色或权限,是oracle权限最高的用户。 
    system:用于存放次一级的内部数据(不是很重要),如oracle的一些特性或工具的管理信息。system用户拥有dba,sysdba角色或系统权限。 
    看图: 

     

    sysdba可以建数据库,sysoper不能建数据库 
    
    
    2. 其次的区别,权限的不同。 
    sys用户必须以as sysdba或as sysoper形式登录。不能以normal方式登录数据库 
    system如果正常登录,它其实就是一个普通的dba用户,但是如果以as sysdba登录,其结果实际上它是作为sys用户登录的,从登录信息里面我们可以看出来。 
    
    
    conn sys/change_on_install 登录报错
    conn sys/change_on_install as sysdba 或者conn sys/change_on_install as sysoper
    
    sysdba和sysoper权限区别图,看图: 

     

    sysdba>sysoper>dba 
    可以看到:只要是sysoper拥有的权限,sysdba都有;蓝色是它们区别的地方。(它们的最大区别是:sysdba可以创建数据库,sysoper不可以创建数据库) 
    
     dba权限的用户
    dba用户是指具有dba角色的数据库用户。特权用户可以执行启动实例,关闭实例等特殊操作,而dba用户只有在启动数据库后才能执行各种管理工作。 
    (相当于说dba连startup和shutdown这两个权限都没有) 
    
    两个主要的用户,三个重要权限,他们的区别和联系,大家要弄清楚
  • 相关阅读:
    [uva 11762]Race to 1[概率DP]
    为什么webview.loadUrl("javascript:function() ")不执行?
    IPhone多视图切换
    IAA32过程调用保护规则注册
    c#扩展方法简单
    Spring综合Struts2
    简单的讲Erlang一些运营商
    leetcode先刷_Pascal's Triangle II
    王立平--RemoteView
    js到字符串数组,实现阵列成一个字符串
  • 原文地址:https://www.cnblogs.com/yaowen/p/4856207.html
Copyright © 2020-2023  润新知