查询:
1.查询数据库的信息:
查看数据库里面的所有用户,(前提是你是有dba权限的帐号,如sys,system)
select * from dba_users;
查询当前数据库所有的表, 需要你有 DBA 的权限
SELECT * FROM dba_tables;
2.查询该用户的所有信息:
查看当前用户信息 !
select * from user_users;
select * from dba_users;
select * from all_users;
select * from user_users; //查看当前用户
当前用户下,有哪些表
SELECT * FROM user_tables;
当前用户能管理的所有用户
select * from all_users;
下面是转载的:
1.查看所有用户:
select * from dba_users;
select * from all_users;
select * from user_users; //查看当前用户
二. 查看角色
1.当前用户被激活的全部角色
select * from session_roles;
2.当前当前用户被授予的角色
select * from user_role_privs;
3.全部用户被授予的角色
select * from dba_role_privs;
4、查看某个用户所拥有的角色
select * from dba_role_privs where grantee='用户名';
5、查看某个角色所拥有的权限
select * from dba_sys_privs where grantee='CONNECT';
6.查看所有角色
select * from dba_roles;
三、查看权限
1.基本权限查询:
select * from session_privs; --当前用户所拥有的全部权限
select * from user_sys_privs;--当前用户的系统权限
select * from user_tab_privs;--当前用户的对象权限
select * from dba_sys_privs ;--查询某个用户所拥有的系统权限
select * from role_sys_privs;--查看角色(只能查看登陆用户拥有的角色)所包含的权限
2. 查看用户的系统权限(直接赋值给用户或角色的系统权限)
select * from dba_sys_privs;
select * from user_sys_privs;
2.查看用户的对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
3.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from v$pwfile_users;
扩展
1、以下语句可以查看Oracle提供的系统权限
select name from sys.system_privilege_map
2、查看一个用户的所有系统权限(包含角色的系统权限)
select privilege from dba_sys_privs where grantee='SCOTT'
union
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='SCOTT' );
3、 查询当前用户可以访问的所有数据字典视图。
select * from dict where comments like '%grant%';
4、显示当前数据库的全称
select * from global_name;
问题 1:如何查询一个角色包括的权限?
a.一个角色包含的系统权限
select * from dba_sys_privs where grantee='角色名'
select * from dba_sya_privs where grantee='COONNECT'; connect要大写
另外也可以这样查看:
select * from role_sys_privs where role='角色名'
b.一个角色包含的对象权限
select * from dba_tab_privs where grantee='角色名'
问题 2:Oracle究竟有多少种角色?
select * from dba_roles;
问题 3:如何查看某个用户,具有什么样的角色?
select * from dba_role_privs where grantee='用户名'
问题4:查看哪些用户具有DBA的角色
select grantee from dba_role_privs where granted_role='DBA';
创建:
执行本地sql脚本:(注意,一定要以command window窗口执行命令,不要在sql window窗口下执行,会报命令无效)
较短的sql语句,可在窗口执行,大量的sql语句,容易会造成 PLSQL 卡死,执行等待时间过长,甚至奔溃,造成操作失败等结果。
解决办法:
command window命令窗口执行sql脚本。采用这种方式,可以有效的加快执行的速度,和方便查看每一句的执行结果,但当被执行 .sql 文件中的某一语句出错时,PLSQL 只会显示该语句的错误信息,并不会立即停止执行。
@D:\\yycg_table.sql;
1、创建表空间:
格式: create tablespace 表间名 datafile '数据文件名' size 表空间大小(*数据文件名 包含全路径, 表空间大小 20M )
drop tablespace YYCG0620 including contents and datafiles;
create tablespace yycg0620 datafile 'D:\\softManager\\install\\oracle\\app\\lmj\\LTableSpace\\ccyg.dbf' size 20M autoextend on
next 32m maxsize 2048m
extent management local;
/*注意表空间要大写。小写会报无效字符*/
/*创建用户,并授权*/
drop user LMJ cascade;
create user lmj identified by lmj
default tablespace YYCG0620
temporary tablespace temp;
grant connect,resource,dba to lmj;
删除表空间和用户:(DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
drop user ×× cascade)drop tablespace tablespace_name including contents and datafiles
建好tablespace表空间, 就可以建用户了,
格式: create user 用户名 identified by 密码 default tablespace 表空间表;
(*我们创建一个用户名为 study,密码为 study, 缺少表空间为 data_test -这是在第二步建好的.)
(*缺省表空间表示 用户study今后的数据如果没有专门指出,其数据就保存在 data_test中, 也就是保存在对应的物理文 件 e:\oracle\oradata\test\data_1.dbf中)
create user study identified by study default tablespace data_test;
创建用户并指定表空间
//CREATE USER cici IDENTIFIED BY cici PROFILE DEFAULT DEFAULT TABLESPACE CICI ACCOUNT UNLOCK;
create user jykl identified by jykl default tablespace jykl_data temporary tablespace jykl_temp;
授权给新用户;
GRANT connect, resource,session,dba TO cici;
建好了表空间,用户,及用户权限,下面开始建表:
create table student(
stuid number(10) primary key,
stuname varchar2(20) not null,
stusex varchar2(2) default '男' check(stusex in('男','女'))
);
create table couse(
couseid number(10) primary key,
cousename varchar2(20) not null,
cousetype varchar2(4)
);
create table score(
scoreid number(10) primary key,
stuid number(10) references t_stu(stuid),
couseid number(10),
constraint fk_couseid foreign key(couseid)
references t_couse(couseid)
on delete cascade
);
CREATE TABLE log(
log_id int(10) unsigned NOT NULL auto_increment,
log_time datetime NOT NULL,
log_user varchar(30) NOT NULL,
log_title varchar(30) default NULL,
log_content text default NULL,
PRIMARY KEY(log_id));
接下来创建约束:============>格式为:
alter table 表名 add constraint 约束名 约束内容。
create table INFOS(
STUID varchar2(7) not null, --学号 学号=‘S’+班号+2位序号
STUNAME varchar2(10) not null, --姓名
GENDER varchar2(2) not null, --性别
AGE number(2) not null, --年龄
SEAT number(2) not null, --座号
ENROLLDATE date, --入学时间
STUADDRESS varchar2(50) default '地址不详', --住址
CLASSNO varchar2(4) not null, --班号 班号=学期序号+班级序号
);
/ ①
alter table INFOS add constraint pk_INFOS primary key(STUID) ②
/
alter table INFOS add constraint ck_INFOS_gender check(GENDER = '男' or GENDER = '女') ③
/
alter table INFOS add constraint ck_INFOS_SEAT check(SEAT >=0 and SEAT <=50) ④
/
alter table INFOS add constraint ck_INFOS_AGE check(AGE >=0 and AGE<=100) ⑤
/
alter table INFOS add constraint ck_INFOS_CLASSNO check((CLASSNO >='1001' and CLASSNO<='1999') or
(CLASSNO >='2001' and CLASSNO<='2999')) ⑥
/
alter table INFOS add constraint un_STUNAME unique(STUNAME) ⑦
/
代码解析:
① 在Oracle代码中,“/”执行缓存区中的语句,由于缓冲区中只存储一条刚刚保存过语句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有单独一行“/”。
② 创建一个主键约束。
③ 与 ④ ⑤ ⑥ ⑦一起创建各种check约束。其中⑦是唯一约束,表示该列值是唯一的,列中的值不能重复。
constraint PK_T_SCORE primary key (AUTOID),
constraint FK_T_SCORE_REFE foreign key (STU_ID) references T_STU (STU_ID));