今天又是一个学习JAVA的好日子!
rowid 和 rownum
rowid ——实现重复记录的删除
用于定位数据库中一条记录的一个
相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。
rowid 它是一个伪列,它并不实际存在于表中。使用 rowid来进行单记录定位速度是最快的。我们可以将其用于删除重复数据
rownum 是一种伪列,它会根据返回记录生成一个序列化的数字。排序后的
结果集的顺序号 ,利用rownum,我们可以生产一些原先难以实现的结果输出。 例如实现分页操作。
ps: oracle 中 索引从 1 开始,java 程序 从 0 开始
笛卡尔积
select empno,emp.deptno from emp,dept;
–使用的字段,是多个表中存在的,指定字段的来源
等值连接(在笛卡尔积基础上 取条件列相同的值)
eg:–找出30部门的员工名称及部门名称:先关联后过滤
select ename, dname, e.deptno from emp e, dept d where
e.deptno=d.deptno and e.deptno=30;
当需要记录很多时:先过滤后关联
非等值连接 > < != <>between and
自连接: 特殊的等值连接 (来自于同一张表)
外连接
主表在,的左边就叫左外连接 主表在,的右边叫右连接
99 连接
1 交叉连接 cross join —>笛卡尔积
2 自然连接(主外键、同名列) natural join -->等值连接
3 join using连接(同名列) -->等值连接
4[inner]join on 连接 -->等值连接 非等值 自连接 (解决一切) 关系列必须区分
5 left|right [outer] join on|using -->外连接
6 full join on|using -->全连接 满足直接匹配,不满足 相互补充null ,确保 所有表的记录 都至少出现一次
视图
视图:建立在表|结果集|视图上的虚拟表,有以下作用
1、简化:select 查询语句
2、重用:封装select语句 命名
3、隐藏:内部细节
4、区分:相同数据不同查询
不是所有的用户都有创建视图的权限
1、前提: create view -->组 connect resource dba
2、授权: -->sqlplus /nolog
a)、sys登录 conn sys/123456@orcl as sysdba
b)、授权: grant dba to scott;
回收: revoke dba from scott;
c)、重新登录
create or replace view 视图名 as select语句 [with read only];
要求:所有列必须存在名称。
对视图的删除不会删除原有表的数据
drop view 视图名;