条件查询

条件表达式:
①指针与字段变量

  • 指针是人们虚拟出来的一个箭头(或者标记),实际上它并不存在。指针可以指向数据表中的任何一条记录,当指针指向某条记录时该记录就被称为当前记录。
  • 在表达式中出现的字段名其实就是字段变量,称其为字段变量的原因是字段名的值会随着指针的移动而变化。所以表达式中将字段名作为变量来使用。

②关系运算符

运算符

含义

=

等于

<

小于

<=

小于等于

>

大于

>=

大于等于

<>或!=

不等于

关系运算符,需注意字段类型。
❀字段类型是字符型,必须与字符型常量比较,如: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条结果