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
SQL入门之条件表达式的更多相关文章
- Linq To sql入门练习 Lambda表达式基础
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- SQL条件表达式
需求:数据表中如果满足某个条件,返回表中所有数据,否则不返回数据. 语法:CASE 表达式是一种通用的条件表达式,类似于其它语言中的 if/else 语句. CASE WHEN condition T ...
- Atitit.sql where条件表达式的原理 attilax概括
Atitit.sql where条件表达式的原理 attilax概括 1. 数据查询接口sql api标准化1 2. Sql接口的问题2 2.1. 虽然sql是结构化的dsl,但是任然是编程语言类型 ...
- SQL入门语句之LIKE、GLOB和LIMIT
一.SQL入门语句之LIKE LIKE用来匹配通配符指定模式的文本值.如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1.这里有两个通配符与 LIKE 运算符一起使用,百 ...
- 你真的会玩SQL吗?表表达式,排名函数
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
- [Django]模型提高部分--聚合(group by)和条件表达式+数据库函数
前言:本文以学习记录的形式发表出来,前段时间苦于照模型聚合中group by 找了很久,官方文章中没有很明确的说出group by,但在文档中有提到!!! 正文(最后编辑于2016-11-12): 聚 ...
- SQL入门语句之ORDER BY 和GROUP BY
一.SQL入门语句之ORDER BY ORDER BY 是用来基于一个或多个列按升序或降序顺序排列数据 1.从数据库表获取全部数据按字段A的升序排列 select *from table_name o ...
- SQL入门语句之SELECT和WHERE
一.SQL入门语句之SELECT SELECT语句用于从数据库表中获取数据,结果表的形式返回数据.这些结果表也被称为结果集 1.从数据库表中取部分字段 select 字段A,字段B from tabl ...
- SQL入门语句之INSERT、UPDATE和DELETE
一.SQL入门语句之INSERT insert语句的功能是向数据库的某个表中插入一个新的数据行 1.根据对应的字段插入相对应的值 insert into table_name(字段A, 字段B, 字段 ...
随机推荐
- 【Zookeeper】源码分析之网络通信(二)
一.前言 前面介绍了ServerCnxn,下面开始学习NIOServerCnxn. 二.NIOServerCnxn源码分析 2.1 类的继承关系 public class NIOServerCnxn ...
- linux 下 zookeeper安装
1.安装zookeeper-3.4.6cd /usr/soft#解压zookeeper 安装包tar -zvxf zookeeper-3.4.6#拷贝安装包到安装目录cp zookeeper-3.4. ...
- 老司机教你如何正确地在大陆安装 BlackArch
BlackArch 官方有一个比较完整的安装指南文档,其地址为 https://blackarch.org/blackarch-install.html 正如其第一行所述的那样 This tutori ...
- SpringBoot之旅 -- SpringBoot 项目健康检查与监控
前言 You build it,You run it, 当我们编写的项目上线后,为了能第一时间知晓该项目是否出现问题,常常对项目进行健康检查及一些指标进行监控. Spring Boot-Actuato ...
- 通讯录--(iOS9独有的方法)
导入库文件 #import <ContactsUI/ContactsUI.h> #pragma mark iOS9 新出的点击通讯录的获取信息的办法 #pragma mark - 先弹 ...
- 深度剖析Spark分布式执行原理
让代码分布式运行是所有分布式计算框架需要解决的最基本的问题. Spark是大数据领域中相当火热的计算框架,在大数据分析领域有一统江湖的趋势,网上对于Spark源码分析的文章有很多,但是介绍Spark如 ...
- Windows定时计划执行Python
先看下定时执行的py文件 #coding:gbk from selenium import webdriver import time,os driver = webdriver.PhantomJS( ...
- UWP--数据绑定的几种方式
1.后台代码: 2.后台定义属性,前台XAML 中绑定: 3.XAML 中定义资源并应用(资源中自定义对象): 4.用元素值绑定:
- Linux块设备驱动(一) _驱动模型
块设备是Linux三大设备之一,其驱动模型主要针对磁盘,Flash等存储类设备,本文以3.14为蓝本,探讨内核中的块设备驱动模型 框架 下图是Linux中的块设备模型示意图,应用层程序有两种方式访问一 ...
- JavaScript高级程序设计(学习)
文档模式是:混杂模式和标准模式. 若在文档开始处没有文档类型声明,则浏览器就会开启混杂模式.这种模式在不同的浏览器下行为差异非常大,如果不使用某些hack技术,跨浏览器的行为根本就没有一致性可言. 局 ...