Oracle基础
来源:互联网 发布:js控制video全屏播放 编辑:程序博客网 时间:2024/06/01 10:11
Oracle
1.基础知识
1.数据库系统和数据库的管理系统
数据库系统=数据库的管理系统+oper+硬件
2.Java学习路线
算法和数据结构
3.Oracle认证
OCA
OCP
OCM
4.Oracle版本 8,9i/ 10,11g /12c
5.实例和数据库
数据库 就是硬盘上的文件 ,指的是数据文件
实例:数据库服务启动后,在内存中的一个结构
6.MYSQL数据文件的后缀
MYSQL数据库的引擎
INNODB 支持事务的
MYISAM 不支持事务
数据文件:INNODB:以.frm和ibd ibd中
MYISAM:.frm 表结构 .myi 索引 .myd 数据
6.使用ORacle
1.server is start contains two :listener dbserver
顺序:先监听,再数据库服务
2.客户端连接
PL/SQL developer
7.root root
8.Oralce三种用户
sys:超级管理员 管理普通管理员 orcl
system:orcl
scott: tiger 通过命令解锁用户
9.用MyEclipse连接Oracle
app----->happy--->oradata和Product(jdbc---->lib----->ojdbc6.jar)
10.关于三种数据库的默认端口号
SQLSevver :1433
MySQL: 3306
Oracle:1521
11. 常用四种类型
number 数字类型
nvarchar2 字符串
clob 大文本
blob 二进制
rowid rownum 伪列
2.查看当前用户的角色和权限
查看当前用户的角色
SQL>select * from user_role_privs;
SQL>select * from session_privs
查看当前用户的系统权限和表级权限
SQL>select * from user_sys_privs;
SQL>select * from user_tab_privs;
附:
一、查看用户:
1.查看当前用户:
select * from v$session;
2.查看所有用户:
select * from dba_users;
select * from all_users;
select * from user_users;
二、查看角色:
1.当前用户被激活的全部角色
select * from session_roles;
2.当前用户被授予的角色
select * from user_role_privs;
2.全部用户被授予的角色
select * from dba_role_privs;
3.查看所有角色:
select * from dba_roles;
4. 查询当前角色被授予的角色
Select GRANTED_ROLE from ROLE_ROLE_PRIVS where ROLE=&ROLE;--例如role= 'DBA'
三、查看权限:
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_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、查看一个用户的所有系统权限(包含角色的系统权限)
Sql代码
select privilege from dba_sys_privs where grantee='DATAUSER'
union
select privilege from dba_sys_privs where grantee in (select granted_role fromdba_role_privs where grantee='DATAUSER' );
developer
1.表能否被访问到,要看当前登录用户是谁?
解析:A(Scott)用户了,我想要访问B用户(HappyY2164)的Userinfo表
方案1:直接授权法
1.用b用户的身份登录,然后执行以下指令
grant select on HAPPYY2164.userinfo toscott
2.用A登录,然后执行以下查询
select * from HAPPYY2164.userinfo
方案2:直接授角色法
1.先用system登录,我自定义一个角色role_testy2164
create role role_testy2164
2.将权限和某个角色进行绑定
grant select on happyy2164.userinfo to role_testy2164
2.做一个授权操作,将角色授权给用户
grant role_testy2164 to scott
ROWNUM 查询返回的是结果集中行的序号,可以使用它来限制查询返回的行数
通过测试可知,Rownum只能对=1和<N进行筛选,如果>M不能筛选,如何规避。
通过子查询构建临时表,让伪列Rownun成为临时表中的列,然后限定条件使用伪列的
别名。
查询emp表的第三条记录
select *from
(
select ename,rownumrnfrom emp
) temp wherern= 3;
查询薪资排名第五的员工信息
select *from
(
select sal,ename,rownumrnfrom (select* fromemp order bysal desc) temps
) temp
where rn=5;
一.角色和权限(1)A用户访问B用户下的表,但是没有dba权限 方案一直接授权法:用B用户登录,执行 (grant select on B用户.表名 to A用户) 然后用A用户登,执行(select * from B用户.表名)即可查询B用户下的表 方案二授予角色法:用system登录,自定义一个角色,(grant role 角色名) 将访问B用户表的权限赋予这个角色(grant select on B用户.表名 to 角色名) 将这个角色再赋予A用户(grant 角色名 to scott)
收回B用户赋予A用户的权限:(revoke select on B用户.表名 from A用户) (2)角色和权限的关系 一个角色可以囊括多个权限,多个权限可以隶属于一个角色二.常用数据类型 三. sql简介
解锁用户alter user 用户名 account unlock四.sql查询1.查询emp表自然排序下的第三条记录SELECT * FROM
(
SELECT ename,ROWNUM run FROM emp WHERE ROWNUM<=3
)temp
WHERE TEMP.run=3
ROWNUM 查询返回的是结果集中行的序号,可以使用它来限制查询返回的行数 通过测试可知,Rownum只能对=1和<N进行筛选,如果>M不能筛选,如何规避。通过子查询构建临时表,让伪列Rownun成为临时表中的列,然后限定条件使用伪列的别名。2.查询员工表中薪资排名第五的员工SELECT * FROM
(
SELECT ename,ROWNUM rn FROM (SELECT * FROM EMP ORDER BY SAL DESC) temps
)temp
WHERE rn=5
3.oracle sql分页实现SELECT * FROM
(
SELECT ename,ROWNUM rn FROM (SELECT * FROM EMP ORDER BY SAL DESC) temps where ROWNUM <=10
)temp
WHERE rn>=6
4.查询表中无重复记录的学生的年龄SELECT DISTINCT STUAGE FROM STUDENT
5.利用现有表创建新表(1)选择所有数据CREATE TABLE STUDENT1
AS
SELECT * FROM STUDENT
(2)选择指定的列CREATE TABLE STUDENT2
AS
SELECT stuname,stuage FROM STUDENT
(3)只保留表结构,不保留数据CREATE TABLE STUDENT1
AS
SELECT * FROM STUDENT
where 1=26.查询表中有多少条记录select count(*) from student //执行效率低select count(1) from student //执行效率高
7.删除有重复数据的记录并保留年龄最大值的一列Delete from student where ROWID not in(select max(ROWID) from student group by stuname,stuage HAVING(count(*)=1)unionselect max(ROWID) from student group by stuname,stuage HAVING(count(*)>1))8.sql操作符(1)算数操作符 + - * /(2)比较操作符 > <(3) 逻辑操作符 and or(4)集合操作符 UNION(联合) 可以去重UNION ALL(联合所有) 不可以去重INTERSECT(交集) 查询共有的内容MINUS(减集) 返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录(5)连接操作符 ||
- oracle基础
- Oracle基础
- oracle基础
- Oracle基础
- oracle基础
- Oracle 基础
- oracle 基础
- Oracle基础
- oracle基础
- oracle基础
- oracle基础
- oracle基础
- Oracle 基础
- Oracle基础
- oracle基础
- oracle基础
- Oracle基础
- Oracle基础
- Java数据结构与算法解析(五)——二叉查找树
- Android中ConvenientBanner的使用--获取网络图片 --(实现效果是自动轮播图片)
- 上机
- android 对for循环进行优化
- 用 GStreamer 简化 Linux 多媒体开发
- Oracle基础
- linux系统奔溃之vmcore:kdump 的亲密战友 crash
- 计算机图形学学习笔记一
- Pdp11 simh 虚拟机 运行 unix V6
- Android实现日夜间模式的三种常用方法(三)
- Android Studio突然导包无效 import无效 调用无效
- 应用层-5、DNS
- flask的基本使用
- ArcGIS UID的用法