oracle自连接】的更多相关文章

    oracle 的自连接(self join)操作 对于oracle数据库来说,目前支持两套语法,一套是oracle自己的sql语法,一套是通行标准的SQL99语法,那么对于oracle的连接操作 来说,也完全可以使用这样的两套语法来分别的实现.当然从效率上来说,两者是没有差别的.只不过从我的角度来讲,oracle的语法更加简洁而已. 比如说我们有一张表emp,表里数据如下 scott@DB01> conn scott/tiger Connected. scott@DB01> set l…
--连接查询的三种格式 select ename, deptno,dname from emp natural join dept; select ename, deptno,dname from emp join dept using(deptno); select emp.ename, emp.deptno,dept.dname from emp join dept on emp.deptno!=dept.deptno; --自连接,将一张表当成两张表来看待 select e.ename,m…
自连接:通过表的别名,将同一张表视为多张表 select e.ename 员工姓名,b.ename 老板姓名 from emp e,emp b where e.mgr=b.empno; 注:自连接不适合操作大表,即表中有多条记录. 因为是笛卡尔积查询,例如表中有1亿条记录,如果使用自连接查询出来就是1亿*1亿…
1.简述  1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合结果集   2) 有5种基本类型的的连接,inner,outer,natural,cross连接,自连接.   2.说明与例子 1)内连接 (inner join (可简写为join)) 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值. 1.等值连接:在连接条件中使用等…
Oracle 表之间的连接分为三种: 1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)        (2)右外连接(右边的表不加限制)        (3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法:        select table1.column,table2.column               from table1 [inner | left | right | full ] join table2 on…
http://blog.163.com/wkyuyang_001/blog/static/10802122820091751049479/ 当表中的某一个字段与这个表中另外字段的相关时,我们可能用到自连接. 自连接(self join)是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据. 我们什么时候应该使用自连接呢?我们来看下面的例子. 在oracle的scott的schema中有一个表是emp 在emp中的每一个员工都有自己的mg…
用S2SH三大框架整合,用了oracle自带的表emp,实现了自连接. pojo类: public class Emp implements java.io.Serializable { // Fields private Short empno; private Dept dept; private String ename; private String job; private Short mgr; private Date hiredate; private Double sal; pr…
关于自连接.左外连接.右外连接.全连接:   简单来讲,随便来个例子: A表 B表 id name id name  1 a 1 b  2 b 3 c 4 c   内连接就是左表和右表相同的数据: select * from A inner join B on A.id=B.id id name id name  1 a 1 b    外连接分为:左外连接.右外连接.全外连接 左外连接就是以左表为准,去匹配右表,左表有多少条数据,结果就是多少条数据 select * from A left jo…
查询出员工姓名,员工领导姓名 select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr = e2.empno; 结果 自连接:站在不同角度把一张表看成多张表 查询出员工姓名,员工部门名称,员工领导姓名,领导部门名称 select e1.ename,d1.dname,e2.ename,d2.dname from emp e1,emp e2,dept d1,dept d2 where e1.mgr = e2.empno and e1.deptn…
Oracle===============================数据库:Oracle------>甲骨文(Oracle) 49+%DB2---------->IBM 49+%SqlServer---->微软My Sql------->(Oracle) 开源典型 Oracle:(神谕)数据的隔离采用用户的方式 userNamepassWord一个数据库的概念:一组内存,一组进程 usersys:超级管理员system:管理员scott:普通用户 用户:可以直接被授权,被指定…
oracle数据库plsql developer   目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外键 创建删除索引 创建修改删除视图 二     SQL查询 基本的SQL语句 unionminusintersect 内连接外连接 子查询关联子查询 betweeninexists 复制表insert into selectselect into from 三     SQL查询优化 尽量少用 IN…
1.--dense_rank()分析函数(查找每个部门工资最高前三名员工信息) select * from (select deptno,ename,sal,dense_rank() over(partition by deptno order by sal desc) a from scott.emp) where a<=3 order by deptno asc,sal desc ; 结果: --rank()分析函数(运行结果与上语句相同) select * from (select dep…
1. SQL(基础查询) 1.1. 基本查询语句 1.1.1. FROM子句 SQL查询语句的语法如下:   SELECT <*, column [alias], -> FROM table; 其中:SELECT用于指定要查询的列,FROM指定要从哪个表中查询.如果要查询所有列,可以在SELECT后面使用*号,如果只查询特定的列,可以直接在SELECT后面指定列名,列名之间用逗号隔开.例句如下,查询dept表中的所有记录:   SELECT * FROM dept; 1.1.2. 使用别名 在…
    多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所在的部门名字 --(1)必须明确的指出重复字段属于哪个表 select ename,dname dept.deptno from emp,dept where emp.deptno = dept.deptno;   --(2)新语法:join...on(...=...) select ename,…
  oracle 分析函数over 分析函数(OVER) 目录: =============================================== 1.Oracle分析函数简介 2. Oracle分析函数简单实例 3.分析函数OVER解析 一.Oracle分析函数简介: 在日常的生产环境中,我们接触得比较多的是OLTP系统(即Online Transaction Process),这些系统的特点是具备实时要求,或者至少说对响应的时间多长有一定的要求:其次这些系统的业务逻辑一般比较复…
最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing- 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述 二:怎样查看Oracle执行计划? 因为我一直用的PLSQL远程连接的公司数据库,所以这里以PLSQL为例: ①:配置执行计划需要显示的项: 工具  ->  首选项 ->   窗口类型  ->  计划窗口  ->  根据需要配置要显示在执行计划中的列 执行计划的常用列字段解…
一.已知程序和数据 create table test1 (id int primary key, name ), money int); ,); ,); ,); ,); 要求根据下图写出相应的sql语句. 分析:该题使用自连接和左外连接可以解决 =t2.id(+) order by id 或者 ) money1 from test1 t; 二.已知程序和数据 create table pm_ci (ci_id ) primary key, stu_ids )); ','1,2,3,4'); '…
一.oracle 11g安装的注意事项 1.超级管理员密码设置要符合要求(特别是不能以数字打头),否则在创建数据库的时候会产生ora-00922错误以及ora-28000错误. 解决方法:http://kuangdaoyizhimei.blog.163.com/blog/static/22055721120157994441330/ 2.oracle 11g能够兼容win7,但是不兼容xp;oracle 10g不兼容win7,兼容xp;xp既支持oracle 11g,也支持oracle 10g.…
一篇让Java程序猿随时可以翻看的Oracle总结 前言:Oracle学习也有十几天了,但是呢,接下来还要学习许多其他的东西,并不能提步不前,所以在此总结了以下Oracle中常用的命令和语句,没有语法都是实例,以便以后工作的时候随时翻看,毕竟是自己的东西,一看就懂.  有关的语句和操作基本都是按照实战中的顺序来总结的,比如创建用户,建表,序列初始化,插入数据的顺序呢. 这篇文章的基表是大家最为熟知的Scott用户下的emp员工表,dept部门表以及salgrade薪水等级表,一切的语句都是围绕它…
http://www.blogjava.net/kiant/articles/234781.html Oracle 笔记(四).SQL 几个要点 附录: 1.SQL 简介 2.SQL 操作符 3.Oracle 常用数据类型 4.Oracle 函数 5.[转] Oracle 常用SQL语法 字符串函数 LENGTH() 字符长度 LENTTHB() 字节长度:一个汉字内存中占用 2字节 LTRIM.RTRIM.TRIM 截串 SUBSTR(表达式,位置,长度) Oracle 无左右取串函数,但可以…
Oracle 表之间的连接分为三种: 1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)      (2)右外连接(右边的表不加限制)      (3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法:             select table1.column,table2.column from table1 [inner | left | right | full ] join table2 on table1.column…
一.sql*plus常用命令 (1)connect 用法:conn 用户名/密码@网络服务名[as sysdba/sysoper] 当特权用户连接时,必须带上as sysdba或是as sysoper (2)disc[onnect] 说明:该命令用来断开与当前数据库的连接 (3)passw[ord] 说明:该命令用于修改用户的密码,如果想修改其他用户的密码需要用sys/system登录 (4)show user 说明:显示当前用户名 (5)exit 说明:该命令会断开与数据库的连接,同时会退出s…
1.oracle 中rowid和rownum的区别 oracle 数据库中,每一行都有一个唯一行的标识符,ROWID,数据库内部用来存储行的物理位置.ROWID是一个18位数字,采用base-64编码.用desc table的时候,rowid不显示,所以rowid通常称为伪列. rownum 通常返回每一行在结果集中的行号. 2.理解空值 数据库中空值,标识该列的值是未知的. 通常用IS NULL 来检查空值,区分空值和空的字符串,通常用函数NVL(). 3.SQL中的like操作符 通常要匹配…
Oracle表之间的连接分为三种: 1.内连接(自然连接) 2.外连接 2.1.左外连接(左边的表不加限制,查询出全部满足条件的结果) 2.2.右外连接(右边的表不加限制,查询出全部满足条件的结果) 2.3.全外连接(左右两边表均不加限制) 3.自连接(同一张表内的连接) SQL的标准写法: select table1.column,table2.column from table1 [inner|left|right|full] join table2 on table1.column1 =…
创建用户 概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用. create user 用户名 identified by 密码; (oracle有个毛病,密码必须以字母开头,如果不以字母开头,它不会创建用户) 给用户修改密码 概述:如果给自己修改密码可以直接使用 password 用户名 如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限 SQL> alter user 用户名 identifie…
目录:一.视图的定义: 二.视图的作用: 三.创建视图: 1.权限 2.语法 3.1  创建简单视图   3.2  创建连接视图  3.2.1 连接视图定义  3.2.2 创建连接视图  3.2.3 连接视图上的DML操作  3.2.4 键值保存表  3.2.5 连接视图的更新准则  3.2.6 可更新连接视图 3.3 创建复杂视图 3.4 强制创建视图 四 更改视图 4.1 更改视图的定义 4.2 视图的重新编译 五.删除视图 六.查看视图 七. 在视图上执行DML操作的步骤和原理 7.1 查…
Oracle数据库基本操作 1.概述 Oracle数据库客户端一般需要安装在服务器上,可以在服务器端操作,一般我们可以用sql developer工具远程连接到数据库,先行建立数据库,然后对表进行增删改查.也可以使用MyEclispse的DB Broswer工具进行连接数据库并进行简单的增删改查. 2.SQL语句 Data Definition Language(DDL): 主要用于建立.修改.删除数据库对象(表),不需要事务的参与 CREATE:创建表 CREATE TABLE emp( id…
多表查询概念: 所谓多表查询,又称表联合查询,即一条语句涉及到的表有多张,数据通过特定的连接进行联合显示. 基本语法: select column_name,.... from table1,table2 条件.... select dept_id,name from s_emp,s_dept s_emp s_dept last_name   dept_id id      name zhangsan 41 41      est lisi           42 42     develop…
今天我们介绍Oracle数据库中剩余的查询方法,今天的查询方法会比昨天的更为复杂一些(PS:我也是个初学者,请见谅..). 一.分组函数 分组函数是为了区分同一个表中的不同数据而建立,其关键字为GROUP BY,其中可以包含任意数目的列. 举例: SELECT DEPTNO.MAX(SAL)FROM EMP GROUP BY DEPTNO; 特别注意一旦用GROUP 分组后,前后的数值要保持一致,也就是说GROUP BY 是以DEPTNO为依据进行分组的话,SELECT 后面也必须有DEPTNO…
Oracle内建数据类型 一. 字符数据 1. char(size) 2. varchar2(size) 最常用,最大长度4000字节 3. nvhar(size).nvarchar(size) 4. varchar(size) 5. long  建议使用LOB大型数据 6. raw 存储二进制,建议使用LOB大型数据 二. 数字 1. number(p,s) 三. 日期 1. data 2. timestamp 3. timestamp with time zone 4. timestamp…