zoukankan      html  css  js  c++  java
  • oracle

    创建用户,表空间,角色,授予用户角色权限

    1.以系统管理员身份登录 sql plus

      conn scott/tiger as sysdba;           --scott用户以sysdba的身份登录

    2.创建新用户,修改新用户密码

      create user zhangfei  identified by zf123;       --注意用户不要为关键字

      alter user zhangfei  identified by zff123;

    3.给该用户分配一个表空间

      create tablespace ts_zf  datafile  'f: t_ppkk.dbf' size  200M;   --datafile 后面是表空间的物理存储路径,文件的后缀名随意

      alter user zhangfei  default  tablespace  ts_zf;

    4.分配空间后暂时还不能登录,没有登录权限,需分配权限

      grant  create table,create session, create view,create sequence,unlimited  tablespace  to zhangfei;  --session是登录数据库权限

      conn zhangfei/zff123;    --可以登录数据库

    5.简化版授予权限,由于自带三张标准角色,所以可以直接通过角色授予使得用户可以登录数据库并可以操作表,序列,过程,触发器,索引,簇

      grant connect,resource to zhangfei;

           revoke  connect,resource from zhangfei ;    --撤销权限  

    6.授予用户tuba在t_class表上的select权限

      create user tuba identified by tutu;

      grant select on t_class to  tuba ;

      --用户tuba可以查询用户zhangfei创建的表t_class 数据了

      select * from zhangfei.t_class;           --可以查到数据,如果在表名前没有所属用户名, 查不到数据,报错:表或试图不存在

    7.创建角色

      create role  rolename;

    8.授予角色在t_class表上的select权限

      grant select on t_class to 角色名 ; 

    ========================================================================================

    create table t_class(

      tc_id  number(5) ,

      tc_name varchar2(30) ,

      createdate date  

    )

    create table t_user(

      t_id  number(5) ,

      t_name varchar2(30) ,

      tc_id number(5)

    )

    将orcle一些使用总结了一下

    1.日期:        默认日期格式(DD-MON-RR 日-月-年)  insert into t_class('29-9月-18')

      添加日期字段:  alert table t_class add(learndate  date);

      修改字段:    alert table t_class modify(column1 number not null )  -- modify  修改数据类型,以及是否为空  column1 列名

               alert table t_class rename column filed_name to new_filed_name;   --rename 修改字段名

      删除字段:    alert table t_class drop(column)

      插入日期格式数据:  to_date()函数

        insert into t_class values(1001,'class1',to_date('2018-9-28','yyyy-mm-dd'));

        insert into t_class values(1002,'class2',to_date('2018-9-28','yyyy-mm-dd'));

      显示正常年月日的日期:

        select to_char(createdate,'yyyy-mm-dd') from t_class;

      add_months(date,m)  给日期加月份数

        select * from t_class where createdate between add_months(sysdate,-2) and sysdate;   --近两个月的数据

      months_between(date1,date) 两个月份相差的月份数 date1-date   可以存在小数

        select months_between(sysdate,'30-9月-18') from dual;

    2.查询区间数据  利用伪列(rownum)

      前10行数据,加别名

        select tc_id  班级号, tc_name 班级名, createdate 班级创建时间 from t_class  where rownum<=10;

      3-5条数据

        select tc_id,tc_name from ( select  tc.*,rownum as rowno from t_class tc )  where rowno between 3 and 5;

    3.利用旧表创建新表,不要数据

      create table t_base

      as

      select * from t_class where 1=2;

      向新表插入数据 :  insert into t_base   select * from t_class where tc_id>1001;

     4.对表结构进行操作:

      create  alter drop

    5.对表数据进行操作:

      insert update delete  select   truncate(截断表,快速删除表中所有数据,对于有主外建的表,索引之类的不要用这个,不会触发触发器,少用)

    6.数据提交,撤回

      commit   rollback  savepoint(标记事务中可以回滚的点)

    ===========================================================================================

    1.集合操作符:将两个查询的结果组合成一个结果(列数要相同,对应列的数据类型要兼容)

      minus 从第一个查询结果中排除第二个查询中出现的行  intersect  查询它们的公共行        union    union all  将两个结果集合并在一起 ( 区别:union 去重,union all 不去重)  

      select tc_id from t_class

      minus  |  intersect  | union

      select tc_id from t_user

     查询数据需要去重直接用distinct;

      select distinct tc_name from t_class;

    2.连接运算符  ||

      select  '班级编号:'|| tc_id||',班级名:'||tc_name from t_class;

    3.round  

      1、数字类型,四舍五入

        select round(23.498) from dual;   --23

        select round(23.498 , 2 ) from dual;  --23.50

      2.日期类型

        select round(to_date('2018-9-30','yyy-mm-dd'),'yy') from dual;  --   01-1月-19  (明年)

        select round(to_date('2018-9-10','yyy-mm-dd'),'dy') from dual;  --  09-9月-18  (周一至周三,上周日)

        select round(to_date('2018-9-10','yyy-mm-dd'),'dy') from dual;  --  09-9月-18  (周四-周日,本周日)

    3.trunc 

      1、数字类型,不四舍五入,直接取位数值

        select trunc(23.578) from dual;   --23

        select trunc(23.478 , 2 ) from dual;  --23.47

      2.日期类型,日期取整

        select trunc(to_date('2018-9-10','yyy-mm-dd')) from dual;   --  10-9月-16

        select trunc(to_date('2018-9-10','yyy-mm-dd'),'yyyy') from dual;  --  01-1月-18  年初

        select trunc(to_date('2018-9-10','yyy-mm-dd'),'mm') from dual;  --  01-9月-18  月初

        select trunc(to_date('2018-9-10','yyy-mm-dd'),'dd') from dual;  --  10-9月-18  当前日期

    =====================================================================================

    1.函数  将 , 替换成 ',    一,二,三,  变成  ‘一’,‘二’,‘三’

      create or replace function func_replace(czd varchar2)
      return varchar2
      as
        resul varchar2(1000);

      begin   
          resul:= ''''|| substr(replace(czd,',',''','''),0,instr(replace(czd,',',''','''),',',-1)-1);
          dbms_output.put_line(resul);
      return resul;
      end func_replace;


    --   set  serveroutput on  显示函数输出结果

    declare 

      kk varhcar2(100);

    begin

      kk:=' 一,二,三, ';

      kk :=func_replace(kk);

      dbms_output.put_line(kk);

    end;

    2.过程

      create or replace procedure  pro_class(tt number)   --默认为 in

      as

        tm  varchar2(20);

      begin

        select tc_name into tm

        from t_class where tc_id  = tt;

        dbms_output.put_line('班级编号:'|| tm);

      exception

        when no_data_found  then

        dbms_output.put_line('班级编号未找到');

      end pro_class;

       --执行

      execute pro_class(1008);

  • 相关阅读:
    LeetCode 773. Sliding Puzzle
    oracle latch工作原理
    Oracle关于锁的几种类型和参数
    Java的反射机制
    JAVA多线程与并发学习总结
    Spring 概念详解
    Spring的AOP
    spring面试题 对DI , AOP概念的理解
    双11的架构
    Java线程的定义
  • 原文地址:https://www.cnblogs.com/cjxns/p/9720040.html
Copyright © 2011-2022 走看看