ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

03.SQL运算符

2022-03-10 01:33:52  阅读:151  来源: 互联网

标签:03 10 employees 运算符 SQL null id SELECT


算数运算符

算数运算符包括 +、-、*、/或者DIV、%或者MOD

  • 注意:Java中可以进行字符串的拼接,但是SQL没有这种自动拼接需要使用函数
# java中 100 + "a" => '100a'
# sql 中 100 + 'a' => 100 (计算过程中将字符串看成0)
  • null参与计算,结果为null
# 1 + null => null
  • 除法运算或者取模运算(%或者MOD)中分母为0,结果为null
# 12 % 0 => null
# 12 / 0 => null
  • 取模运算中结果的符号与分子符号保持一致
# 12 % 5 => 2
# 12 % -5 => 2
# -12 % 5 => -2
# -12 % -5 => -2
  • 除法运算中,结果默认是double类型(这里无论是否整除)
# 100 / 2 = 50.00000

image-20220309005702021

比较运算符

比较运算符包括 =、<=>、<>、!=、<、<=、>、>=
其中和常见的不同的是安全等于<=>、不等于<>

# <=>安全等于可以用来进行判断null
SELECT 1=null,1<=>null,1!=null, 1<>null;
# 不等于<>等同于!=

image-20220309010135997

最大最小值

最大LEAST()

最小GRLEAST()

# 最大可以比较数值或者字典序 LEAST('g', 'b', 't', 'm') => 'b'
# 最小可以比较数值或者字典序 GRLEAST('g', 'b', 't', 'm') => 't'

Between and

# between and 表示范围值,包括两个边界
# between 6000 and 8000 => [6000,8000]
# NOT between 6000 and 8000

# 工资在6000~8000的人id
SELECT employee_id,salary FROM employees WHERE employees.salary BETWEEN 6000 AND 8000;

# 工资不在在6000~8000的人id
SELECT employee_id,salary FROM employees WHERE employees.salary NOT BETWEEN 6000 AND 8000;

image-20220309010907604

image-20220309010919070

NOT in set

# where id IN (10,20,30); 
# => where id = 10 or id = 20 or id = 30;
# 查询部门编号是10、20、30的人id
SELECT employee_id,department_id FROM employees WHERE employees.department_id in (10, 20, 30);
SELECT employee_id,department_id FROM employees WHERE employees.department_id=10 or employees.department_id=20 or employees.department_id=30;

# 不能写成这样 SELECT employee_id,department_id FROM employees WHERE employees.department_id=10 or 20 or 30;
# 因为先计算id=10 or 20 or 30 相当于 id=10 || 1 || 1 结果为1

Like模糊查询

模糊查询使用Like关键词,%表示匹配不确定个数的字符(可以为0个),#表示匹配一个确定字符

# %的用法
# 查找first_name中包含a的id和first_name
SELECT employee_id,first_name FROM employees WHERE employees.first_name LIKE '%a%';

image-20220310002840663

# _的用法
# 查找first_name第二个字母为a的id和first_name
SELECT employee_id,first_name FROM employees WHERE employees.first_name LIKE '_a%';

image-20220310002954144

# _与%结合使用
Like '__a%'; => 可以匹配eea
# 如果需要匹配_与%特殊字符,可以用转义字符
Like '_\_a'; => 可以匹配 e_a
# 或者指定转义字符,这里指定&为转义字符
Like '_$_a' ESCAPE '$'

正则表达式

关键字为REGEXP或者是RLIKE

# ^字符 表示以该字符开头
# 字符$ 表示以该字符结束
# [ab] 表示a或者b
# .	匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]
# 与通用的正则表达式同
SELECT 'shkstart' REGEXP '^shk', 'shkstart' REGEXP 't$', 'shkstart' REGEXP 'hk'
FROM DUAL;
SELECT 'atguigu' REGEXP 'gu.gu','atguigu' REGEXP '[ab]'
FROM DUAL;

逻辑运算符

常见的逻辑运算符有

# OR 或者是 ||
# AND 或者是 &&
# NOT 或者是 !
# NOR(异或)
# 注意: 逻辑运算优先级 NOT > AND > XOR > OR
# 优先级高的先运算

位运算符

常见的按位运算符

# 按位与 &
# 按位或 |
# 按位异或 ^
# 按位取反 ~
# 右移 >>
# 左移 <<

运算符优先级

重要的事情说三遍:运算带上括号,不然就得看运算符优先级

优先级由低到高排列 运算符
1 =(赋值运算)、:=
2 II、OR
3 XOR
4 &&、AND
5 NOT
6 BETWEEN、CASE、WHEN、THEN、ELSE
7 =(比较运算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN
8 |
9 &
10 <<、>>
11 -(减号)、+
12 *、/、%
13 ^
14 -(负号)、〜(位反转)
15 !

标签:03,10,employees,运算符,SQL,null,id,SELECT
来源: https://www.cnblogs.com/jiangblog/p/15987828.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有