zoukankan      html  css  js  c++  java
  • 三、Oracle的简单查询

    Oracle的表查询

    前提:搞清楚scott的几张表的含义

    EMP:雇员表

    字段

    类型

    注释

    EMPNO

     

    员工编号

    ENAME

     

    员工姓名

    JOB

     

    员工职位

    MGR

     

    上级编号

    HIREDATE

     

    入职日期

    SAL

     

    薪水

    COMM

     

    奖金

    DEPTNO

     

    部门编号

    DEMP:部门表

    字段

    类型

    注释

    DEPTNO 

    NUMBER(2)

    部门编号

    DNAME 

    VARCHAR2(14)

    部门名字

    LOC 

    VARCHAR2(13)

    所处位置

    SALGRADE:工资级别表

    字段

    类型

    注释

    DEPTNO 

    NUMBER(2)

    部门编号

    DNAME 

    VARCHAR2(14)

    部门名字

    LOC 

    VARCHAR2(13)

    所处位置

    1. 查看表结构

    desc dept;

    1. 查询所有列

    select * from dept;

    1. 查询指定列

    select ename,sal,job,depno from emp;

    1. 取消重复行

    select distinct deptno from emp;

    举例:查询smith的薪水,工作和所在部门。

    select sal,job,deptno from emp where ename='smith';

    举例:

    创建一张表:

    create table users(

    userid varchar2(20),

    userName varchar2(30),

    userPass varchar2(20)

    );

    插入数据:

    insert into users values('a0001', '王二小哈哈哈哦', 'fanyong@gmail.com');

    赋值数据:把自己的数据加入到自己的表中:

    insert into users(userid, userName, userPass) select * from users;

    每次插入后数据量都是上一次的一倍,

    查询记录行数:

    select count(*) from users;

    1. 使用算数表达式,使用列的别名

    显示每个雇员的年工资

    select ename "姓名", sal*12+comm*12 "年收入" from emp;

    但是计算结果有问题,所有工资comm字段为null的记录,年收入全部为null

    1. 如何计算null值?

    使用nvl函数来判断是不是空值

    select ename "雇员", sal*12 + nvl(comm, 0)*12 "年收入" from emp;

    1. 使用where子句

    如何显示工资高于3000的员工:

    select ename,sal from emp where sal>3000;

    如何查找1982年1月2号以后入职的员工

    select ename, hiredate from emp where hiredate>'2-1月-1982';

    如何显示工资在2000到2500之间的员工

    select ename, sal from emp where sal>2000 and sal<2500;

    1. 在where中使用in

    如何显示员工编号是101或者220或者340的员工

    select * from emp empno in (101,220,340);

    1. 使用like操作符

    % : 表示任意0到多个字符

    _ : 表示任意1个字符

    如何显示首字母为S的员工姓名和工资

    select ename, sal from emp where ename like 'S%';

    如何显示第三个字符为大写O的所有员工的姓名和工资

    select ename, sal from emp where ename like '__O%';

    1. 使用is null , is not null 操作符

    如何显示没有上级雇员的信息

    select ename from emp where mgr is null;

    1. 使用逻辑操作符号

    查询工资高于500或者是岗位为Manager的雇员,同时还要满足他们姓名的首字母为大写字母J

    select * from emp where (sal>500 or job='Manager') and ename like 'J%';

    1. 使用order by子句排序

    如何按照工资从低到高的顺序显示雇员信息

    select * from emp order by sal asc;

    如何按照部门号升序而雇员的工资降序排列

    select * from emp order by deptno asc, sal desc;

    1. 使用列的别名排序

    select * from emp where (sal+nvl(comm,0))*12 "年薪" from emp order by "年薪";

    1. 分页查询

    先学子查询!

  • 相关阅读:
    Database mirroring connection error 4 'An error occurred while receiving data: '10054(An existing connection was forcibly closed by the remote host.)
    [转载]——Automatic Tuning of Undo_retention Causes Space Problems (文档 ID 420525.1)
    [转载]——Full UNDO Tablespace In 10gR2 and above (文档 ID 413732.1)
    SQL Server Agent作业执行CmdExec(bat)命令报权限问题
    SQL Server有意思的数据类型隐式转换问题
    pymssql的Connection相关特性浅析
    pymssql默认关闭自动模式开启事务行为浅析
    Azure上MySQL的离线备份:将备份拷贝到Azure Blob上
    crontab中部署Python脚本注意事项
    TypeError: expected string or bytes-like object
  • 原文地址:https://www.cnblogs.com/fanyong/p/2888227.html
Copyright © 2011-2022 走看看