zoukankan      html  css  js  c++  java
  • Oracle 中的SELECT 关键字(查询、检索)

    1. SELECT 关键字用法:

    检索单个列:select 列名 from 表名;
    例:select ename from emp;
    检索多个列: select [列1,列2, ... ,列N] from 表名;
    例:select ename , sal from emp;
    检索所有列:select * from 表名;
    例:select * from emp;

    2. 通配符(A):

    * :代表0个或多个列
    _ : 代表单个字符
    % : 代表0个或多个字符

    使用通配符的优点:书写方便、可以检索未知列
    使用通配符的缺点:降低检索的性能

    3. 别名:(B)

    给表取别名(类似对象名): 形如:select e.ename , e.sal from emp e;
    给列取别名(用于显示):
    方式一:列名后面加空格再加别名(系统会自动转成大写显示不能有空格等特殊符号)
    如:select ename , sal*12 yearsal from emp;
    方式二:列名后加空格再加“别名” (会直接以双引号里的格式显示,一般用于别名中包含空格等特殊符号的情况)
    如:select ename , sal*12 "year sal" from emp;
    方式三:列名加空格加as加空格加别名:
    如:select ename , sal*12 as "year sal" from emp;

    4.distinct关键字(去重):(A)


    列:select distinct job from emp;
    • distinct必须放在开头(select之后)
    •多字段(多个列)–每个字段不一样才去重

    5.where关键字(过滤)

      5.1 作用:

    一般放在from关键字之后,用于过滤不需要的数据,保留有用的数据

      5.2 操作符:

    1. =,!=,<>,<,>,<=,>=,any,some,all 条件判断

    列:查询工资大于2000的员工信息

    select * from emp where sal>=2000 ;

    列:查询工资等于800或3000的员工信息

    select * from emp where sal=any(800,3000) ;

    any(或):满足其中一个条件即可

    some:和any一样

    all(与):需要满足所有条件

    2. is null,is not null 值是否为null
    is null :为空
    is not null :不为空
    例:查询 comm列不为空的员工
    select * from emp where comm is not null;

    3. between x and y x与y之间
    例:查询工资在2000到3000的员工信息
    select * from emp where sal between 2000 and 3000;

    4. in(list),not in(list) 值是否包含在list中
    in(list)在list列表内
    not in(list)不在list列表内
    注:list可以是一个查询返回的查询结果
    例:查询职务为MANAGER和ANALYST的员工信息
    select * from emp where job in('MANAGER', 'ANALYST');
    注:list里的成员为字符需要加单引号,数值不用加单引号

    5. exists(sub-query)、not exists(sub-query) 子查询
    sub-query:子查询
    exists(sub-query):满足该条记录的子查询时(有查找到)执行该条记录父查询
    not exists(sub-query):不满足该条记录的子查询时执行父查询
    如:select * from emp where exists(select *from dept where LOC = 'DALLAS');
    子查询中 LOC列存在DALLAS则执行父查询返回emp中所有列
    注:exists是逐条记录去比较,子查询能查到才会去执行父查询,同样子查询只有能查到结果就会执行父查询,所有一般需要添加其他条件,例如:
    使用exists查询部门名称为SALES和RESEARCH 的雇员姓名、工资、部门编号。
    select ename, sal, deptno
    from emp e
    where exists (select deptno from dept d where dname in('SALES', 'RESEARCH') and e.deptno=d.deptno);
    6. like _ ,%,escape ‘‘ _\% escape ‘’ 模糊查找
    通配符“_”和“%” 参考第2点
    escape:定义转义字符 escape关键字 后面的字符将被定义为转义字符
    escape放于like语句后面
    列:查询所有员工中姓名包含“M”的员工信息 注:数据区分大小写
    select * from emp where ename like '%M%';

     

    6.order by关键字 (排序): (A)

    6.1 用法:

    例:对emp表按sal列进行排序(默认为升序)
    select * from emp order by sal;

    6.2 那如何指定是升序或降序?


    select * from emp order by sal asc;
    select * from emp order by sal desc;
    asc代表升序,desc代表降序

    6.3 按多个列进行排序

    当一个列中出现相同的值时,可能需要按两个列或多个列进行排序,这时可以在 order by 后添加多个列(用逗号分隔),在各个列名后面可以加上asc或desc指定升序或降序。
    例:select * from emp order by sal desc ,ename desc;

    7.创建计算字段(列)(A)

    7.1为什么需要计算字段?


    我们经常需要直接从数据库中检索出转换、计算或格式化过的数据;而不是检索出数据,然后再在客户机应用程序中重新进行计算或格式化。

    7.2创建计算字段的方式


    方式一 :对某个列的数值进行计算(+-*/)
    Sql允许select子句(select后添加列名的位置)中出现由+,-,*,/以及列名和数字组成的表达式,将指定列中的值按照表达式进行计算,并创建新的一个列(可以对这个类设置别名)。
    例:select sal*12 yearsal from emp;
    yearsal为别名

    方式二:对几个列中的数据进行拼接,可以在列之间加入格式,
    例:select (ename ||'的年薪为:'|| sal*12) from emp;


    注:创建出来计算字段是一个列但它并不实际存在于数据库表中

    8.并集,全集,交集,差集(A)


    8.1 union(并集):


    将查询的两个结果(集合)组合成一个结果并过滤掉重复部分
    例:查询工资大于2000以及部门编号为20的员工信息
    select * from emp where sal>2000 union select * from emp where deptno=20;

    8.2 union all(全集):

    作用与union一样但不过滤重复部分
    例:查询工资大于2000以及部门编号为20的员工信息(不去除重复)
    select * from emp where sal>2000 union all select * from emp where deptno=20;

    8.3 intersect(交集):


    返回查询结果中相同的部分。
    例:查询工资大于2000并且部门编号为20的员工信息
    select * from emp where sal>200 intersect select * from emp where deptno=20;

    8.4 minus(差集):


    返回在第一个查询结果中与第二个查询结果不相同的那部分记录。
    例:查询工资大于2000并且部门编号不是20的员工信息
    select * from emp where sal>2000 minus select * from emp where deptno=20;

     

    作者:ki16
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    规则引擎集成接口(一)初始体验
    转载--Defunct僵尸进程
    转载--sigprocmask阻塞进程
    转载--__attribute__ 你知多少?
    转载--va_list
    转载--如何使用# ## ... _ _VA_ARGS_ _
    转载--C语言中的__FILE__、__LINE__和__func__
    转载--wait waitpid解释
    转载--c语言宏定义(1)
    转载--c语言宏定义(2)
  • 原文地址:https://www.cnblogs.com/gaojinshun/p/10731731.html
Copyright © 2011-2022 走看看