关于SQL的学习记录(六、条件查询)

条件查询

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

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

②关系运算符

运算符含义
=等于
<小于
<=小于等于
>大于
>=大于等于
<>或!=不等于

关系运算符,需注意字段类型。
❀字段类型是字符型,必须与字符型常量比较,如:name=‘张三’
❀字段类型是数值型,必须与数值型常量比较,如:credit=3
❀字段类型是日期型﹐只需要直接使用字符串形式表述日期即可,DBMS能够识别日期格式的字符串,如:date<‘2000-01-01’

③逻辑运算符

运算符含义运算规则
NOTNOT True=False、NOT False=True
AND与(而且)True AND True = True、True AND False = False、False AND True = False、False AND False = False
ORTrue 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条结果
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值