orcle常用语句

查询:

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.查看哪些用户有sysdbasysoper系统权限(查询时需要相应权限)
  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='角色名'   
 

问题 2Oracle究竟有多少种角色?   
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));

建表时表名字段名要大写 :

更多可阅读原文:https://www.cnblogs.com/qmfsun/p/3817344.html

猜你喜欢

转载自blog.csdn.net/qq_41063141/article/details/88765750