日期:2014-05-16  浏览次数:20469 次

oracle简单学习总结(四)——高级查询

一、多表联合查询

通过连接可以建立多表查询,多表查询的数据可以来自多个表,但是表之间必须有适当的连接条件。。一般N个表进行连接,需要至少N-1个连接条件,才能够正确连接

二、 相等连接

两个表具有相同意义的列,建立相等连接条件。使用相等连接进行两个表的查询时,只有连接列上在两个表中都出现且值相等的行才会出现在查询结果中。

2.1 建表:

sql:CREATE TABLE bookInfortable(id int NOT NULL primary key,pidint null,name varchar(50) NULL,publishdate date NOT NULL);

(id,pid对应bookTypetable的id所属类型,name书名,publishdate出版日期

sql:CREATE TABLEbookTypetable(idint NOT NULL primary key,type varchar(50) NOT NULL,manager varchar(50) NOT NULL,payint NOT NULL);

(id,type类型,manager 管理员,)

sql:CREATE TABLEpayGradeTable(id int NOT NULL primary key,Grade int NOT NULL,LOSAL NUMBER NOT NULL,HISAL NUMBER NOT NULL);

(id,Grade等级,LOSAL最低标准,HISAL 最高标准)


2.2 相等连接

sql:SELECT a.id,a.name,a.publishdate,a.pid,b.id,b.type,b.manager FROMbookinfortable a,booktypetable b WHERE a.pid=b.id;


说明:在FROM从句中依次列出两个表的名称,在表的每个列前需要添加表名,用“.”分隔,表示列属于不同的表。在WHERE条件中要指明进行相等连接的列。如果表名很长,可以为表起一个别名,进行简化,别名跟在表名之后,用空格分隔。(bookinfortable abookinfortable别名 a)

2.3 相等连接附加判断条件

sql:SELECT a.id,a.name,a.publishdate,a.pid,b.id,b.type,b.manager FROMbookinfortable a,booktypetable bWHEREa.pid=b.id and a.name !=