oracle数据库基础

来源:互联网 发布:淘宝翡翠手把件真假 编辑:程序博客网 时间:2024/06/05 06:01

rownum注意事项:
    rownum=1可以  ,rownum<N,大于 m没有结果集。如何规避,使用子查询形成别名列。然后再外层查询该列。
    rownum=3

SQL操作符:

       1.算术操作符:+(加),-(减),*(乘)和/(除).

       2.比较操作符:=,!=,<,>,<=,>=,BETWEEN...AND(检查是否在两个值之间),IN(与列表中的值相匹配),LIKE(匹配字符模式)和IS NULL(检查是否为空).

       3.逻辑运算符:AND(与),OR(或),NOT(非).

       4.集合操作符:UNION(联合):操作符返回两个查询选定的所有不重复的行.

.                           UNION ALL(联合所有):操作符合并两个查询选定的所有行

                            INTERSECT(交集):操作符只返回两个查询所有行

                            MINUS(减集):操作符只返回由第一个查询选定而未被第二个查询选定的行.

       5.连接操作符:连接操作符(||)用于将两个或多个字符串合并成一个字符串,或者将一个字符串与一个数值合并在一起.


用户A(Scott)去访问用户B(happyy2165) 里面的student包
Oracle三大系统角色
connect
resource
dba
方案一:直接授权法
         1.用happyy2165登录,之后,授权
                 grant select on HAPPYY2165.STUDENT to scott
         2.用scott登录,用如下代码去访问Student表
                 select * from HAPPYY2165.student
  
方式二:通过角色去控制
         1.自定义角色 role_testy2165  create role role_testy2165
         2.将查询表的权限和角色绑定
             GRANT select on HAPPYY2165.STUDENT to role_testy2165
         3.给用户分配角色
             grant role_testy2165 to SCOTT
             revoke select on HAPPYY2165.student from SCOTT 回收权限
 
解锁用户:(首先修改一下密码)
          alter user HR identified by hr
          alter user hr account unlock
删除重复数据,保留编号最大的一条数据:
         
         DELETE FROM STUDENT WHERE stuno  NOT IN
          (
              SELECT "MAX"(stuno) FROM STUDENT GROUP BY stuname,stuage
           )


--创建一个用户
create user y2165 identified by y2165


--权限
grant connect to y2165
grant RESOURCE to y2165


--建立一张表
create table userinfo
(id number primary 
ey not null)




--伪列
select id,rowid,rownum from userinfo




--查询自然排序的第三条记录
select * 
from
(
select ename,rownum rn from emp
)temp
where rn=3


--通过角色控制
--自定义角色
CREATE role role_testy2165


--将查询表的权限和角色绑定
grant SELECT ON Y2165."student" TO role_testy2165


--给用户分配角色
GRANT role_testy2165 to SCOTT




--distinct查询不重复的数据
select DISTINCT "stuname","stuage" from STUDENT;


--创建学生表的备份表
create table studentbak
as
select * from STUDENT


--删除相同的列,保留id最大的
DELETE FROM student
WHERE "stuno" NOT IN(SELECT "MAX"("stuno") FROM student GROUP BY "stuname","stuage")




SELECT 1+1 FROM dual


SELECT '你'||'好' FROM dual


SELECT '运算结果'||'5' FROM dual




SELECT deptno FROM dept
INTERSECT --交集
SELECT DISTINCT deptno FROM emp


SELECT deptno FROM dept
MINUS --减集
SELECT DISTINCT deptno FROM emp
原创粉丝点击