zoukankan      html  css  js  c++  java
  • SQL入门之条件表达式

    where子句和having子句主要是用来筛选符合条件的元组,其后紧跟的即为条件表达式。

    0.and, or条件的连接

       用法和一般编程语言一样,主要用于条件的拼接。and两边都为真,则结果为真。or两边只要一个为真,则结果为真。

       如果,where子句需要3个或者更多的条件,且同时使用了and和or操作符,那么应该用圆括号来明确意图,以便数据库或者日后自己或他人能够理解代码,增强可读性。如:

    select emp_id
    from employee
    where end_date is null and (title='Teller' or start_date<'2007-01-01');

    1.not条件的否定

       not即为非运算,它使条件取反。

    2.相等条件

     形式为‘column=expression',例如:

    • title = 'Teller'
    • fed_id = '111-111'
    • ...

     这些条件被成为相等条件,因为它们将一个表达式等于另一个表达式。

    select pt.name product_type, p.name product
    from product p inner join product_type pt
    on p.product_type_cd = pt.product_type_cd
    where pt.name = 'Customer Accounts';

    选出name为Customer Accounts的产品。

    3.不等条件

    这个是用来判断两个表达式不相等的。操作符为'<>'或'!='。例如,选取name不为Customer Accounts的产品:

    select pt.name product_type, p.name product
    from product p inner join product_type pt
    on p.product_type_cd = pt.product_type_cd
    where pt.name <> 'Customer Accounts';

    4.范围条件

    常见的能够表示范围的有:<, >, <=, >=, between...and...。重点说明的是between...and...,所选条件包括符合两个端点的元组(范围上下限闭合),并且一定要确定好上下界,下限在between后面,上限在and后面,错误的使用将造成问题,这是因为between...and...在数据库执行时被转化为<=和>=两个操作条件。如:

    正确使用:

    而错误的使用:

    这里数据库实际执行的是一下语句:

    select emp_id,  fname, lname, start_date
    from employee
    where start_date >= '2007-01-01' and start_date <= '2005-01-01';

    因为不存在某个日期大于2007-01-01,却又小于2005-01-01,所以结果当然是空值。

    对于数字或者日期的范围,结果能够很轻易的看出来,但是对于一般字符串的范围,结果就不那么容易了,必需知道所使用字符集中个字符的字典顺序。

    5.成员条件

    对于一个条件:where product_cd = 'CHK' or product_cd='SAV' or product_cd='CD' or product_cd='MM';显然这样书写非常麻烦,这里仅仅包含了4个条件,但当条件有几十个的话,这样的书写非常令人乏味。这时可以使用in操作符。上面的可以写成:

    select account_id, product_cd, cust_id, avail_balance
    from account
    where product_cd in ('CHK', 'SAV', 'CD', 'MM');

    产生的效果,和第一种是相同的,但简便了许多。

    6.匹配条件

    通常情况下,经常使用通配符去进行匹配操作。对于SQL提供的一些内置函数虽然可以完成任务,但灵活性相对差一些。通配符如下:

    • _:匹配一个字符
    • %:匹配任意个字符(包括0个字符)
    select lname
    from employee
    where lname like '_a%e%';

    这段代码的目的是从employee表中,选取lname中第一个字符为任意,第二个必须为a和e可以出现在后面任意位置的lname。

    还有一种是通过正则表达式,以后学习。感觉路好长啊。。。。

    原文:http://www.cnblogs.com/pipinet/archive/2017/04/09/6683431.html

  • 相关阅读:
    8月15日
    【k8s】创建 tls 类型 Secret
    使用 openssl 生成 CA 证书
    【k8s】跨 Namespace 使用 Ingress
    Windows 和 Centos 导入 CA 证书
    使用 openssl 生成服务器证书
    【k8s】nginx ingress 配置 https
    【k8s】通过 https 访问 dashboard
    1012day人口普查系统
    8.3日志
  • 原文地址:https://www.cnblogs.com/yanglang/p/6689296.html
Copyright © 2011-2022 走看看