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;