数据库查询

1. SCOTT 用户表

 dept:部门表。
 emp:雇员表。
 salgrade:工资等级表。
 bonus:奖金表。

2. SELECT

 SELECT [DISTINCT] {*,column alias,..} FROM table alias WHERE 条件表达式 ORDER BY 排序字段列表 [asc|desc]
 解析步骤: from -> where -> select -> order by

3. 查询列(字段)
select distinct *|字段|表达式 as 别名 from 表 表别名

    SELECT * FROM 表名;    
         ->查询某个表中所有的记录的所有字段信息。
    SELECT 列名 FROM 表名; 
         ->查询某个表中所有的记录的指定字段信息。
    SELECT 列名1,列名2 FROM 表名; 
         -> 查询某个表中所有的记录的字段1 字段2。
    SELECT distinct 列名 FROM 表名; 
         ->去除重复记录。
    SELECT 表达式 FROM 表名; 
         ->查询表达式。
    SELECT xxx as 别名 FROM 表名 表别名;
         ->使用别名。
   注意:
      1.查询部分字段,指定的字段名。
      2.查询所有的字段 通配符 * ( 书写方便、可以检索未知列;但是降低检索的性能) ,数据的顺序跟定义表结构的顺序一致。
  • 去除重复

     使用distinct去重,确保查询结果的唯一性。
    
  • 别名
    使用别名便于操作识别 、隐藏底层信息。存在字段别名和表别名。

     as: 字段别名可以使用as;表别名不能使用as。
     "":原样输出,可以存在 空格与区分大小写。
    
  • 字符串

     使用’’表示字符串(注意区分””) ,拼接使用 ||。
    
  • 伪列
    不存在的列,构建虚拟的列。

  • 虚表

     dual:用于计算表达式,显示单条记录的值。
    
  • null

     null 遇到数字参与运算的结果为 null,遇到字符串为空串。
     处理null值 : nvl(值1,值2) 当值1为null,nvl函数的结果为值2,当值1不为null,nvl函数的结果为值1。
    

4. 查询行(记录)

 where 过滤行记录条件 ,条件有
 a)、= 、 >、 <、 >=、 <=、 !=、 <>、 between and 
 b)、and 、or、 not、 union、 union all、 intersect 、minus 
 c)、null :is null、 is not null、 --not is null 
 d)、like :模糊查询 % _ escape('单个字符')
  f)、in 、 exists(难点) 及子查询
  • 比较条件
    = 、>、 <、 >=、 <=、 !=、 <>。

    =any(值列表) 大于最小值,<=any(值列表)小于最大值。
    =some(值列表) 大于最小值,<=some(值列表)小于最大值。
    all 大于最大值 ,小于最小值。

  • 且 或 非
    and、 or、 not。

  • null
    null不能使用条件判断,只能使用is。

  • 集合操作
    Union、Union All、Intersect、Minus。

     Union:并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序。
     Union All:全集(不去重) 对两个结果集进行并集操作,包括重复行,不进行排序 。
     Intersect:交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序。
     Minus:差集(减去重复) 对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
    
  • like

     模糊查询,使用通配符:
        %:零个及以上(任意个数的)的字符。
        _:一个字符。
     注意:
        遇到内容中包含 % _ 使用escape('单个字符')指定转义符。
    
  • in 与 exists

     in相当于使用or的多个等值,定值集合 ,如果存在子查询,确保 类型相同、字段数为1,如果记录多,效率不高,用于 一些少量定值判断上。
     exists条件为true,存在记录则返回结果,后续不再继续比较查询,与查询的字段无关,与记录有关。
    
  • 获取所有行的记录

     select * from emp; 
     select * from emp where 1=1 ; 
     select * from emp where ename like '%';
    
  • 排序

     使用 ORDER BY 排序,排序不是真实改变存储结构的顺序,而是获取的集合的顺序。
     顺序 :asc:升序(默认); desc:降序。
     多字段: 在前面字段相等时,使用后面的字段排序。
     空排序: 降序为 desc,注意 null 为最后。
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值