Oracle数据库入门

时间:2021-10-08 12:24:09

 

日期:2019/5/16

内容:Oracle 11g Express;

 

TODO-LIST:

  • 索引操作

一、基本操作

  • 建表

    Oracle数据库入门

  • 修改列属性

    把NUMBER(38)改为NUMBER(3)

    Oracle数据库入门

  • 显示用户scott所有的表

    Oracle数据库入门

  • 显示表内容

    Oracle数据库入门

二、入门操作

  • 定义外码

    Oracle数据库入门

  • 修改记录

    Oracle数据库入门

三、修改操作

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

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

    Oracle数据库入门

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

    解法1:

    Oracle数据库入门

    解法2:

    Oracle数据库入门

四、查询操作

  • 求出生日期

    Oracle数据库入门

  • 大小写输出

    Oracle数据库入门

    Oracle数据库入门

  • 指定列的别名

    Oracle数据库入门

    Oracle数据库入门

  • 去重(即Π操作)

    Oracle数据库入门Oracle数据库入门

  • 条件查询

    Oracle数据库入门

    Oracle数据库入门

    Oracle数据库入门s

    Oracle数据库入门

    Oracle数据库入门

  • 排序(默认升序)

    Oracle数据库入门

    Oracle数据库入门

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

    Oracle数据库入门

五、函数操作

  • 查询学生总人数

    Oracle数据库入门

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

    Oracle数据库入门

  • 计算3号课程的平均分

    Oracle数据库入门

  • 查询3号课程最高分

    Oracle数据库入门

  • 查询201215121的选课的总学分

    先看看201215121选了课的信息

    Oracle数据库入门

    总学分

    Oracle数据库入门

六、分组Group By

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

    Oracle数据库入门

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

    Oracle数据库入门

七、Scott账户练习题

Oracle数据库入门

Oracle数据库入门

 

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

    Oracle数据库入门

  • 每种职业的平均工资

    Oracle数据库入门

  • 平均工资>=2000的职业

    Oracle数据库入门

  • 找出research部门的empno和ename

    Oracle数据库入门

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

    Oracle数据库入门

    join解法

    Oracle数据库入门

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

    Oracle数据库入门

    join解法

    Oracle数据库入门

  • 连接示例

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

    外连接:分为left,right,full

    左外连接

    Oracle数据库入门

    右外连接

    Oracle数据库入门

  • 嵌套查询示例

    查找RESEARCH部门的ename

    Oracle数据库入门

    工资最高的ename

    Oracle数据库入门

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

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

    Oracle数据库入门

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

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

    Oracle数据库入门

  • 找SAL前三
    • 错误解法1

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

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

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

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

      Oracle数据库入门

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

      Oracle数据库入门

  • 找SAL第二的ENAME

    Oracle数据库入门

基本配置

  • 调整显示宽度

    Oracle数据库入门

  • 修改为全英文环境

    ALTER SESSION SET NLS_LANGUAGE=american;

  • 显示数据库实例名字

    select INSTANCE_NAME from v$instance;