sql数据开发-4:select查询语句

本文详细介绍了SQL中的SELECT查询语句,包括数据源、语法属性、执行顺序。讲解了投影、连接、WHERE子句的使用,如根据条件过滤数据、比较运算符、逻辑运算符以及ORDER BY子句进行结果排序。通过实例展示了BETWEEN、IN、LIKE运算符的应用,以及如何处理NULL值。
摘要由CSDN通过智能技术生成

数据源的概念:要处理的数据集合


语法属性:select from where group by order by

执行顺序:from where group by select order by

 


SELECT ... ... FROM 语句

 

select 语句功能 (一)


 
 
 投影(projection)             选择(selecttion)

  查询列                      查询行

 

 

select 语句功能 (二)


   连接 (join)

     根据关联字段查询相应的记录

 

 


selevt 语句的基本语法

  select 用于指定字段名  (column name)
  from 用于指定表名       (table name)

 

select *,column1,coulun2 from table;

 

 

 

 


**********where 子句  ***********

where 的 作用


 面临的问题
    -- 要处理的数据不是源表中的所有记录
   
 解决方法

    -- 根据条件过滤出需要处理的数据

 依赖的字句
   
    -- 用WHERE子句对表里的记录进行过滤

 

 


WHERE 子句的实现

  用WHERE子句对表里的记录进行过滤

 
      WHERE子句跟在FROM字句之后
      WHERE子句后跟条件表达式
       
           -- 列名、常量
           -- 比较运算符
           -- 文字值

 

 

select colname1,... from tabname where coluname1=value;

 

项目案例:

   1.每月的固定费用是5.9元,计算一年的固定费用,一年的包在线时长。
 
   2.一年的固定费用为70.8元,计算年包在线时长

 

 

 

 

 

用字符类型的列过滤


    字符串必须用单引号括起来
    字符串是大小写敏感的


    select colname,... from tabname where colname = 'value';

 

 

VARCHAR2 和 CHAR

   在字符串的比较中,varchar2按实际字符串比,对空格是敏感的,char会将短字符串补起后,再与长字符串比,对空格不敏感


   varchar类型是ANSI定义的,varchar2是oracle定义的。目前是等价的,但如果ANSI对varchar类型定义有变化,oracle varchar2类型不变。

 


WHERE 子句的实现

   用WHERE子句对表里的记录进行过滤

   
       WHERE子句可以后面跟多个条件表达式,条件表达式之间用AND、OR连接,也可以通过()干部顺序


    select colname1,... from tabname where colname1 =value and colname2 > value
    or colname3 < value;

 


项目案例:
   哪些资费的月固定费用在5元到10元之间。

 

 

 


BETWEEN  AND 运算符

   BETWEEN AND 表示一个范围,是闭区间。含义为大于等于并且小于等于


  select colname,... from tabname where colname between val1 and val2;

 

项目案例:
  哪些资费的月固定费用是5.9元,8.5元,10.5元。

 


IN运算符

   IN表示一个集合,是离散值。含义为等于其中任意一个值 等价于 =ANY

 

select colname, ... from tabname where colname in (val1,val2,val3,...);

 

 


like运算符


     在字符串比较中,可用like和通配符进行查找
     
     通配符的种类
 
        --  %表示0或多个字符
        --  _表示任意单个字符
     
     select colname1,... from tabname where colname1 like '_%';  

 

 

项目案件:
 
   哪些unix服务器上的os账号名是以h开头的。  
   哪些unix服务器上的os账号名是以h_开头的。

 

 

like运算符

   若查找%和_本身,需要使用escape进行转义

 

  select colname,... from tabname where colname like 'S\_%' escape '\';

 

项目案例:

   哪种资费标准是包月的,即没有单位费用

 


IS NULL 运算符

   测试NULL值需要用 IS NULL运算符

   NULL不能用等于(=) 和不等于 (<>)跟任何值比较,包括它自身。所以,不能使用=或<>来测试一列是否有空值。

 

select colname1,... from tabname where colname1 IS NULL;

 

 

比较和逻辑运算符


   比较运算符

       -  =  >  >=  <  <=


   SQL比较运算符
      between and
      in
      like
      is null

   逻辑运算符

      and
      or
      not

 


运算符的否定形式

    比较运算符
        -  <>  !=  ^=

    SQL比较运算符

        not between and
        not  in  <==>  <>All
        not like
        is not null

 

 

项目案例:

    哪些资费信息不是包月的,即有单位费用
 
    哪些资费信息的月固定费用不是5.9,8.5,10.5

 

 

 

************ORDER BY 子句 *************

 

ORDER BY 的应用场景


  需要回答的问题

      之前的select 语句的结果集是按怎样的顺序显示
 
      怎样让结果集中的记录按照我们的需要显示

 
  问题解答

      select语句的输出结果按记录在表中的存储顺序显示
      order by子句能够改变记录的输出顺序

 


ORDER BY 子句

  用 ORDER BY 子句对查询出来的结果集进行排序,即对select 子句的计算结果排序。

    ASC ----   升序,缺省
    DESC ----  降序
   
    ORDER BY 是 SELECT 语句中最后一个子句

 
    select colname1,... from tabname order by colname;

 


项目案例:

    按开通时间的先后显示业务账号的信息

    

 


ORACLE BY 子句

    NULL值在排序中的显示
        --  升序显示在最后
        --  降序显示在最前面

    ORDER BY 后面可以跟列名、表达式、别名、位置


   select colname1,... from tabname order by 1;

 


项目案例:

    按月固定费用从大到小的顺序显示资费信息

    按年固定费用从大到小的顺序显示资费信息

 

 


按多列进行排序

     先按colname1升序,再按colname2降序排序
     ORDER BY 后面的列可以不出现在SELECT 后面。

    SELECT colname1,... from tabname ORDER BY colname1,colname2 desc

 

项目案例:
   
   按unix服务器ip地址升序,开通时间降序显示业务账号信息。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕容屠苏

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值