zoukankan      html  css  js  c++  java
  • oracle数据库学习笔记(三)

    1.排序问题
    默认排序规则:按照物理存储的顺序。
    指定排序规则:order by关键字
    位置:放到select查询语句的最后面。
    语法:select..from...order by 字段 排序规则;
    字段用来声明根据哪个字段进行排序。
    排序规则:
    1)升序排列 从小到大 asc
    2)降序排列 从大到小 desc
    例如:查询所有员工的id、salary
    要求按照工资的降序排列?
    select id,salary
    from s_emp
    order by salary desc;

    指定多个排序规则:
    语法:select..
    from...
    order by 字段1 排序规则1,
    字段2 排序规则2......;
    例如:查询所有员工的id、salary
    按照工资的降序和id的升序排列?
    select id,salary
    from s_emp
    order by salary desc,id asc;

    空值的处理:
    commission_pct --提成
    在排序时,空值视为无限大。
    在降序排列中,空值排在最前面。
    在升序排列中,空值排在最后面。

    2.限定性查询/条件查询
    在查询时指定查询条件,
    用来筛除掉一部分不需要的数据。
    关键字:where
    位置:放到from子句后面。
    select ... from ... where .... order by ...;
    语法:select..from..where 判断条件;

    1)等值判断和不等值判断
    字段值等于或不等于某个特定的值。
    例如:
    查询41号部门的员工信息?
    字段:dept_id
    select id,last_name,dept_id
    from s_emp
    where dept_id = 41;

    如何表示不等于
    三种写法:
    写法一:!=
    写法二:^=
    写法三:<>

    空值的处理:
    为空:is null
    不为空:is not null
    例如:
    查询所有不拿提成的员工信息?
    select id,last_name,salary
    from s_emp
    where commission_pct is null;

    查询所有拿提成的员工信息?
    select ...
    from ..
    where commission_pct is not null;

    2)范围判断
    大于 >
    小于 <
    大于等于 >=
    小于等于 <=

    例如:
    查询所有工资高于1100元的员工信息?
    select id,last_name,salary
    from s_emp
    where salary > 1100;

    查询所有工资不低于1100元的员工信息?
    select id,last_name,salary
    from s_emp
    where salary >= 1100;

    3)条件并列
    a)逻辑与 and
    使用and连接的所有条件必须同时满足
    则该条数据才会被查询出来。
    b)逻辑或 or
    使用or连接的所有条件只需要满足其中之一,
    这条数据就会被查询出来。

    例如:
    查询41号部门工资大于1400元的员工信息?
    select id,last_name,dept_id
    from s_emp
    where dept_id = 41 and salary>1400;

    查询所有41、42号部门的员工信息?
    select id,last_name,dept_id
    from s_emp
    where dept_id = 41 or dept_id = 42;

    查询工资高于1400元的,并且工作在41或42部门的
    员工信息?
    select id,last_name,salary
    from s_emp
    where salary>1400
    and (dept_id = 41 or dept_id = 42);

    优先级问题:
    and的优先级要高于or。

    4)逻辑比较符
    用来简化条件并列
    between 从给定的最小值和最大值范围内取值
    语法:where 字段 between 较小值 and 较大值;
    where salary between 1000 and 1500;
    等同于:
    where salary >= 1000 and salary <=1500;
    注意:一定要把较小值写在and前,
    把较大值写在and后。

    in 从给定几个固定值中取一个
    语法:where 字段 in(值1,值2,值3.....);

    例如:
    查询1、3、5、7、9号员工的基本信息?
    select id,last_name
    from s_emp
    where id = 1 or id = 3 or id = 5
    or id = 7 or id = 9;

    select id,last_name
    from s_emp
    where id in(1,3,5,7,9);

    查询工资不在1000-1500范围内的员工信息?
    select id,last_name
    from s_emp
    where salary not between 1000 and 1500;

    查询41、42号部门以外的员工信息?
    select ...
    from ...
    where dept_id!=41 and dept_id!=42;

    select ..
    from ...
    where dept_id not in(41,42);

    3.模糊查询/关键字查询
    语法:where 字段 like 模糊值;

    通配符:
    1)% 百分号代表任意数量任意字符
    可以没有 可以有一个 可以有多个
    2)_ 下划线代表一个任意字符。--占位符
    必须有且只有一个字符。

    例如:查询所有last_name中包含'n'的员工信息?
    select id,last_name
    from s_emp
    where last_name like '%n%';

    转义字符:
    先插入一条数据:
    insert into s_emp(id,last_name)
    values(999,'_briup');
    commit;

    例如:
    查询所有名字以'_'开头的员工信息?
    select id,last_name
    from s_emp
    where last_name like '/_%' escape '/';

    转义的步骤:
    1)在要转义的字符前面加一个标识。
    标识可以是任意字符。
    like 'a_%';
    2)使用escape声明哪个字符是标识字符
    like 'a_%' escape 'a';

     

     

  • 相关阅读:
    每日一题_191118
    每日一题_191117
    每日一题_191116
    每日一题_191115
    每日一题_191114
    每日一题_191113
    每日一题_191112
    每日一题_191111
    每日一题_191110
    一道抛物线自编题的思考
  • 原文地址:https://www.cnblogs.com/DennySmith/p/12153549.html
Copyright © 2011-2022 走看看