运算符

运算符:

     算术运算符:

             + - * /(div) %(mod)

   加减乘除运算符:

例:SELECT 100,100+0,100-0,100+50,100+50-30,100+35.5,100-35.5
   FROM DUAL;

   SELECT 100+'1' #在sol中,+没有连接的作用,就表示加法的运算,会将字符串转换为数值(隐式转换)
   FROM DUAL;

   SELECT 100+'a' #此时将'a'看做0处理
   FROM DUAL;

   SELECT 100+NULL
   FROM DUAL;
  • 由运算结果结论:

                       1. 一个整数类型的值对整数进行加法和减法操作,结果还是一个整数;

                       2. 一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数;

                       3. 加法和减法的优先级相同,进行先加后减操作与进行先减后加操作的结果是一样的;

                       4. 在Java中,+的左右两边如果有字符串,那么表示字符串的拼接。但是在MySQL中+只表示数

                           值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。(补充:MySQL

                           中字符串拼接要使用字符串函数CONCAT()实现)

 

    乘法与除法运算符:

例:SELECT 100,100*1,100*1.0,100/1.0,100/2,100+2*5/2,100/3,100 DIV 0  
                                               #分母如果为0,则结果为null
  FROM DUAL;
  • 由运算结果得出结论:

                           1. 一个数乘以整数1和除以整数1后仍得原数;

                           2. 一个数乘以浮点数1和除以浮点数1后变成浮点数,数值与原数相等;

                           3. 一个数除以整数后,不管是否能除尽,结果都为一个浮点数;

                           4. 一个数除以另一个数,除不尽时,结果为一个浮点数,并保留到小数点后4位;

                           5. 乘法和除法的优先级相同,进行先乘后除操作与先除后乘操作,得出的结果相同。

                           6. 在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL。

 

        求模(求余)运算符:

    例:SELECT 12%3,12%5,12 MOD -5,-12%5,-12%-5,10%3
    FROM DUAL;
#练习:查询员工id为偶数的员工信息
   SELECT *
   FROM employees
   WHERE employee_id%2=0;   #employee_id为员工字段

 

        比较运算符:

                  比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果

                  为假则返回0,其他情况则返回NULL。

                  比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。

                         =      <=>       <>(!=)        <       <=       >        >=

  • (=)等号运算符:

                         等号运算符(=)判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0。

                      在使用等号运算符时,遵循如下规则:

                                     1. 如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的

                                         是每个字符串中字符的ANSI编码是否相等。

                                     2. 如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。

                                     3. 如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。

例:SELECT 1=2,1!=2,1='1',1='a',0='a' #字符串存在隐式转换,如果转换数值不成功,则看做0
FROM DUAL;

SELECT 'a'='a','ab'='ab','a'='ab'   #两边都是字符串的话,则按照ANSI的比较规则进行比较
FROM DUAL;

SELECT 1=NULL,NULL=NULL  #只要有mull参与判断,结果就为null
FROM DUAL;

SELECT last_name,salary,commission_pct
FROM employees
#WHERE salary =6000
WHERE commission_pct=NULL;  #null与null执行,不会有任何的结果
  • 安全等于运算符:

              安全等于运算符(<=>)与等于运算符(=)的作用是相似的, 唯一的区别 是‘<=>’可

               以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个

               操作数为NULL时,其返回值为0,而不为NULL。

 #<=>安全等于    为null而生
   SELECT 1<=>2,1<=>'1',1<=>'a'
FROM DUAL;

  SELECT 1<=>NULL,NULL<=>NULL # 两边都是null结果为trun(1)。
  FROM DUAL;
 
#查询表中commission_pct为null的数据有哪些
 SELECT last_name,salary,commission_pct
 FROM employees
 WHERE commission_pct<=>NULL; #比较两个都为null结果为1,这就能显示null的数据结果了

 

  • (空)或非空运算符:

    空运算符 IS NOT NULL

    非空运算符(IS NULL或者ISNULL)判断一个值是否不为NULL,如果不为NULL则返回1,否则返回0。

#IS NULL \ IS NOT NULL \ ISNULL

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pcT IS NULL;

SELECT last_name,salary,commission_pct
FROM employees
WHERE ISNULL(commission_pct);#这个是函数 效果都一样的 三种方法都一样 查看结果为null的

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;  #查看的结果显示不为null的

  • 最小和最大值运算符:

                 LEAST() 最小 \ GREATEST() 大

 #LEAST() 最小 \ GREATEST()  大

  SELECT LEAST('g','b','m'),GREATEST('g','b','t','m')  #查出最小值为b,最大值为t
  FROM DUAL;

  SELECT LEAST(first_name,last_name)
  FROM employees;

 

  • BETWEEN AND 运算符:

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

    SELECT employee_id,last_name,salary
    FROM employees
    WHERE salary BETWEEN 6000 AND 8000;
    #也可以用逻辑运算符来写
    WHERE salary >= 6000 && salary <= 8000;

 

  • IN运算符 :

    #IN 、 NOT IN                 (指定的查询,就是离散值的查找)
    #查询部门为10,20,30部门的员工信息        

     SELECT last_name,salary,department_id
     FROM employees
    #WHERE department_id =10 OR department_id =20 OR department_id =30;#传统方法
     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);

 

  • LIKE 运算符 :

    LIKE运算符主要用来匹配字符串,通常用于模糊匹配

#LIKE:模糊查询
# % :代表不确定个数的字符

#例:查询last_name中包含字符'a'开头的员工信息
SELECT last_name,salary,department_id
FROM employees
WHERE last_name LIKE 'a%'

#例:查询last_name中包含字符'a'且包含字符'e'的员工信息
SELECT last_name,salary,department_id
FROM employees
WHERE last_name LIKE '%a%e%' AND last_name LIKE '%e%a%'

# _ :代表一个不确定的字符,一个下划线代表一个不确定的字符
#例: 查询第2个字符是'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 '$';#ESCAPE就要告诉服务器这是转义的意思

 

  • REGEXP \ RLIKE: 正则表达式:

                      REGEXP运算符用来匹配字符串

                      语法格式为: expr REGEXP 匹配条件 ,如果expr满足匹配条件返回1,否则为0

              REGEXP运算符在进行匹配时,常用的几种通配符:

               (1)‘^’匹配以该字符后面的字符开头的字符串。 
(2)‘$’匹配以该字符前面的字符结尾的字符串。
(3)‘.’匹配任何一个单字符。
(4)“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,
使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
(5)‘*’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字,
而“*”匹配任何数量的任何字符。

 

  • 逻辑运算符:

 #逻辑运算符:AND(&&)     OR(||)     NOT(!)     XOR

#XOR '异' 就是一个真一个假
 SELECT last_name,salary,department_id
FROM employees
WHERE department_id=50 XOR salary>6000;

 

  • 位运算符: & | ^ ~ >> <<

posted @   zjw_rp  阅读(156)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示