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

《Oracle Database 11g SQL 开发指南》学习笔记——第二章

1、DBA可以修改日期的默认显示格式:通过参数NLS_DATE_FORMAT的修改实现。

2、Oracle数据库中每一行都有一个唯一的行标识符rowid,用来存储行的物理位置。;另一个伪列是ROWNUM,返回每一行在结果集中的行号。

3、dual表,只包含一行varchar2类型,值为x。在计算算术运算或日期时很有用。如SELECT 2*4 FROM DUAL;select TO_DATE('02-AUG-2012') - 3 FROM DUAL;

4、可用DESCRIBE简写为DESC查询表结构。如DESC  dual;

5、如果在别名中使用了空格或者想保持别名文本的大小写形式就必须用“”将别名文本引用起来:SELECT PRICE*2 "douBELE price" FEOM PRODUCTS;别名之前也可使用AS

6、连接操作符 || 。禁止显示重复行DESTINCT

7、理解控制(NULL)它不是一个空字符串而是一个特殊的值。使用NVL()函数,它接受两个参数:若第一个参数的值为空值就将其替换成为第二个值。

8、SQL 操作符:IS NAN 意思是“非数字”匹配NAN这个特殊值;IS INFINITE 匹配无穷的BINARY_FLOAT和BINARY_DOUBLE值。

9、“_”和“%”分别匹配指定位置的一个字符和从指定位置开始的任意个字符。

10、***如果列表中有一个值为空值,那么NOT IN就返回FALSE。如:select * FROM TABLE WHERE ID NOT IN (NULL);就不会返回任何行。注意使用NVL() 函数进行控制。

11、在ORDER BY 子句中可以根据列的次序指定对那一列进行排序。如SELECT ID,NAME FROM TABLE ORDER BY 1;

12、笛卡尔积:多表查询中不指定连接条件,导致将一个表中的所有行都连接到另外一个表中所有行上。

13、连接条件和连接类型:等连接、不等连接、内连接、外连接、自连接

        不等连接很少碰到,一般用BETWEEN操作符。外连接符号:(+)通常将其放在想检索的行中包含空值的列相反的一边。

        左外连接中,放在等于操作符右边;WHERE TABLE1.COLUMN1  = TABLE2.COLUMN2 (+);右外连接中,放在等于操作符左边 WHERE TABLE1.COLUMN1  (+)= TABLE2.COLUMN2 ;。

外连接限制:不能同时用两个外连接;不能同时使用外连接和IN操作符,不能同时使用外连接和OR操作符连接。

14、使用SQL/92语法执行连接(区别以上SQL/86标准)

  • SQL/92 引入了INNER JOIN 和ON 子句来执行内连接。SELECT * FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.ID = TABLE 2.ID;
  •  在查询是等连接的和列是同名的情况下可以使用USING简化连接:SELECT * FROM TABLE1 INNER JOIN TABLE2 USING(ID);注意在SELECT中要显示ID的话不能使用别名或者表名,USING子句中的列也不能使用别名或者表名。
  •  SQL/92执行多于两个表的内连接:SELECT X,X,X,X FROM A INNER JOIN B USING(X1) INNER JOIN C USING(X2) ;
  • SQL/92执行外连接:在from子句中使用LEFT  \ RIGHT \ FULL OUTER JOIN执行左、右、全外连接。
  • SQL/92执行交叉连接:如果想得到笛卡尔积就是用 CROSS JOIN