zoukankan      html  css  js  c++  java
  • 编程学习记录13:Oracle数据库,表的查询

      表达查询是数据库中最常用的操作,最基本的语句为 SELECT <列名、值、函数> FROM <表名>

      当在 SELECT 后使用 * 即表示所查询表中的所有列,如SELECT * FROM emp 就会查出emp表中的所有数据

      如果不想要输出所有列,需要在 SELECT 后面加上想要获得的列名,如 SELECT ename, eno FROM emp 就会查出emp表中所有数据的ename值和eno值

      如果不想输出所行,需要在表名后加上 WHERE <条件>  ,如 SELECT * FROM emp WHERE eno < 50 就会输出eno小于50的所有数据

       

      有时候我们可能需要同时查询多个表中的数据,这时候就需要用到表的连接

      表的连接可以分为以下几种:

      1、笛卡尔积:没有连接条件,是多个表中数据所有可能组合的集合

        SELECT * FROM emp e, dept d

      2、内连接:通过标间相同的字段来进行连接,如可以通过部门编号把员工信息与部门信息连接起来

        SELECT * FROM emp e, dept d WHERE e.deptno = d.deptno

      3、外连接:也是通过相同的字段来连接,但会输出不满足连接条件的数据,如查看考试成绩信息但有些人没有参加考试

        SELECT * FROM emp e LEFT JOIN(左外链接,右外连接为RIGHT JOIN) dept d ON e.deptno = d.deptno

      4、自连接:本表与本表进行连接

        SELECT * FROM emp e1, emp e2 WHERE e1.deptno = e2.deptno

      5、自然连接:不同表中相同列名的数据进行等值连接

      有些时候我们可能要用到其他表中的一些值作为条件,就需要用到子查询

      SELECT * FROM emp WHERE e.deptno = (SELECT deptno FROM dept WHERE dname='财务部')

      就可以查到所有财务部的员工信息类

      当我们需要统计一些数据时,如总分、平均分、成绩,就需要用到 聚合函数 和 GROUP BY

      SELECT deptno, avg(sal) FROM emp GROUP BY deptno

      可以查询到每个部门的平均工资

      当需要在条件中使用聚合函数时,需要用到 HAVING 而不是 WHERE

      SELECT deptno FROM emp GROUP BY deptno HAVING avg(sal) > 3000

      可以查询到评价工资大于3000的部门编号

      当我们需要进行分页查询时,就需要对数据进行排列和截取

      ORDER BY <列名> [ASC | DESC] 可以根据列进行升序(ASC 默认)和降序(DESC)排序,如果GROUP BY 后有多个列名,那会从左到右依次排序,如 ORDER BY score DESC, id 就会先根据score降序,如果 score 有相同数值再根据 id 在score相同的情况下升序

      如果要进行分页截取,那么就得先获得列的列数,可以用 ROWNUM 来获得

      SELECT ROWNUM, ename FROM emp

      

  • 相关阅读:
    Hive实现wordCount
    java.lang.RuntimeException: HRegionServer Aborted
    kafka基础知识
    PyCharm安装及使用
    SQLite基础-2.PyCharm+Database_Navigator
    SQLite基础-1.SQL简介
    Sublime Text 3 注册激活码
    windows下安装Python虚拟环境virtualenvwrapper-win
    windows下命令行利器---Cmder(安装,中文乱码,配置右键菜单)
    安装python
  • 原文地址:https://www.cnblogs.com/HMTT-RIN/p/11250770.html
Copyright © 2011-2022 走看看