查询列Oracle基础——第六章 查询

每日一贴,今天的内容关键字为查询列

    

本章标目

    单表查询

    算术运算

    NULL

    较比运算符

    逻辑运算符

    ORDER BY子句

    应用SQL运算符

    多表查询

    结联件条和结联类型

    结联查询应用SQL/92法语

     

    

行的标识符

    1.        行的标识符

    a)        在Oracle数据库中的每一行都有一个一唯的行标识符,它用于Oracle数据库部内存储行的物理位置。

    b)        例如,查看customer表的信息

    SELECT ROWID, customer_id

    FROM customers;

    c)        查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第1张图片

    d)        须要注意的是ROWID不并涌现在表的义定中

    e)        例如,可以应用DESCRIBE命令查看customer表的信息

    DESCRIBE customers

    f)         执行效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第2张图片

     

    2.       ROWNUM

    a)       ROWNUM可以返回结果集的行号,查询返回的第一行编号为1,第二行编号为2,依此类推

    b)        例如,查询customer表的相干信息

    SELECT ROWNUM, customer_id, first_name, last_name

    FROM customers;

    c)        查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第3张图片

    d)        可以将ROWNUM应用在WHERE子句中

    e)        例如

    SELECT ROWNUM, customer_id, first_name, last_name

    FROM customers

    WHERE customer_id = 3;

    f)         查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第4张图片

    3.        数据完整性-2

    a)        实体完整性

    b)        域完整性

    c)        用引完整性

    d)        自义定完整性

    4.        实体完整性

    a)        实体完整性

    实体完整性求要个一每表中的主键字段都不能为空或者复重的值。

    b)        实现法方

                            i.              一唯束约

                          ii.              主键束约

    5.        域完整性

    a)        域完整性

    域完整性指列的值域的完整性。如数据类型、格式、值域范围、是不是许允空值等

    b)        实现法方

                            i.              制限数据类型

                          ii.              键外束约

                        iii.              认默值

                         iv.              非空束约

    6.        用引完整性

    a)        用引完整性

                            i.              也称之为参照完整性,当更新、删除、插入一个表中的数据时,通过参照用引互相干联的另一个表中的数据,来检查对表的数据操纵是不是准确。

                          ii.              用引完整性求要关系中不许允用引不存在的实体。

                        iii.              用引完整性与实体完整性是关系模型必须满意的完整性束约件条。

    b)        实现法方

    键外束约

    7.        自义定完整性

    a)        自义定完整性

    户用自义定完整性指针对某一详细关系数据库的束约件条,它反应某一详细应用所及涉的数据必须满意的义语求要。

    b)        实现法方

                            i.              存储过程

                          ii.              触发器

    8.        选择主键的准则

    a)        少最性

    尽量选择单个键作为主键

    b)        稳定性

    尽量选择值数更新少的列作为主键

    9.        主键外关系

    a)        注意事项

                            i.              当主表中没有对应的记载时,不能将记载添加到子表

                          ii.              不能改更主表中的值而致导子表中的记载立孤

                        iii.              子表存在与主表对应的记载,不能从主表中删除该记载

                         iv.              删除主表前,先删子表

    10.    表束约

    a)        表束约的目标:保确表中数据的完整性

    b)        经常使用的束约类型:

                            i.              主键束约(PRIMARY KEY):求要主键列数据一唯,并且不许允为空

                          ii.              非空束约(NOT NULL):指定的列的值不许允为空

                        iii.              一唯键束约(UNIQUE):求要该列一唯,许允为空,但只能涌现一个空值

                         iv.              检查束约(CHECK):指定表中一列或多列可以接受的数据值格式

                           v.              认默束约(DEFAULT):指定某列的认默值

                         vi.              键外束约(FOREIGN KEY):用于建立和增强两个表数据之间接连的一列或多列。通过将表中的主键列添加到另一个表中。可以建创两个表之间的接连。这个主键的列就称为第二个表的键外。键外束约以可就保确添加到键外表中的任何行都在主表中都存在应相的行

    

日期算计

    1.        日期算计

    a)        可以在日期上应用加法或减法运算符,加减操纵的字数示表天数

    b)        例如,在日期上加3

    SELECT TO_DATE('16-5-2012')+3

    FROM dual;

    c)        在某日期上减3

    SELECT TO_DATE('16-5-2012')-3

    FROM dual;

    d)        执行效果如右图所示:

     

    查询列Oracle基础——第六章 查询_第5张图片

    

dual表

    1.       dual

    a)       dual表经常使用在没有查询标目标SELECT语句块中,它只包括一行数据

    b)        可以应用DESCRIBE查看dual表结构

    DESCRIBE dual

    c)        查询dual表的数据

    SELECT *

    FROM dual;

    d)        执行效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第6张图片

     

    2.        列的别名

    a)        平日情况,当数据行从表中查询出来时,Oracle会将列名转换为大写,并表现在数据上方

    b)        如果查询语句中有表达式时,表达式的名称将会表现在各位值,可认为其供给别名;别名可以应用双引号,也可以在别名前加AS关键字

    c)        例如

    SELECT price * 2 AS "DOUBLE_PRICE"

    FROM products;

    d)        查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第7张图片

     

    

单表查询

    1.        接连

    a)        可以将一些列接连起来表现,接连应用||运算符

    b)        例如,查询customer表的first_name列和last_name

    c)       SELECT first_name || ' ' || last_name AS "Customer Name"

    d)       FROM customers;

    e)        查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第8张图片

    2.       NULL

    a)       NULL值示表未知的值。它是一个殊特的值,但不并是空字符串,NULL值示表该列是未知的。

    b)        当某些查询语句在出输结果列上看不到值的时候,可能就是NULL

    c)        例如

    SELECT customer_id, first_name, last_name, dob

    FROM customers

    WHERE dob IS NULL;

    d)        查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第9张图片

    3.        处置NULL

    a)       NULL值被查询出来的时候没有表现信息,如何告诉户用这是空字符串还是NULL,这可以通过NVL()函数来行进处置

    b)        例如

    SELECT customer_id, first_name, last_name,

      NVL(phone, 'Unknown phone number') AS PHONE_NUMBER

    FROM customers;

    c)        查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第10张图片

    4.       DISTINCT关键字

    a)        在SELECT语句中,可以应用DISTINCT关键字删除复重的行

    b)        例如,查询purchases表中,删除复重的customer_id

    SELECT DISTINCT customer_id

    FROM purchases;

    c)        查询结果如下图所示:

     

    查询列Oracle基础——第六章 查询_第11张图片

    5.        较比运算符

    a)        较比运算符

                            i.              =:即是

                          ii.              <>!=:不即是

                        iii.              <:小于

                         iv.              >:大于

                           v.              <=:小于或即是

                         vi.              >=:大于或即是

                       vii.              ANY:较比值列表中的任何一个值

                     viii.              ALL:较比列表值中的有所值

    b)       <>运算符

                            i.              例如,查询customer_id不即是2的户客信息

    SELECT *

    FROM customers

    WHERE customer_id <> 2;

                          ii.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第12张图片

    c)       >运算符

                            i.              例如,查询商品编号大于8的商品

    SELECT product_id, name

    FROM products

    WHERE product_id > 8;

                          ii.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第13张图片

    d)       <=运算符

                            i.              例如,查询ROWNUM伪列小于即是3,即查询前3件商品信息

    SELECT ROWNUM, product_id, name

    FROM products

    WHERE ROWNUM <= 3;

                          ii.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第14张图片

    e)       ANY运算符

                            i.              在WHERE子句中应用ANY运算符与列表中的意任值行进较比

                          ii.              必须在应用ANY运算符之前应用= ,  <> ,  < ,  > ,  <= ,  >=运算符

                        iii.              例如,查询customer表,customer_id值只要大于列表(234)中的意任一个值即满意件条

    SELECT *

    FROM customers

    WHERE customer_id > ANY (2, 3, 4);

                         iv.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第15张图片

    f)        ALL运算符

                            i.              在WHERE子句中应用ALL运算符与值列表中的有所值行进较比

                          ii.              例如,查询customer

    SELECT *

    FROM customers

    WHERE customer_id > ALL (2, 3, 4);

                        iii.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第16张图片

    6.       SQL运算符

    a)       SQL运算符可以行进模式匹配,像字符串、列表值、NULL值。

                            i.              LIKE:匹配字符串

                          ii.              IN:匹配列表值

                        iii.              BETWEEN AND:匹配范围值

                         iv.              IS NULL:匹配空值

                           v.              IS NAN:匹配非字值数

    b)        样同可以在上述运算符前加NOT取反

                            i.              如:NOT LIKE ,NOT BETWEEN,IS NOT NULL,IS NOT NAN

    c)       LIKE运算符

                            i.              可以在WHERE子句中应用LIKE运算符行进字符串的匹配

                          ii.              可以应用普通字符及通配符行进组合,通配符如下:

                        iii.              下划线(_):示表匹配某个位置的字符

                         iv.              百分号(%):示表在某个位置的意任个字符

                           v.              例如,匹配’_o%’,示表第一个字母意任,第二个是o%示表最后可以是意任个字母

                         vi.              SELECT *

                       vii.              FROM customers

                     viii.              WHERE first_name LIKE '_o%';

                         ix.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第17张图片

    d)        转义字符

                            i.              如果要查询实际的下划线或百分号就须要应用ESCAPE选项区分通配符

                          ii.              ESCAPE选项告诉数据库如何区分通配符和要匹配的字符,可以应用反斜杠(\),例如,

    SELECT name

    FROM promotions

    WHERE name LIKE '%\%%' ESCAPE '\';

                        iii.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第18张图片

    e)       IN运算符

                            i.              在WHERE子句中可以应用IN筛选某列的值是不是在列表中

                          ii.              例如,查询customers表,检查customer_id是不是在235

    SELECT *

    FROM customers

    WHERE customer_id IN (2, 3, 5);

                        iii.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第19张图片

    f)        BETWEEN运算符

                            i.              在WHERE子句中可以应用BETWEEN检查某列的值是不是在一个指定的范围内。包括区间两端的值。

                          ii.              例如,查询customerscustomer_id13之间的户客

    SELECT *

    FROM customers

    WHERE customer_id BETWEEN 1 AND 3;

                        iii.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第20张图片

    7.        逻辑运算符

    a)        逻辑运算符许允根据逻辑件条制限行

                            i.              x AND y

                          ii.              xy都必须是真时,返回真

                        iii.              x OR y

                         iv.              xy为真时,返回真

                           v.              NOT x

                         vi.              x为假时,返回真

    b)       AND运算符

                            i.              例如

                          ii.              查询customer表中dob列大于’01-1-1970’年,并且customer_id大于3的户客信息

    SELECT *

    FROM customers

    WHERE dob > '01-1-1970'

    AND customer_id > 3;

                        iii.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第21张图片

    c)       OR运算符

                            i.              例如

                          ii.              查询customer表中dob列大于’01-1-1970’年,或者customer_id大于3的户客信息

    SELECT *

    FROM customers

    WHERE dob > '01-1-1970'

    OR customer_id > 3;

                        iii.              查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第22张图片

    8.       ORDER BY

    a)        可以应用ORDER BY对查询的结果行进排序,可以对一列或多列行进排序,ORDER BY必须在FROM子句后或WHERE子句后(如果有WHERE子句)

    b)        例如,查询customer表,并对last_name列行进排序

    SELECT *

    FROM customers

    ORDER BY last_name;

    c)        查询结果如下所示:

     

    查询列Oracle基础——第六章 查询_第23张图片

    d)        认默情况下,ORDER BY是按照升序(ASC)排序,也可以应用DESC指定为降序排序

    e)        例如,查询customers表,先按first_name升序排列,再按last_name降序排列

    SELECT *

    FROM customers

    ORDER BY first_name ASC, last_name DESC;

    f)         查询结果如下所示:

     

    查询列Oracle基础——第六章 查询_第24张图片

    g)        样同可以是列的位置编号,指定哪列须要行进排序

    h)        例如,查询customer表,要对查询的第2first_name列行进降序排列

    SELECT customer_id, first_name, last_name

    FROM customers

    ORDER BY 2 DESC;

    i)          查询结果如下所示:

     

    查询列Oracle基础——第六章 查询_第25张图片

    

多表查询

    1.        多表查询

    a)        不同的数据存储在不同的表中,平日要查询多张表才能找到须要的数据

                            i.              例如,要查询product_id3的商品类型,须要两步骤

                          ii.              从products表查询出product_id3的商品的product_type_id类型

                        iii.              根据上一步骤查询出的product_type_id查询出product_types

    每日一道理
“一年之计在于春”,十几岁的年纪,正是人生的春天,别辜负了岁月老人的厚爱与恩赐。行动起来,播种梦想吧!

                         iv.              查询顺序如图所示:

     

    查询列Oracle基础——第六章 查询_第26张图片

    b)        结联两张表的查询可以在FROM后面加两张表,然后再指定两张表的关联关系

                            i.              首先指定查询的两张表,如下

                          ii.              FROM products, product_types

                        iii.              再通过WHERE件条指定两表的关系

                         iv.              WHERE products.product_type_id = product_types.product_type_id

                           v.              AND products.product_id = 3;

                         vi.              说明

                       vii.              平日情况下,是一个表的主键与另外一个表的键外相匹配;再指定产品的编号为3,即products.product_id = 3

    c)        两表查询语句如下

    SELECT products.name, product_types.name

    FROM products, product_types

    WHERE products.product_type_id = product_types.product_type_id

    AND products.product_id = 3;

    查询结果如下图所示:

     

    查询列Oracle基础——第六章 查询_第27张图片

    2.        表的别名

    a)       products表和product_types表相干字段会用在SELECT语句及WHERE子句上,可以给表起别名,提高代码可读性、降低书写难度

    b)        例如,改写查询语句

    SELECT p.name, pt.name

    FROM products p, product_types pt

    WHERE p.product_type_id = pt.product_type_id

    AND p.product_id = 3

    ORDER BY p.name;

    c)        查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第28张图片

    3.        笛卡尔乘积

    a)        如果查询两张表,并且没有义定结联件条,那么查询的结果集是两表相乘的结果,这样的情况称之为笛卡尔乘积

    b)        笛卡尔乘积会产生很多行结果。比如,第一张表的行数为50行,第二张表为100行,那么笛卡尔乘积产生的结果为5000行。因为第一张表的每条记载会对应第二张表的100条记载,即50*100=5000

    c)        例如

    SELECT pt.product_type_id, p.product_id

    FROM product_types pt, products p;

    d)        查询效果如下图所示:

     

    查询列Oracle基础——第六章 查询_第29张图片

    4.        多表查询

    a)        多表查询,须要查询的信息包括

                            i.              购买商品信息(在purchases中)

                          ii.              顾客姓名信息(在customers表中)

                        iii.              购买的商品名称(在products表中)

                         iv.              购买的商品类型(在product_types表中)

    b)        查询语句如下

    SELECT c.first_name, c.last_name, p.name AS PRODUCT, pt.name AS TYPE

    FROM customers c, purchases pr, products p, product_types pt

    WHERE c.customer_id = pr.customer_id

    AND p.product_id = pr.product_id

    AND p.product_type_id = pt.product_type_id

    ORDER BY p.name;

    c)        总结

                            i.              多表查询WHERE时,结联次数=查询时结联表的数量-1

    

结联件条和结联类型

    1.        结联件条和结联类型

    a)        常见的有两类结联件条

                            i.              等值结联:一般应用即是号(=)操纵符

                          ii.              非等值结联:应用除了即是以外的运算符,例如,<>BETWEEN

    b)        常见的三种结联类型

                            i.              内结联

    1.        内结联返回的行只有满意结联件条才会返回。如果结联件条的列中有NULL值,那么该行则不会返回

                          ii.              外结联

    1.        外结联返回的行满意结联件条,也包括在结联件条的列包括空值的行

                        iii.              自结联

    1.        结联的表为同一张表

    c)        非等值结联

                            i.              非等值结联一般应用<>><<=>=LIKEINBETWEEN等运算符

                          ii.              非等值结联一般应用较比少

                        iii.              例如,现有工资等级表(salary_grades)

    1.        数据如下:

    查询列Oracle基础——第六章 查询_第30张图片

     

    2.        现须要查询出员工的工资等级

                         iv.              要查询出员工工资等级须要应用非等值结联,应用BETWEEN运算符

    1.       SELECT e.first_name, e.last_name, e.title, e.salary, sg.salary_grade_id

    2.       FROM employees e, salary_grades sg

    3.       WHERE e.salary BETWEEN sg.low_salary AND sg.high_salary

    4.       ORDER BY salary_grade_id;

                           v.              查询结果如下图所示:

    查询列Oracle基础——第六章 查询_第31张图片

     

    2.        外结联

    a)        外结联可以查询出即使列中包括NULL值的数据也可以查询出来

    b)        外部结联运算符 (+)。在应用(+)的字段,可能包括NULL

    c)        例如,

                            i.              SELECT p.name, pt.name

                          ii.              FROM products p, product_types pt

                        iii.              WHERE p.product_type_id = pt.product_type_id (+)

                         iv.              ORDER BY p.name;

    d)        查询结果如右图所示:

                           

    查询列Oracle基础——第六章 查询_第32张图片

    3.        外结联分类

    a)        外结联可以分为

                            i.              左外结联

                          ii.              右外结联

    b)        左外结联右外结联

                            i.              现有有以下查询语句

    1.       SELECT ...

    2.       FROM table1, table2

    3.       ...

    4.        其中table1.column1table2.column2为结联件条

                          ii.              假设1table1表包括了某行的column1列的值为NULL

    1.        左外结联的WHERE件条写作

    2.       WHERE table1.column1 = table2.column2 (+);

                        iii.              假设2table2表包括了某行的column2列的值为NULL

    1.        右外结联的WHERE件条写作

    2.       WHERE table1.column1 (+) = table2.column2;

    c)        左外结联

                            i.              例如,有查询语句如下

    1.       SELECT p.name, pt.name

    2.       FROM products p, product_types pt

    3.       WHERE p.product_type_id = pt.product_type_id (+)

    4.       ORDER BY p.name;

                          ii.              查询结果如下所示:

    查询列Oracle基础——第六章 查询_第33张图片

    

    d)        右外结联

                            i.              例如,有查询语句如下

    1.       SELECT p.name, pt.name

    2.       FROM products p, product_types pt

    3.       WHERE p.product_type_id (+) = pt.product_type_id

    4.       ORDER BY p.name;

                          ii.              查询结果如下图所示:

    查询列Oracle基础——第六章 查询_第34张图片

    

    e)        外结联的局限性

                            i.              只能一侧应用外结联运算符(+),否则将提示错误

    查询列Oracle基础——第六章 查询_第35张图片

                          ii.              不可以在应用外结联的情况下同时应用IN运算符

    查询列Oracle基础——第六章 查询_第36张图片

    4.        自结联

    a)        自结联是接连同一张表。在应用同一张表时可以给它们起不同的别名。

    b)        例如,employees表有manager_id列,manager_id列的值是该员工的上司编号,manager_id列对应employees表的employee_id列。如果员工没有上司则manager_id的值为NULL

    c)       employees表的数据如下:

     

    查询列Oracle基础——第六章 查询_第37张图片

    d)        查询如下

                            i.              SELECT w.first_name || ' ' || w.last_name || ' works for '||

    1.       m.first_name || ' ' || m.last_name

                          ii.              FROM employees w, employees m

                        iii.              WHERE w.manager_id = m.employee_id

                         iv.              ORDER BY w.first_name;

    e)        查询结果如下图所示:

     

    查询列Oracle基础——第六章 查询_第38张图片

     

    

结联查询应用SQL/92法语

    1.        结联查询应用SQL/92法语

    a)       SQL/92法语中是应用INNER JOINON来完成内结联的

    b)        例如

                            i.              SELECT p.name, pt.name

                          ii.              FROM products p INNER JOIN product_types pt

                        iii.              ON p.product_type_id = pt.product_type_id

                         iv.              ORDER BY p.name;

    c)        查询结果如右图所示:

                           

    查询列Oracle基础——第六章 查询_第39张图片

    2.        应用USING

    a)       SQL/92可以进一步简化结联件条,但有以下制限

    b)        查询必须是等值结联

    c)        结联的两张表的关联字段必须同名

    d)        例如,以下查询就应用USING替代了ON关键字

                            i.              SELECT p.name, pt.name

                          ii.              FROM products p INNER JOIN product_types pt

                        iii.              USING (product_type_id);

    e)        查询结果如右图所示:

                           

    查询列Oracle基础——第六章 查询_第40张图片

    f)        USING子句的列部分不能有限定词

    g)        例如

                            i.              SELECT p.name, pt.name, product_type_id

                          ii.              FROM products p INNER JOIN product_types pt

                        iii.              USING (product_type_id);

    h)        上述SELECT语句可以正常执行,如果给product_type_id列加了限定的表别名,则报错

                           

    查询列Oracle基础——第六章 查询_第41张图片

    i)         USING子句中的列名也不能加限定词

                           

    查询列Oracle基础——第六章 查询_第42张图片

    3.        多表查询应用SQL/92法语

    a)        应用SQL/86法语查询customerspurchasesproductsproduct_types

                            i.              SELECT c.first_name, c.last_name, p.name AS PRODUCT, pt.name AS TYPE

                          ii.              FROM customers c, purchases pr, products p, product_types pt

                        iii.              WHERE c.customer_id = pr.customer_id

                         iv.              AND p.product_id = pr.product_id

                           v.              AND p.product_type_id = pt.product_type_id

                         vi.              ORDER BY p.name;

    b)        应用SQL/92法语查询

                            i.              SELECT c.first_name, c.last_name, p.name AS PRODUCT, pt.name AS TYPE

                          ii.              FROM customers c INNER JOIN purchases pr

                        iii.              USING (customer_id)

                         iv.              INNER JOIN products p

                           v.              USING (product_id)

                         vi.              INNER JOIN product_types pt

                       vii.              USING (product_type_id)

                     viii.              ORDER BY p.name;

    4.        外结联应用SQL/92法语

    a)        之前外结联查询应用(+)运算符,这是Oracle法语

    b)       SQL/92应用的法语如下

                            i.              FROM table1 { LEFT | RIGHT | FULL } OUTER JOIN table2

    c)        说明

                            i.              table1table2是要结联查询的表

                          ii.              LEFT:表明是左外结联

                        iii.              RIGHT:表明是右外结联

                         iv.              FULL:表明是完全外结联。完全外结联会返回tabletable2中有所的行,包括结联列是NULL值的情况。

    5.        左外结联应用SQL/92法语

    a)        应用Oracle特有的(+)运算符

                            i.              SELECT p.name, pt.name

                          ii.              FROM products p, product_types pt

                        iii.              WHERE p.product_type_id = pt.product_type_id (+)

                         iv.              ORDER BY p.name;

    b)        应用SQL/92LEFT OUTER JOIN关键字

                            i.              SELECT p.name, pt.name

                          ii.              FROM products p LEFT OUTER JOIN product_types pt

                        iii.              USING (product_type_id)

                         iv.              ORDER BY p.name;

    6.        右外结联应用SQL/92法语

    a)        应用Oracle特有的(+)运算符

                            i.              SELECT p.name, pt.name

                          ii.              FROM products p, product_types pt

                        iii.              WHERE p.product_type_id (+) = pt.product_type_id

                         iv.              ORDER BY p.name;

    b)        应用SQL/92RIGHT  OUTER JOIN关键字

                            i.              SELECT p.name, pt.name

                          ii.              FROM products p RIGHT OUTER JOIN product_types pt

                        iii.              USING (product_type_id)

                         iv.              ORDER BY p.name;

    7.        完全外结联应用SQL/92法语

    a)        完全外结联返回结联的有所表的行,包括NULL

                            i.              SELECT p.name, pt.name

                          ii.              FROM products p FULL OUTER JOIN product_types pt

                        iii.              USING (product_type_id)

                         iv.              ORDER BY p.name;

    b)        查询效果如下图所示:

                           

    查询列Oracle基础——第六章 查询_第43张图片

    8.        自结联应用SQL/92法语

    a)        应用SQL/86法语

                            i.              SELECT w.last_name || ' works for ' || m.last_name

                          ii.              FROM employees w, employees m

                        iii.              WHERE w.manager_id = m.employee_id;

    1.       SQL/92法语应用INNER JOINON关键字

                         iv.              SELECT w.last_name || ' works for ' || m.last_name

                           v.              FROM employees w INNER JOIN employees m

                         vi.              ON w.manager_id = m.employee_id;

    9.        交叉结联应用SQL/92法语

    a)       SQL/92法语产生笛卡尔乘积须要应用CROSS JOIN关键字

    b)        如,查询product_types表和products

                            i.              SELECT *

                          ii.              FROM product_types CROSS JOIN products;

     

    

本章总结

    单表查询

    算术运算

    NULL

    较比运算符

    逻辑运算符

    ORDER BY子句

    应用SQL运算符

    多表查询

    结联件条和结联类型

    结联查询应用SQL/92法语

     

     

    

查询列Oracle基础——第六章 查询_第44张图片 查询列Oracle基础——第六章 查询_第45张图片 查询列Oracle基础——第六章 查询_第46张图片
@Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]

文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

你可能感兴趣的:(oracle基础)