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, 字段 ...
随机推荐
- ADO.net参数化查询陷阱
避免SQL漏洞注入攻击,往往采用的是参数化查询!然而在使用参数化查询中,往往为了方便就直接通过构造方法来进行数据的初始化了,然而这样就引发一个这样的问题,当参数值为0时,就出现参数为空的情况了. 一. ...
- YARN学习笔记(一)——YARN的简介
YARN的简介 什么是YARN MRv1的架构和缺陷 经典MapReduce的局限性 解决可伸缩性问题 YARN的架构 一个可运行任何分布式应用程序的集群 YARN中的应用程序提交 YARN的其他特性 ...
- Servlet的监听
Servlet监听 在<Servlet和Jsp>中我们使用了ServletConfig获取Servlet的初始配置,用ServletContext来获取整个Web应用的初始配置,但如果需要 ...
- 深入源码剖析String,StringBuilder,StringBuffer
[String,StringBuffer,StringBulider] 深入源码剖析String,StringBuilder,StringBuffer [作者:高瑞林] [博客地址]http://ww ...
- 【原】cookie小结
前记:前段时间搞一个活动,开发的时间被严重压缩,忙到飞起,以致于都没怎么写文章了,内疚. 2月份参加了一场面试,有一些关于cookie的问题回答的不是很好,所以这篇文章我们来对cooKie做一个探讨和 ...
- Delete Node in a Linked List leetcode
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...
- 每天一个Linux命令 2
wc 命令用于统计指定文本的行数.字数.字节数.格式为“wc [参数] 文本” . 参数 作 ...
- Struts2框架(8)---Struts2的输入校验
Struts2的输入校验 在我们项目实际开发中在数据校验时,分为两种,一种是前端校验,一种是服务器校验: 客户端校验:主要是通过jsp写js脚本,它的优点很明显,就是输入错误的话提醒比较及时,能够减轻 ...
- springMVC中文乱码问题解决
1:表单提交controller获得中文参数后乱码解决方案 注意: jsp页面编码设置为UTF-8 form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果 <%@ ...
- cuda编程学习2——add
cudaMalloc()分配的指针有使用限制,设备指针的使用限制总结如下: 1.可以将其传递给在设备上执行的函数 2.可以在设备代码中使用其进行内存的读写操作 3.可以将其传递给在主机上执行的函数 4 ...