Oracle 基础

来源:互联网 发布:老人坐便椅子淘宝网 编辑:程序博客网 时间:2024/05/17 04:42
 一.角色和权限(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)连接操作符  ||
原创粉丝点击