依据电子书《菜鸟级SQL21天自学通.pdf》整理,本节对应原书第三天的内容。
- 条件查询需要用到WHERE 子句,基本格式如下:
WHERE <条件语句> - 条件语句的元素一般包括变量、常量和比较运算符。
- 常量、变量的数据类型包括:数值型,比较型,字符型,逻辑型,备注型以及混合型
- 运算类型包括:数值运算,比较运算,字符运算,逻辑运算以及集合运算
1.数值运算
- 数值型运算的规则:先乘后除,再取模,再加减。模运算A%B表示取A除以B的余数
- 在SELECT语句中,可以将查询得到的数据经过数值运算后以别名的方式显示出来,例如
SELECT ITEM, WHOLESALE, WHOLESALE+0.15 RETAIL FROM PRICE;
将查询到的WHOLESALE字段加上0.15以后,重新显示为RETAIL,如下:
=======================
ITEM WHOLESALE RETAIL
TOMATOES .34 .49
为了方便阅读上述语句也可以写成
SELECT ITEM, WHOLESALE, (WHOLESALE+0.15) RETAIL FROM PRICE; - - 号可以作为减号,也可作为负号使用;有的模运算不用%,而是用mod(被除数,除数)
2.比较运算
- 比较运算包括等于(=), 大于(>), 小于<, 大于或等于(>=), 小于或等于(<=), 不等于(<>或!=)
- 比较运算符可用于比较数值型和字符型常量、变量;比较字符型时,字符型常量或变量需要使用单引号,而数值型不需要用单引号
例如: SELECT * FROM FRIENDS WHERE STATE<= 'LA';
SELECT * FROM STAFF WHERE SALARY>5000; - 判断某个字段是否为空时,不能使用=NULL的方式,而应使用IS NULL的形式。
例如: 使用SELECT * FROM PRICE WHERE WHOLESALE IS NULL将查询到到这一字段为NULL的数据
而用SELECT * FROM PRICE WHERE WHOLESALE=NULL将查询不到结果
3.字符运算
- 2个操作符: LIKE用于模糊匹配, ||用于连接两个字符
- 2个通配符跟LIKE配合使用:_用于匹配一个字符,%用于匹配1个或多个字符
举例:
SELECT * FROM PARTS WHERE LOCATION LIKE '%BACK%' 用于查找LOCATION含有BACK字样的记录
SELECT * FROM FRIENDS WHERE STATE LIKE 'C_' 用于查询州名第一个字母为C,第二字母任意的记录
SELECT FIRSTNAME || LASTNAME ENTIRENAME FROM FRIENDS 从freinds表中查询出朋友的姓名,组合以后显示为NAME
4.逻辑运算
- 对条件进行逻辑组合 AND(且), OR(或), NOT(非)
例子:
SELECT LASTNAME FROM VACATION WHERE YEARS<=5 AND LEAVETAKEN>20;
SELECT * FROM VACATION WHERE LASTNAME NOT LIKE 'B%'; 查找姓不以字母B打头的
5.集合运算
- UNION联合
SELECT ESN FROM SUBSCRIBER UNION SELECT ESN FROM ESN_AUTH;查找在subscriber或esn_auth表出现的ESN - INTERSECT相交
SELECT ESN FROM SUBSCRIBER INTERSECT SELECT ESN FROM ESN_AUTH;查找在两个表同时出现的ESN - MINUS相减
SELECT ESN FROM ESN_AUTH MINUS SELECT ESN FROM SUBSCRIBER; esn_auth包含但subscriber表没有的ESN - IN, BETWEEN从属
SELECT * FROM FRIENDS WHERE STATE IN('CA','CO','LA'); 查找所有州名为CA,CO或者LA的记录
select dn from subscriber where dn between '4500' and '4599'; 查找所有范围从4500到4599的dn值
注:IN配合括号对使用;BETWEEN配合AND使用,包括边界值