ORACLE数据库---多表链接查询
ORACLE多表连接查询 一.概念 1.主键 PRIMARY KEY 约束唯一标识数据库表中的每条记录。 a.主键必须包含唯一的值。 b.主键列不能包含 NULL 值。 b.每个表都应该有一个主键,并且每个表只能有一个主键。 2.外键 FOREIGN KEY 一个表中的FOREIGN KEY指向另一个表中的PRIMARYKEY。 另一张表中与这张表的某个字段的类型及字段名相同的字段,一般是用作关联两张或两张以上的数据表时用的。 3.关系 外键一定是另外某个表的主键 例如: WHEREemp.deptno=dept.deptno 二.普通查询 概念:无条件的连表查询,会产生笛卡尔积 范例: SELECT * FROM emp,dept 三.内连接查询 重点 连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。 1、等值连接 在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。 语法: SELECT column_name(s) FROM table1,table2 WHERE table1.column_name=table2.column_name 说明: 在表中应存在至少一个匹配时,才会关键字返回行。 2、自连接 自己和自己的镜像进行比较,使用内连接或外连接把一个表中的行同该表中另外一些行连接起来. SELECT ta.column_name,tb.column_name FROM table1 ta,table1 tb WHERE ta.column_name1=tb.column_name2 说明: 它主要用在查询比较相同的信息。为连接同一个表,必须为该表在FROM子句中指定两个别名,这样才能在逻辑上把该表作为两个不同的表使用。 四.外连接查询 重点 概念:即在等值连接的基础上,加上被连接表的不匹配数据. 1.左连接 从左表(table1)那里返回所有的行,即使在右表(table2)中没有匹配的行。 语法: SELECT * FROM table1,table2 WHERE table1.column_name=table2.column_name(+) 2.右连接 从右表(table2)那里返回所有的行,即使在左表(table1)中没有匹配的行。 语法: SELECT * FROM table1,table2 WHERE table1.column_name(+)=table2.column_name 五.1999语法(了解) (一)内连接 1.等值连接 关键字:INNER JOIN ...ON SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name (二)外连接 2.左(外)连接 关键字:LEFT {OUTER}JOIN ...ON SELECT column_name(s) FROM table_name1 LEFT {OUTER}JOIN table_name2 ON table_name1.column_name=table_name2.column_name 3.右(外)连接 关键字:RIGHT {OUTER}JOIN ...ON SELECT column_name(s) FROM table_name1 RIGHT {OUTER}JOIN table_name2 ON table_name1.column_name=table_name2.column_name 4.交叉连接(CROSS JOIN) 产生笛卡尔积 范例: SELECT * FROMempCROSSJOINdept; 5.自然连接(NATURAL JOIN) 自动进行关联字段的匹配 范例: SELECT * FROM emp NATURALJOIN dept; (三)子句 1.USING 直接指定关联的操作列 范例: SELECT * FROMemp eJOIN dept dUSING(deptno); SELECT * FROMemp eJOIN dept dUSING(deptno)WHERE deptno=20; 2.ON 表示用户自己编写连接的条件 范例: SELECT * FROMemp e JOIN dept d ON(e.deptno=d.deptno)WHERE e.deptno=20; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- DB Smart Flash Cache in Oracle 11g
- 最全的常用正则表达式
- 11g修改listner ADR
- 正则表达式 – bash数组的前缀和后缀元素
- ios – Airplay Mirroring(iPhone到Mac),如反射或AirServer
- 控制台不可用在类库c#
- 关于postgresql的连接(linux下c)
- actionscript-3 – 所有的flash游戏都可以随时移植到adobe
- org.xml.sax.SAXParseException The content of element ty
- ajax跨域请求报错Cross origin requests are only supporte