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, 字段 ...
随机推荐
- 原生js和jquery实现图片轮播特效(转)
本文给大家分享的是使用原生JS和JQ两种方法分别实现相同的图片轮播特效,十分的实用,也非常方便大家对比学习原生js和jQuery,有需要的小伙伴可以参考下. 1)首先是页面的结构部分对于我这种左右切换 ...
- hibernate中一种导致a different object with the same identifier value was already associated with the session错误方式及解决方法
先将自己出现错误的全部代码都贴出来: hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> ...
- connect函数的用法
无论流式套接字(如TCP)还是数据报(如UDP),均可以使用connect函数.对于流式套接字,使用connect函数后,建立固定地址的连接,之后可以使用send/rev函数进行数据收发.对于数据报, ...
- Pascal's Triangle leetcode
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...
- 剑指offer_(4)
重建二叉树: 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍 ...
- Javascript基础知识小测试(一)
这里罗列了<你不知道的js>上卷的一些知识点以及小问题,如果你想巩固一下js那么就和我一起来看看吧. 如果你能不看书就回答上80%的问题说明你js的这一部分学得还不错,再接再厉. 作用域和 ...
- TensorBoard:Visualizing Learning 学习笔记
为了更方便的理解.调试和优化TF程序,我们可以使用TensorBoard(可视化工具).可以使用TensorBoard查看graph,绘制图表执行过程中的定量指标.TensorBoard是完全可配置的 ...
- 修改mysql方法
我已验证: 方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('n ...
- C#基础笔记---浅谈XML读取以及简单的ORM实现
背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...
- Java中实现短信发送
最近跟着做公司的项目偶然接触到的,顺势把这个给记录下来,给自己梳理一下. 采用引入第三方工具的方式,网上查了半天,发现简单的实现方式便是注册一个中国网建的账号,新建账号的时候会附带赠几条免费短信,彩信 ...