Oracle数据库入门

 

日期:2019/5/16

内容:Oracle 11g Express;

 

TODO-LIST:

  • 索引操作

一、基本操作

  • 建表

  • 修改列属性

    把NUMBER(38)改为NUMBER(3)

  • 显示用户scott所有的表

  • 显示表内容

二、入门操作

  • 定义外码

  • 修改记录

三、修改操作

基本格式:UPDATE <table> set <col>=<value> [where condition]

  • 把"sinkinben"的COMM修改为ALLEN的COMM

  • 把"sinkinben"的(SAL, COMM, DEPTNO)修改为ALLEN的(SAL, COMM, DEPTNO)

    解法1:

    解法2:

四、查询操作

  • 求出生日期

  • 大小写输出

  • 指定列的别名

  • 去重(即Π操作)

  • 条件查询

    s

  • 排序(默认升序)

    (先sdept降序,sdept同则sage升序)

五、函数操作

  • 查询学生总人数

  • 查询选了课的人数(需要去重)

  • 计算3号课程的平均分

  • 查询3号课程最高分

  • 查询201215121的选课的总学分

    先看看201215121选了课的信息

    总学分

六、分组Group By

  • 查询各个课程的选课人数

  • 查询选修>=2门课的学号

七、Scott账户练习题

 

  • 计算COMM为null/not null的人数

  • 每种职业的平均工资

  • 平均工资>=2000的职业

  • 找出research部门的empno和ename

    where加上条件dept.dname = "RESEARCH"

    join解法

  • 找各人的上司(MGR的name)

    join解法

  • 连接示例

    内连接:不保留任何悬浮元组。(不写left,right,full,inner则默认是inner)

    外连接:分为left,right,full

    左外连接

    右外连接

  • 嵌套查询示例

    查找RESEARCH部门的ename

    工资最高的ename

  • 计算每个人一年的工资(包括月薪*12和佣金comm)

    一种错误解法:某些人的comm为null,任何分量+null结果恒为null

    解决办法:当comm为null则12*sal+0。

    NVL(X,Y)函数:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

  • 找SAL前三
    • 错误解法1

    select sal from emp where rownum between 1 and 3 order by desc;

    错误原因:此语句先选出前3行再排序

    • 半正确解法:先排序,再选前3,利用select子句

      在最大值5000有多个的情况下,需要在第2行加distinct

    • 完全正确解法:添加一个SAL=5000的记录,找SAL前三的ENAME

  • 找SAL第二的ENAME

基本配置

  • 调整显示宽度

  • 修改为全英文环境

    ALTER SESSION SET NLS_LANGUAGE=american;

  • 显示数据库实例名字

    select INSTANCE_NAME from v$instance;

原文地址:https://www.cnblogs.com/sinkinben/p/10908116.html