Day06 杂乱与4个对象
1.杂乱
-- 数据库的分页操作
-- 分页使用的是rownum
例1:
1 select rownum,empno,ename 2 from emp 3 where rownum <= 5;
结果:
例2:
1 select r,empno,ename 2 from ( 3 select rownum r,empno,ename 4 from emp 5 where rownum <= 5 6 ) 7 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
例:
1 create table testemp( 2 id number(5) primary key, 3 name varchar2(20) not null, 4 gender varchar2(10) check(gender in('男','女')), 5 cardid varchar2(3) unique, 6 detpno number references dept(deptno) 7 );
-- constraint 用来修改oracle的错误提示编码
1 create table testemp 2 ( 3 id number(5) primary key, 4 name varchar2(20) constraint name_not_null not null, 5 gender varchar2(10) constraint gender_check check(gender in('男','女')), 6 cardid varchar2(3) constraint carid_unique unique, 7 detpno number constraint fk references dept(deptno) 8 );
2.4个对象(视图、索引、序列、同义词)
-- 视图(视图是一个逻辑表,用来简化sql查询语句,视图本身不存放数据,视图不能提高查询效率)
-- 视图的创建
-- 默认情况下scott用户是没有创建视图的权限的(view) 。
-- 给soctt用户授权,让它可以创建视图 (grant create view to scott)。
-- 登录dba的命令 cmd >>输入: sqlplus / as sysdba; 然后输入 :grant create view to scott;
例:
1 create view myview 2 as 3 select * from emp;
1 create view myview 2 as 3 select e.ename,d.dname,e.job,e.sal,e.comm 4 from emp e,dept d 5 where e.deptno = d.deptno;
-- 视图的第二个用途: 对于一些敏感的数据可以用来隐藏。
-- 一般创建视图的时候都不希望用视图去修改其真实的表。(添加一个 with read only;)
1 SQL> create view myview 2 as 3 select empno,ename,job 4 from emp 5 with read only; 6 7 视图已创建。 8 9 SQL> insert into myview values(1001,'ddd','SAL'); 10 insert into myview values(1001,'ddd','SAL') 11 * 12 第 1 行出现错误: 13 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中表的别名。
-- 主要用途: 用来给其他用户下的表添加别名。