数据库(Oracle),你至少需要知道这些

来源:互联网 发布:gb1229厚度 javascript 编辑:程序博客网 时间:2024/05/05 09:13

本文以基本概念为主,每个概念都可以单独聊很久

NULL概念

NULL表示不可用,未赋值,不知道,不适用,最重要的,它既不是0也不是空格
进行程序开发的初期,对数据库概念中最先要了解清楚的就是NULL。

起个别名

刚进行数据库学习要养成一个好习惯,就是善于起别名。类似下面:

SELECT last_name AS name,commission_pct commFROM employees;

其中的name和comm就是别名。这有助于SQL的阅读和操作。

Oracle数据类型的显式转换函数

数据类型显式转换

这是在数据库开发过程中最经常用到的单行函数。
TO_CHAR()函数

  • 可以进行从数字到字符串的转换
  • 对数字(金钱)进行格式化操作
  • 对日期进行按需提取(TO_CHAR(SYSDATE,’YYYY’))
    NVL函数是实际开发中非常常用的单行函数,包括其增强版NVL2。

多表关联查询

Oracle中比较特别的是它的外连接。

SELECT table1.column,table.columnFROM table1,table2WHERE table1.column(+)=table2.column;

上边实例为左外连接,所以注意外连接使用的是‘+’号。

分组计算函数

常用的分组函数如下:

  • SUM
  • AVG
  • COUNT
  • MAX
  • MIN

不常用的分组计算函数有两个:

  • STDDEV (求标准差)
  • VARIANCE(求方差)

通常分组函数跟着GROUP BY,使用GROUP BY语句很重要的一个注意事项:SELECT查询语句中同时选择分组计算函数表达式和其他独立字段时,其他字段必须出现在GROUP BY语句中,否则不合法。 翻译成人话就是,SELECT后除了分组函数外的字段,要在GROUP BY后边。

集合操作

并集,交集,差集是大部分人初中就很熟悉的概念。这里提醒一点,进行集合操作时合并的字段必须一致,否则无法进行集合操作。

  • UNION
  • UNION ALL
  • INTERSECT
  • MIMUS

GROUP BY

GROUP BY简单用法不用赘述,说几个增强版用法。

  • GROUP BY ROLLUP
  • GROUP BY CUBE
  • GROUPING
  • GROUPING SETS

具体每个该怎么用,留到后边单独来讲。可以回想这些有什么区别及它们的用法。

子查询

子查询可以使用在SELECT、FROM、WHERE等中,非常灵活。可以想想自己的SQL中是不是经常使用。

EXISTS与NOT EXISTS操作在处理‘存在’关系时非常常用和好用,而且效率会高一些。

在一些DML语句中也可以插入子查询,比如UPDATE、DELETE等。

WITH语句会让子查询看上去更加有逻辑,当多次使用一张表时,不用反复查询,使SQL得以简化,并且会提高数据库的性能。

递归查询

关键字CONNECT BY PRIOR,递归查询主要用在表中存在‘上下级’关系。可以查询‘树’关系。并且配合LEVEL可以显示其层级数,配合LPAD可以显示‘树’状层次。

分组排序

通常分组排序使用GROUP BY与ORDER BY的配合。这里介绍另外三种:

  • RANK() OVER(PARTITION BY … ORDER BY …)
  • DENSE_RANK() OVER(PARTITION BY … ORDER BY …)
  • ROW_NUMBER() OVER(PARTITION BY … ORDER BY …)
    通过这三个函数基本可以应付大部分排序。

以上为数据库(偏Oracle)中基本要掌握的知识点,后续会详细的解释有意思的数据库用法。

0 0