oracle中操作表和权限

--连接管理员 
conn / as sysdba;
sys;--系统管理员,拥有最高权限
system;--本地管理员,次高权限
scott;--普通用户,密码默认为tiger,默认未解锁

--创建临时表空间
create temporary tablespace  user_temp
tempfile 'D:user_temp.dbf'
size 50M
autoextend on
next 50m maxsize 1000m
extent management local;
--创建数据表空间
create tablespace user_data
logging 
datafile 'D:user_data.dbf'
size 50m
autoextend on
next 50 maxsize 1000m
extent management local;
--创建用户和密码并指定表空间
create user liuqiang identified by liuq
default tablespace user_data
temporary tablespace user_temp;
--授予权限
grant connect,resource to liuqiang;
--授权dba权限
grant dba to liuqiang;
--删除用户以及用户所有的对象
drop user liuqiang cascade;
--修改密码
alter user liuqiang identified by liuqiang;
--查询liuqiang用户
select * from user_sys_privs where username='liuqiang';
--授予连接的权限
grant connect to liuqiang;
--授予对表的所有操作的角色
grant resource to liuqiang;
--授予liuqiang用户创建session的权限
grant create session to liuqiang;
--授予liuqiang用户使用表空间的权限
grant unlimited session to liuqiang;
--授予创建表的权限
grant create table to liuqiang;
--回收连接权限
revoke connect from  liuqiang;


--创建表
create table T_user
(
c_id raw(16) primary key,
c_name varchar2(50) not null,
c_password varchar2(50) not null
);
create table T_userType
(
c_typeId raw(16) primary key not null,
c_typeName varchar2(50) not null
);
--复制表
create table userinfo as(select * from T_user);
--添加字段
alter table T_user add c_age smallint;
alter table T_user add c_typeId raw(16) not null;
--查看表的详细信息
desc T_user;
--字段添加检查约束约束
alter table T_user add constraint CK_age check(c_age>0 and c_age<=100);
--字段修改为非空
alter table T_user modify(c_age not null);
--添加唯一约束
alter table T_user add constraint UQ_name unique(c_name);
--删除唯一约束
alter table T_user drop constraint UQ_name;
--添加外键约束
alter table T_user add constraint FK_c_typeId foreign key(c_typeId) references T_userType(c_typeId);
--修改字段属性
alter table T_user modify(c_age int);



--创建序列
create sequence T_user_SEQ
increment by 1--自增1
nomaxvalue--无最大值
nocache--无缓存
start with 1--从1开始
nocycle--不循环
noorder;--不排序
create sequence T_userType_SEQ
increment by 1
nomaxvalue
nocache
nocycle
noorder;



--插入guid类型的数据
insert into T_userType(c_typeId,c_Typename) values(
sys_guid(),'会员');
insert into T_userType(c_typeId,c_Typename) values(
sys_guid(),'普通');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'liuqiang','liuqiang',23,'B41826760A624EB692A4A92E1C4FB821');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'张三','张三',23,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'李四','李四',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'tim','tim',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'lily','lily',15,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'lucy','lucy',17,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'王二','王二',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'王丽丽','王丽丽',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'红红','红红',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'小绿','小绿',36,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'小黄','小黄',33,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'企鹅','企鹅',27,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'你好','你好',19,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'新年','新年',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'','',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'电视','电视',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'小甜甜','小甜甜',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'小黑','小黑',14,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'旺旺','旺旺',17,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'旺财','旺财',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'豆子','豆子',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'田娃','田娃',19,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'田鸡','田鸡',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'','',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'呵呵','呵呵',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'哈哈','哈哈',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'可以','可以',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'','',44,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'伤心','伤心',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'','',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'dfsd','dsf',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'dd','ddd',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'eee','eee',27,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'李www四','李www四',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'qqq','eeee',22,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'rrr','tttt',33,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'yyy','uuuu',21,'BDF0229F86234043AB1B81E9F314FF6F');
insert into T_user(c_id,c_Name,c_Password,c_Age,c_Typeid) values(sys_guid(),'李iii四','iiii',14,'BDF0229F86234043AB1B81E9F314FF6F');
--插入number的数据
insert into T_userType(c_typeId,c_Typename) values(
T_USERTYPE_SEQ.Nextval,'普通');
--查询当前插入的编号
select T_USERTYPE_SEQ.Currval from T_userType;
--分页查询  
select * from (select U.*,rownum r  from (select * from T_user) U
where rownum<10)  T
where t.r>=5;



--打开输出
set serveroutput on;
--查询输入的值
declare in_name t_user.c_name%type;
begin
  select c_name into in_name from T_user
  inner join T_Usertype
  on T_Usertype.c_Typeid=T_user.c_Typeid
  where T_user.c_Name='&c_Name';
  
  if in_name='liuqiang'then
     dbms_output.put_line('登录成功!'||in_name);
  else 
    dbms_output.put_line('登录失败');
    end if;
end;
--创建视图
create or replace view view_user
as
select c_id,c_name,c_password,c_age,c_typeName from T_user
inner join T_Usertype
on T_Usertype.c_Typeid=T_user.c_Typeid;
--删除视图中的值表中的数据也会删除
delete  view_user where c_name='&c_name';
--创建唯一索引字段包括c_name,c_Age,c_Typeid
create unique index index_user on T_user(c_name asc,c_Age desc,c_Typeid);
--创建存储过程处理事务
create or replace procedure usp_user
(
in_name T_user.c_Name%type,--自适应类型
in_age T_user.c_Age%type
)
is
begin 
  savepoint aa;
  delete from T_user where c_name=in_name;
  insert into T_user(c_Id,c_Name,c_password,c_Age,c_Typeid) values(sys_guid(),in_name,in_name,in_age,'BDF0229F86234043AB1B81E9F314FF6F');
  dbms_output.put_line('成功');
  exception --异常
    when others then
      rollback to savepoint aa;
      dbms_output.put_line('失败');
      return;
end;
--调用存储过程
call usp_user('rrr');
--执行存储过程
execute usp_user('rrr');
--创建函数返回值为varchar2(类型)含有输出参数
create or replace function Fun_user(in_name T_user.c_Name%type,out_name out T_user.c_Name%type  )
return T_user.c_Name%type   is

begin 
  select c_name into out_name from T_user where c_name=in_name;
  return '用户名为'||out_name;
  end;
 --调用带有输出参数的函数
declare 
b_name T_user.c_Name%type;
a_name T_user.c_Name%type;
begin
  a_name:=Fun_user('liuqiang',b_name);
  dbms_output.put_line(a_name);
  end;




--创建包
create or replace package pag_user is
procedure usp_user(in_name in T_user.c_Name%type);--声明存储过程
function Fun_user(in_name in T_user.c_Name%type,out_name out T_user.c_Name%type) return T_user.c_Name%type;--声明函数返回为T_user.c_Name%type类型
end;

--创建包主体
create or replace package body pag_user is
  procedure usp_user(in_name in T_user.c_Name%type) is
  begin
    delete from T_user where c_name=in_name;
    end;
 function Fun_user(in_name in T_user.c_Name%type,out_name out  T_user.c_Name%type) return  T_user.c_Name%type  is
  begin
    select c_name into out_name from T_user where c_name=in_name;
    return out_name;
    end;
end;
--调用包中的存储过程和函数
execute pag_user.usp_user('dd');
declare 
in_name  T_user.c_Name%type;
out_name  T_user.c_Name%type;
begin
  out_name:=pag_user.Fun_user('liuqiang',in_name);
  dbms_output.put_line(out_name);
  end;
 --复合类型
 create or replace procedure usp_select(in_name in T_user.c_Name%type) is
  --定义一个复合类型即数组
 type listUser is record(out_name  T_user.c_Name%type,out_age  T_user.c_Age%type);
 user_info listUser;
 begin
   select c_name,c_age into user_info from T_user where c_name=in_name;
   dbms_output.put_line('姓名'||user_info.out_name);
 end;
 --%rowtype
 create or replace procedure usp_select(in_name in T_user.c_Name%type) is
 user_info T_user%rowtype;--输出表的行
 begin
   select * into user_info from T_user where c_name=in_name;
   dbms_output.put_line('姓名'||user_info.c_name||',年龄'||user_info.c_age);
   end;
 --执行
 execute usp_select('liuqiang');
 
--游标
create or replace procedure usp_info is
type type_name is ref cursor;--定义游标
user_info type_name;--定义游标变量
c_name  T_user.c_Name%type;
c_age  T_user.c_age%type;
begin
  open user_info for select c_name,c_age  from T_user;--打开游标
  loop--循环
    fetch user_info into c_name,c_age;--遍历游标
    exit when user_info%notfound;--没有找到数据就退出循环
     dbms_output.put_line('姓名'||c_name||',年龄'||c_age);--输出信息
    end loop;
   close user_info;--关闭游标
  end;
  --调用
execute usp_info;
--创建触发器
create or replace trigger tri_user
before--触发前
insert or delete or update on T_user--增删改
begin
  case
  when inserting then
    raise_application_error(-20002,'请不要添加');
    when deleting then
      raise_application_error(-20003,'请不要修改');
      when updating then
        raise_application_error(-20004,'请不要删除');
        end case;
  end;
 --使用:old和:new
create or replace trigger tri_user
before
delete on  T_user
for each row
  begin
    insert into userinfo(c_id,c_Name,c_Password,c_Age,c_Typeid) values(:old.c_id,:old.c_Name,:old.c_Password,:old.c_Age,:old.c_Typeid);
    end;
    
    


--导出表空间表table1中的字段filed1以"00'打头的数据导出 
exp liuqiang/liuqiang@orcl file='d:user_temp.dmp' tables=(table1) query=" where filed1 like '00%'"
--导入表空间表table1
imp liuqiang/liuqiang@orcl file='d:user_temp.dmp' full=y ignore=y
 tables=(table1)

--包中创建游标
create or replace package pag_pagecount is
  type user_info is ref cursor;
end;
 --创建分页过程
create or replace procedure usp_page(in_pagesize in number,in_pageIndex in number) is
      user_type  pag_pagecount.user_info;--游标
      out_name userinfo.username%type;--名字
      out_pwd userinfo.userpwd%type;--密码
      page_size number;--结束
      page_index number;--开始
  begin 
      page_size:=in_pageIndex*in_pagesize;--结束
      page_index:=(in_pageIndex-1)*in_pagesize;--开始
      dbms_output.put_line(page_size||page_index);
      open user_type for  select username,userpwd from  (select u.username,u.userpwd,rownum r from  (select username,userpwd  from userinfo) u where rownum<page_size) T where T.r>=page_index;
    loop
          fetch user_type into out_name,out_pwd;
          exit when user_type%notfound;
          dbms_output.put_line(out_name||out_pwd);
    end loop;
  end;
  --得到总页数
 create or replace  function fun_page  return number is
      out_pagCount number;
  begin 
      select count(*) into out_pagCount from userinfo;
      return out_pagCount;
      dbms_output.put_line(out_pagCount);
    end;
    
原文地址:https://www.cnblogs.com/LoVeSW/p/3425238.html