Oracle基础

一.角色和权限

(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=2

6.查询表中有多少条记录

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)

union

select  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)连接操作符  ||

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值