Oracle实战二

来源:互联网 发布:c语言基本语法 编辑:程序博客网 时间:2024/06/11 02:50
    Oracle  实战二

在本次的实验课中我们需要在scott用户下面进行操作,但是该用户默认的账户是被锁住的,因此我们需要进入系统管理员的角色环境下降该用户的账户解锁。
使用如下语句:
1.alter user account lock; //锁定账户
2.alter user account unlock; //解锁账户
由于我昨天晚上没有联网,没记住该语句导致解锁失败,在该用户scott下不能进行查询操作。
现在当我们解锁该用户的时候可以知道该用户下有几张表。老师的任务就是让我们对emp表进行操作。
这里只截取一些没有见过的操作来记录简单的就pass了
用到的数据:

这里写图片描述

  1. 将职工号和职工名字中间用 ’-’ 连接起来,并输出 ‘WORKS IN DEPARTMENT’ , 部门号
    Sql: select empno || ‘-’ || ename employee, ‘WORKS IN DEPARTMENT’, deptno from scott.emp;

  2. 按部门号升序,按工资降序排序。
    Sql: select * from scott.emp order by empno,sal desc;

  3. 查询工作室MANAGER并且工资大于1500,或者工作是SALESMAN的职工信息。
    Sql: select * from scott.emp where(job =’MANAGER’ AND SAL > 1500) OR job = ‘SALESMAN’;

  4. 查询名字只有四个字符的职工信息
    Sql: select * from scott.emp where ename like ‘__’; //注意这里的字符是占位符,而且是连续的。

  5. 查询没有管理者的所有职工。
    Sql : select * from scott.emp where mgr is null ; //注意这里与 ‘ ’的区别

  6. 从emp表中查询出工资最低的员工信息。
    Sql : select * from scott.emp where sal in (select min(sal) from scott.emp);

  7. 从emp中查询出每个部门工资最低的职工信息。
    Sql : select ename ,sal deptno from scott.emp where sal in (select min(sal) from scott.emp group by deptno);

后来老师又让自己创建一张表,然后完成下列语句:
create table 成绩(sno number,km varchar2(10),score number);
自己插入8行数据完成以下查询内容,记录语句和结果
用到的数据:
这里写图片描述

1:查出每个学生的成绩的总和
2:查出没门课程的平均成绩
3:查出 平均成绩 大于 60 的 学生的 学号 和平均成绩
4:查出 平均成绩 大于 所有的 学生的 平均成绩 的学生的 学号 和平均成绩
5:查出 平均成绩 大于 60 的 学生的 学号 和平均成绩,并按学号降序排列

这里值得记录的原因是一部分语句我没写出来,使用了having 语句。然后过滤了一些条件。
这里老师给出的表不是太规范要出现比较大的冗余才能实现效果。

重点在于oracle居然允许使用中文名作为表名,所以长见识了。

  1. select sno, sum(score) from 成绩group by sno;
  2. select km,sum(score) from 成绩 group by km;
  3. select sno, avg(score) from 成绩 group by sno having avg(score) > 60; //这里我使用了where条件但是不好使,要使用having进行过滤。
  4. select sno,avg(score) from 成绩 group by sno having avg(score) > (select avg(score) from 成绩); //这里使用子查询的结果作为having条件。
  5. select sno,avg(score) from 成绩 group by sno having avg(score) > 60 order by sno desc;
    //就是在上一句的基础上进行排序。
0 0