首页 > 数据库 >MySQL基础(5)- 运算符

MySQL基础(5)- 运算符

时间:2024-09-06 20:22:30浏览次数:7  
标签:salary last name employees 基础 运算符 MySQL id SELECT

目录

一、算数运算符

1.加法运算符

2.乘除运算符

3.取模运算

二、比较运算符

1. = <=> <> != < <= > >=

2.IS NULL \ IN NOT NULL \ ISNULL

3.LEAST() \ GREATEST()

4.BETWWEEN 条件下界1 AND 条件上界2

5.in (set)\ not in (set)

6.LIKE :模糊查询

7.REGEXP \ RLIKE :正则表达式

三、逻辑运算符

1.or  and

2.not

3.XOR 异或:追求的"异"

4.位运算符: & |  ^  ~  >>   <<


一、算数运算符

除法可以用 div 表示 模可以用 mod 表示

1.加法运算符

在Java语言中结果是:1001。

在SQL语言中,+没有连接的作用,就表示加法运算,此时,会把字符串转换为数值(隐式转换)

SELECT 100 + '1'
FROM DUAL;

此时将a看作0处理

SELECT 100 + 'a'
FROM DUAL;

2.乘除运算符

SQL中除法结果都是浮点型

SELECT 100,100*1,100*1.0,100/1.0,100/2,
100+2*5/2,100/3,100 DIV 0
FROM DUAL;

3.取模运算

结果符号和被模数符号相同

SELECT 12%3,12%5,12MOD-5,-12%5,-12%-5
FROM DUAL;

二、比较运算符

1. = <=> <> != < <= > >=

 字符串存在隐式转换。如果数值转换不成功,则看作0。

SELECT
  1 = 2,
  1 != 2,
  1 = '1',
  1 = 'a',
  0 = 'a' 
FROM
  DUAL;

纯字符串进行比较则不存在隐式转换,按实际asc码进行比较。

SELECT
  'a'='a','ab'='ab','a'='b'
FROM
  DUAL;

安全等于:<=> 与 = 作用相似,唯一区别是<=>可以用来对NULL进行判断,在两个操作数均为NULL,返回1,当一个操作数为NULL时,返回值为0,不为NULL。可以查询字段为NULL的数据

2.IS NULL \ IN NOT NULL \ ISNULL

判断是否为NULL

# 查询表中xx字段不为null的数据
SELECT a,b,xx
FROM biao
WHERE xx IS NOT NULL;
# 或
SELECT a,b,xx
FROM biao
WHERE NOT xx <=> NULL;

3.LEAST() \ GREATEST()

最大最小

SELECT LEAST('g','b','t','m'),GREATEST('g','b','t','m')
FROM DUAL;

SELECT LEAST(first_name,last_name),LEAST(LENGTH(first_name),LENGTH(last_name))
FROM employees;

4.BETWWEEN 条件下界1 AND 条件上界2

BETWEEN 条件下界1 AND 条件上界2  (查询条件1和条件2范围内的数据,包含边界)
#查询工资在6000 到 8000的员工信息

SELECT employee_id,last_name,salary
FROM employees
where salary between 6000 and 8000;
#或
SELECT employee_id,last_name,salary
FROM employees
WHERE salary >= 6000 && salary <= 8000;

#查询工资不在6000 到 8000的员工信息 

SELECT employee_id,last_name,salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;
#或
SELECT employee_id,last_name,salary
FROM employees
where salary < 6000 or salary > 8000;

5.in (set)\ not in (set)

#练习:查询部门为10,20,30部门的员工信息
SELECT last_name,salary,department_id
FROM employees
where department_id = 10 or department_id = 20 or department_id = 30;
#或
SELECT last_name,salary,department_id
FROM employees
WHERE department_id IN (10,20,30);

#练习:查询工资不是6000,7000,8000的员工信息
SELECT last_name,salary,department_id
FROM employees
WHERE salary NOT IN (6000,7000,8000);

6.LIKE :模糊查询

% : 代表不确定个数的字符 (0个,1个,或多个)

#练习:查询last_name中包含字符'a'的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%';

#练习:查询last_name中以字符'a'开头的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE 'a%';

#练习:查询last_name中包含字符'a'且包含字符'e'的员工信息
#写法1:
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%' AND last_name LIKE '%e%';
#写法2:
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%e%' OR last_name LIKE '%e%a%';

_ :代表一个不确定的字符

转义字符: \(代表后面一个符号仅为符号)

ESCAPE:定义后面的一个字符当作转义字符使用

#练习:查询第3个字符是'a'的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '__a%';

#练习:查询第2个字符是_且第3个字符是'a'的员工信息
#需要使用转义字符: \ 
SELECT last_name
FROM employees
WHERE last_name LIKE '_\_a%';

#或者  (了解)
SELECT last_name
FROM employees
WHERE last_name LIKE '_$_a%' ESCAPE '$';

7.REGEXP \ RLIKE :正则表达式

SELECT 'shkstart' REGEXP '^shk', 'shkstart' REGEXP 't$', 'shkstart' REGEXP 'hk'
FROM DUAL;

SELECT 'atguigu' REGEXP 'gu.gu','atguigu' REGEXP '[ab]'
FROM DUAL;

三、逻辑运算符

1.or  and

SELECT last_name,salary,department_id
FROM employees
#where department_id = 10 or department_id = 20;
#where department_id = 10 and department_id = 20;
WHERE department_id = 50 AND salary > 6000;

2.not

SELECT last_name,salary,department_id
FROM employees
#where salary not between 6000 and 8000;
#where commission_pct is not null;
WHERE NOT commission_pct <=> NULL;

3.XOR 异或:追求的"异"

筛选 满足前面不满足后面的满足后面不满足前面的

SELECT last_name,salary,department_id
FROM employees
WHERE department_id = 50 XOR salary > 6000;

注意:AND的优先级高于OR

优先级弄不懂加小括号

4.位运算符: & |  ^  ~  >>   <<

转换为2进制,上下排列,逐位进行运算

&:且

|:或

^:异或

~:取反

<<:二进制左移

>>:二进制右移

SELECT 12 & 5, 12 | 5,12 ^ 5 
FROM DUAL;

SELECT 10 & ~1 FROM DUAL;

#在一定范围内满足:每向左移动1位,相当于乘以2;每向右移动一位,相当于除以2。
SELECT 4 << 1 , 8 >> 1
FROM DUAL;

标签:salary,last,name,employees,基础,运算符,MySQL,id,SELECT
From: https://blog.csdn.net/weixin_47062560/article/details/141960994

相关文章

  • scala入门基础(1)
    一。思维导图   二。案例案例1.分别使用val和var定义一个变量name使用val同时声明多个变量。操作步骤:(1)打开Windows命令控制台,输入scala并按【Enter】键,进入Scala的解释器。(2)使用val定义一个变量name。输入valname="scala"并按【Enter】键,可以看到变量定义成功......
  • java集合基础练习题
    List集合.ArrayList,LinkedList,Vector三者的相同点与不同点?(“Vector”可百度)【面试题】共同点:他们都实现了List接口,意味着他们具有相同的基本操作,如添加、删除、获取元素有序性和可重复性,他们都是有序的,即插入顺序和迭代顺序相同,都允许存储重复的元素都可以动态调整大......
  • oem mysql 主备管监控最佳推荐
    创建主备关系系统,对主备和同步一览无余关键性能指标图标展现查看关键信息,这部分完全自定义 创建监控指标,健康同步状态(完全自定义):记录实例和角色状态 监控代码如下: ps-ef|grepmysqld|grepmysql|grepbasedir|awk-Fmysqld'{print$2}'|awk'{print$1"="$7}......
  • python测试开发基础---threading
    1.核心概念线程(Thread):线程是轻量级的进程,在同一进程内可以并行执行多个任务。线程共享进程的资源,如内存和文件描述符,但每个线程有自己的执行栈和局部变量。全局解释器锁(GIL):Python中的GIL限制了同一进程中多个线程的真正并行执行。它确保同一时间只有一个线程可以执行Pyth......
  • python测试开发基础---multiprocessing.Pool
    1.基础概念多进程编程:Python中的multiprocessing模块允许你使用多个进程并行执行任务,这可以提高程序的性能,尤其是在需要大量计算的情况下。Pool类是一个常用工具,可以帮助你更轻松地管理多个进程。进程池:进程池是一个包含多个工作进程的池子,用来处理多个任务。你可以将任......
  • 【整理】【Jinja2 模板】基础
    Jinja2是基于python书写的模板引擎。jinja2必知必会1、jinja2文件以.j2为后缀,也可以不写后缀。2、jinja2中存在三种定界符注释:{{##}}变量引用:{{var}}逻辑表达:{%%}3、jinja2逻辑控制条件表达:{%if%}......{%endif%}案例:循环控制:案例:注意:......
  • 基础篇:到底应该怎么理解“平均负载”
    root@Test-MySQL:/home/zoom/test#uptime08:41:38up3days,5:40,2users,loadaverage:0.00,0.03,0.02我相信你对前⾯的⼏列⽐较熟悉,它们分别是当前时间、系统运⾏时间以及正在登录⽤户数。⽽最后三个数字呢,依次则是过去1分钟、5分钟、15分钟的平均负载(LoadAvera......
  • 信息学奥赛初赛天天练-84-NOIP2014普及组-基础题3-总线、存储器、邮件协议、二叉树、
    信息学奥赛初赛天天练-84-NOIP2014普及组-基础题3-总线、存储器、邮件协议、二叉树、满二叉树、顶点的度、无向图、有向图PDF文档公众号回复关键字:202409061NOIP2014普及组基础题36CPU、存储器、I/O设备是通过()连接起来的A接口B总线C控制线D系统文......
  • mysql监控脚本
    ps-ef|grepmysqld|grepmysql|grepbasedir|awk-Fmysqld'{print$2}'|awk'{print$1"="$7}'|awk-F='{print$2"/bin/mysql"$4}'>tmp0012>&1whilereadLinedoecho"[client]po......
  • 通义灵码怎么样?分为哪些版本,看看基础能力多少分?
    通义灵码,是一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云的云服务使用场景调优,助力开发者高效、流畅的编码。下载使用通义灵码:<https://tongyi.ali......