条件查询
条件表达式:
①指针与字段变量
- 指针是人们虚拟出来的一个箭头(或者标记),实际上它并不存在。指针可以指向数据表中的任何一条记录,当指针指向某条记录时该记录就被称为当前记录。
- 在表达式中出现的字段名其实就是字段变量,称其为字段变量的原因是字段名的值会随着指针的移动而变化。所以表达式中将字段名作为变量来使用。
②关系运算符
运算符 | 含义 |
= | 等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
<>或!= | 不等于 |
关系运算符,需注意字段类型。
❀字段类型是字符型,必须与字符型常量比较,如:name=‘张三’
❀字段类型是数值型,必须与数值型常量比较,如:credit=3
❀字段类型是日期型﹐只需要直接使用字符串形式表述日期即可,DBMS能够识别日期格式的字符串,如:date<‘2000-01-01’
③逻辑运算符
运算符 | 含义 | 运算规则 |
NOT | 非 | NOT True=False、NOT False=True |
AND | 与(而且) | True AND True = True、True AND False = False、False AND True = False、False AND False = False |
OR | 或 | True OR True = True、True OR False = True、False OR True = True、False OR False = False |
逻辑运算符优先级:NOT
>AND
>OR
且关系运算符的优先级大于逻辑运算符
④SQL特殊运算符
常用的SQL特殊运算符(…代表某字段)
运算符 | 含义 | 示例 |
IN | 在某个集合中 | … IN(1,2,3) |
NOT IN | 不在某个集合中 | … NOT IN(1,2,3) |
BETWEEN | 在某个范围内 | … BETWEEN 1 AND 3 |
NOT BETWEEN | 不在某个范围内 | … NOT BETWEEN 1 AND 3 |
LIKE | 与某种模式匹配 | … LIKE ‘%运算%’ |
NOT LIKE | 不与某种模式匹配 | … NOT LIKE ‘%运算%’ |
IS NULL | 是NULL值 | … IS NULL |
IS NOT NULL | 不 是NULL值 | … IS NOT NULL |
使用WHERE
关键字设置查询条件:
①WHERE
子句用法
带有WHERE
子句的SELECT
语句的语法格式:(其中[ ]中的为可选项)
SELECT [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE 条件表达式;
WHERE
子句的工作原理为:从表中的第1条记录开始向下搜索直到遇见结束标记为止。在此过程中,将条件表达式的值为False的当前记录筛选掉,而将条件表达式的值为True的当前记录添加到查询结果集中。
注:字符串比较大小,其实是在比较每个字符的ASCIl码值,AScII码大的字符为大。人们经常使用的字符里数字字符“O”的ASCII码是48,“1”的ASCII码是49等,以此类推向后递增;大写英文字母“A”的ASCII码是65,“B”的ASCII码是66等,以此类推向后递增;小写英文字母“a”的ASCII码是97,“b”的ASCII码是98等,以此类推向后递增。因此,每个排列的后面的字符都比前面的要大。汉字比较大小时比较的是拼音。
但MySQL数据表采用UTF8字符串时不能直接按照拼音排序,一般转换为GBK格式。
例:CONVERT(name USING GBK)>CONVERT(‘张三’ USING GBK)查询日期数据时要注意:在Oracle中,日期型数据必须被包含在单引号(’ ')中。而且Oracle中,日期的默认格式为DD-MON-YYYY,其中DD代表目, MON代表月,而且必须是英文月份名的简写,YYYY代表用四位数字表示的年份。例:‘01-JAN-2021’
而在MySQL、SQL Server中日期型数据也必须被包含在单引号(’ ')中。但日期的默认格式为YYYY-MM-DD。例:‘2021-01-01’
排序条件查询结果:
语法格式:(其中[ ]中的为可选项)
SELECT [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE 条件表达式
ORDER BY 某一字段名 [ASC|DESC];
查询前n条记录:
- MySQL中的
LIMIT
关键字可以限制返回到结果集中的记录个数。
语法格式:
SELECT [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE 条件表达式
ORDER BY 某一字段名 [ASC|DESC]
LIMIT n;
#n为任意一个正整数,结果返回几条结果
- SQL Server中的
TOP
关键字可以限制返回到结果集中的记录个数。
语法格式:
SELECT TOP n [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE 条件表达式
ORDER BY 某一字段名 [ASC|DESC];
#n为任意一个正整数,结果返回几条结果
#TOP关键字除了上述用法以外,还有一种用法:TOP n PERCENT
- 在Oracle中使用
ROWNUM
限制返回的记录个数。
语法格式:
SELECT [DISTINCT|ALL] 字段名1[,字段名...]
FROM 表名
WHERE 条件表达式 ROWNUM<n
ORDER BY 某一字段名 [ASC|DESC];
#n为任意一个正整数,结果返回n-1条结果