您的位置:首页 > 其它

Day06 杂乱与4个对象

2016-03-24 20:34 197 查看
1.杂乱

  -- 数据库的分页操作

      -- 分页使用的是rownum

      例1:    

select rownum,empno,ename
from emp
where rownum <= 5;


    结果:



      例2:

select r,empno,ename
from (
select rownum r,empno,ename
from emp
where rownum <= 5
)
where r >1;


    结果:



        --注意: 给字段取别名不要给表取

        --可以根据需求来决定1页要显示的数据条数。

   --rowid  用来指定本地文件里面数据存放的位置。

   -- purge 回收站
      --oracle的回收站
        show recyclebin;

         -- 查询回收站里面的表的数据 如果你需要查询回收站里面的内容那么你需要满足一个格式,就是给表名添加双引号(" ")。

               select * from "BIN$7VBJkRCLTEmSMoICIxm6lg==$0";

         -- 双引号的作用

              -- 1). 别名 2). 常量     3). 用来查询回收站里面的表的数据
         -- 如何还原回收站里面的内容 -- 闪回 在oracle中一共有7中闪回技术。

   -- oracle中的约束条件

        1). 主键约束 primary key 非空且唯一
        2). 非空约束 not null
        3). 唯一性约束 unique
        4). check约束 check
        5). 外键约束 foreign key  

        例:

create table testemp(
id number(5) primary key,
name varchar2(20) not null,
gender varchar2(10) check(gender in('男','女')),
cardid varchar2(3) unique,
detpno number references dept(deptno)
);


     -- constraint 用来修改oracle的错误提示编码

create table testemp
(
id number(5) primary key,
name varchar2(20) constraint name_not_null not null,
gender varchar2(10) constraint gender_check check(gender in('男','女')),
cardid varchar2(3) constraint carid_unique unique,
detpno number constraint fk references dept(deptno)
);


2.4个对象(视图、索引、序列、同义词)
    -- 视图(视图是一个逻辑表,用来简化sql查询语句,视图本身不存放数据,视图不能提高查询效率)

       -- 视图的创建

          -- 默认情况下scott用户是没有创建视图的权限的(view) 。

          -- 给soctt用户授权,让它可以创建视图 (grant create view to scott)。

               -- 登录dba的命令 cmd >>输入: sqlplus / as sysdba; 然后输入 :grant create view to scott;

例:

create view myview
as
select * from emp;


create view myview
as
select e.ename,d.dname,e.job,e.sal,e.comm
from emp e,dept d
where e.deptno = d.deptno;


      -- 视图的第二个用途: 对于一些敏感的数据可以用来隐藏。

      -- 一般创建视图的时候都不希望用视图去修改其真实的表。(添加一个 with read only;)

        

SQL> create view myview
as
select empno,ename,job
from emp
with read only;

视图已创建。

SQL> insert into myview values(1001,'ddd','SAL');
insert into myview values(1001,'ddd','SAL')
*
第 1 行出现错误:
ORA-01733: 此处不允许虚拟列    //这样就可以隐藏一些敏感数据


   ---索引(index)
    -- 索引的用途: 可以用来提高查询的效率, 索引可以在一定程度上提高我们的查询效率,但是它要根据数据量来决定,数据量越多提高的效果越明显,数据越低效果越不明显。

        create index myjob on emp(job);

          注意: -- 可以通过查询sql执行的日志,来查看是否调用了我们的索引。
              -- 经常变动的列不适合建立索引。

    -- 索引的实现 -- B树索引和位图索引(矩阵)

   -- 序列
       sequence 主要用来做主键的自增长。
          -- 创建一个序列
              create sequence myseq;

          -- 如何使用序列: nextval,currentval。

              select myseq.nextval from dual;

              select myseq.currval from dual;

              drop sequence myseq;   --删除序列

              -- 创建一个序列从50开始
                   create sequence myseq start with 50;

              -- 创建一个序列从50开始,然后每次增加10
                   create sequence myseq
                   start with 100
                   increment by 5;

     -- 同义词
         -- synonym: oracle中表的别名。
         -- 主要用途: 用来给其他用户下的表添加别名。
   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: