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

SQL入门之条件表达式的更多相关文章

  1. Linq To sql入门练习 Lambda表达式基础

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  2. SQL条件表达式

    需求:数据表中如果满足某个条件,返回表中所有数据,否则不返回数据. 语法:CASE 表达式是一种通用的条件表达式,类似于其它语言中的 if/else 语句. CASE WHEN condition T ...

  3. Atitit.sql where条件表达式的原理  attilax概括

    Atitit.sql where条件表达式的原理  attilax概括 1. 数据查询接口sql api标准化1 2. Sql接口的问题2 2.1. 虽然sql是结构化的dsl,但是任然是编程语言类型 ...

  4. SQL入门语句之LIKE、GLOB和LIMIT

    一.SQL入门语句之LIKE LIKE用来匹配通配符指定模式的文本值.如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1.这里有两个通配符与 LIKE 运算符一起使用,百 ...

  5. 你真的会玩SQL吗?表表达式,排名函数

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  6. [Django]模型提高部分--聚合(group by)和条件表达式+数据库函数

    前言:本文以学习记录的形式发表出来,前段时间苦于照模型聚合中group by 找了很久,官方文章中没有很明确的说出group by,但在文档中有提到!!! 正文(最后编辑于2016-11-12): 聚 ...

  7. SQL入门语句之ORDER BY 和GROUP BY

    一.SQL入门语句之ORDER BY ORDER BY 是用来基于一个或多个列按升序或降序顺序排列数据 1.从数据库表获取全部数据按字段A的升序排列 select *from table_name o ...

  8. SQL入门语句之SELECT和WHERE

    一.SQL入门语句之SELECT SELECT语句用于从数据库表中获取数据,结果表的形式返回数据.这些结果表也被称为结果集 1.从数据库表中取部分字段 select 字段A,字段B from tabl ...

  9. SQL入门语句之INSERT、UPDATE和DELETE

    一.SQL入门语句之INSERT insert语句的功能是向数据库的某个表中插入一个新的数据行 1.根据对应的字段插入相对应的值 insert into table_name(字段A, 字段B, 字段 ...

随机推荐

  1. 利用jink调试程序,时间不准的解决办法

    前几天,做工程,遇到了利用jlink的SWD的模式调试程序,定时器延时不准的问题,上网搜了好多,终于找到了问题所在,感谢万能的网友.时间不对是因为Keil的设置问题. 以下是转自网友: 一.先说说仿真 ...

  2. 每天一个linux命令(35)--free命令

    free命令可以显示Linux系统中空闲的.易用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free 命令是最经常使用的命令之一. 1.命令格式: free [ ...

  3. HTML文档及标签介绍

    HTML标签 HTML 标记标签通常被称为 HTML 标签 (HTML tag). HTML标签是由尖括号包含的关键词,比如<html> HTML标签通常是成对出现的,比如<body ...

  4. JavaScript技巧总结和本地存储(一)

    类型检测 typeof 一般用于js的基本数据类型(undefined,number,string,boolean.注意null检测的结构是object)检测,引用类型检测不准确. instanceo ...

  5. C#-MVC开发微信应用(1)--开始使用微信接口

    1.微信账号 要开发使用微信的平台API,就需要到微信的公众平台(https://mp.weixin.qq.com/)去注册,拥有一个服务号或者订阅号,服务号主要面对企业和组织,订阅号主要面向组织和个 ...

  6. C#:判断100--999之前的水仙花数

    //判断100--999之前的水仙花数.水仙花数举例:153=13+53+33. using System;public class Program  {    public static void ...

  7. JavaScript 动态添加div 绑定点击事件

    1.动态添加div function cDiv(num){ var oDiv=document.createElement("div"); oDiv.className='divs ...

  8. UWP--集合绑定数据

    使用 ObservableCollection   列表控件主要是 ListBox.ListView.GridView 等. 为列表控件绑定数据不再是为 DataContext 属性赋值,应该使用列表 ...

  9. python——时间与时间戳之间的转换

    http://blog.csdn.net/google19890102/article/details/51355282

  10. Office 365 开发概览系列文章和教程

    Office 365 开发概览系列文章和教程 原文于2017年2月26日首发于LinkedIn,请参考链接 引子 之前我在Office 365技术社群(O萌)中跟大家提到,3月初适逢Visual St ...