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);

原文地址:https://www.cnblogs.com/cjxns/p/9720040.html