1.PL/SQL Developer登录时,connect as 选项有什么作用;2.oracle创建用户;3、常用sql语句;4、序列 Sequence;5.事物的提交/回滚;6.oracle对表结构的操作;7.排序;8.空值处理 ;9.批量privilege至role_map_privilege:
1.PL/SQL Developer登录时,connect as 选项有什么作用。
-----解决方案--------------------------------------------------------
normal-正常连接,只可以操作该用户的数据库对象。
sysdba-可以查看系统表,即具有sysdba角色中的权限,如果连接的用户不具有该权限,会通过OS进行认证。
opera-具有opera角色的权限。
------解决方案--------------------------------------------------------
如果是开发就选normal,
sysdba和sysoper有特殊权限
如果你的账号登陆出现ora-01031,就说明你没权限啦
一般是dba用的
可一般的dba又不用pl/sql
2.oracle创建用户:
一,PL/SQL图形化工具创建
1).用sys用户登陆(密码sa)
2).找到Users,new一个
3).General:用户名和密码自定义,其他默认
4).Object privileges默认
5).Role privileges的Role选择dba其他2项勾选Grantable是可以对其他用户的数据库进行操作
6).System privileges 的 Grantable勾选同上
7).其他默认,最后Apply即创建成功
8).创建后用用户登陆,执行show user select * from v$session;产看当前用户是否为登录用户
二,使用语句建用户参考(oracle创建用户的语法.txt)
建用户名和密码:create user USERNAME identified by PASSWORD;
授权:grant connect,resource,dba to USERNAME;
3、常用sql语句
连接数据库用户:conn USERNAME/PASSWORD;
查询当前用户的所有表:select tname from tab;
select table_name from user_tables;
查询数据库所有用户:select * from all_users;
查询当前用户的名称:show user select * from v$session;
删除用户:drop user 用户名 cascade;
用oracle查询某个用户下的所有视图语句:select view_name from dba_views where owner = '用户名';
查询用户表个数:select count(*) from user_tables;
4、序列 Sequence
create sequence seq_ning;;
drop sequence seq_ning;
insert into student_ning6 values(seq_ning.nextval, 'peter');
create sequence seq_ning start with 1000
increment by 10;
select seq_ning.nextval from dual;
select seq_ning.currval from dual;
create sequence CLAIMS.REPORT_ARCHIVE_SEQ
minvalue 1
maxvalue 999999999999999999999999999
start with 81
increment by 1
cache 20;
5.事物的提交/回滚
Oracle中设置了一个自动提交的开关,如果把它设置为ON,那么所有的改变数据库中数据的语句都会立即生效,影响数据库中的数据,缺省值为OFF。格式:
SET AUTOCOMMIT [ON|OFF];
保存点的设置和使用格式:
SAVEPOINT <保存点名称>;
ROLLBACK TO <保存点名称>;
6.oracle对表结构的操作:
修改类型:alter table 表名 modify 列名 类型;
添加非空约束:alter table 表名 modify 列名 not null;
添加默认值:alter table 表名 modify 列名 default 默认值;
修改列名: alter table 表名 rename column 原表名 to 新表名;
添加一列:alter table 表名 add 列名 类型;
添加主键约束:alter table 表名 add constraint zh(关联名,自定义,一般与列名相同) primary key (列名);
删除主键约束:alter table 表名 drop constraint zh(关联名,自定义,一般与列名相同) cascade;
添加外键关联:alter table 本表名/子表名 add constraint zh(关联名,自定义,一般与关联2个表名) foreign key (列名) references emp (关联表名/父表名);
删除外键关联:alter table 表名 drop constraint zh(关联名);
7.排序:
select * from 表名 order by 列名 desc(降序)
select * from 表名 order by 列名 asc(升序)
8.空值处理
select nvl(列名,0) from 表名;--为空的当0处理
9.批量privilege至role_map_privilege:
DECLARE
role_name_ VARCHAR2(20);
CURSOR get_rec IS
SELECT privilege_id
FROM PRIVILEGE
WHERE privilege_id NOT IN (SELECT privilege_id FROM ROLE_MAP_PRIVILEGE
WHERE role_name=role_name_);
BEGIN
role_name_ := 'DEVELOP';
FOR get_rec_ IN get_rec LOOP
INSERT INTO ROLE_MAP_PRIVILEGE
VALUES(role_name_,get_rec_.privilege_id);
END LOOP;
END;