1.算术运算符
-- 算数运算符:+ - * / div % mod
1.
SELECT 100, 100+ 0,100-0,100+50,100-50,100+50*30,100+35.5,100-35.5
FROM DUAL;#DUAL是虚拟表。
2.
SELECT 100 + '1' #在java语言中结果是1001
-- 在MySQL + 没有连接作用,就表示加法运算。
-- 此时会将字符串转换为数值(隐式转换)。
FROM DUAL;
3.
SELECT 100 + 'a' #此时将a看作0处理。
FROM DUAL;
4.
空值参与运算,结果也为空null。
SELECT 100 + NULL
FROM DUAL;
5.注意
6.乘除
注意:
默认除结果是double类型,默认是除不尽的。
7.取模
注意:取模最后结果是否为正数,看被取模数是不是正数。
2.比较运算符
1. = <=> <> != < <= > >=
SELECT 1=2 , 1!=2 , '1'=1 , 1='a' , 0='a', 'a'='b' #隐式转换,把'1'这个字符串转化成了数值1.
-- 把'a'看作是0了。如果是'a'='b'就不会隐式换 了。
-- 两边都是字符串,则按照ANSI规则进行比较
FROM DUAL;
2.如果有null参与情况
--只要有null参与,结果就为null。
SELECT 1 = NULL, NULL= NULL
FROM DUAL;
3.<=>:安全等于运算符
4. is null \ is not null \ isnull
1. IS NULL
2. IS NOT NULL
5.LEAST
格式:-- LEAST(value1,value2,...) \ GREATEST(value1,value2,...)
SELECT LEAST('g','b','t','m'),GREATEST('g','b','t','m')
FROM DUAL;
6.between and
1.第一种写法:
-- BETWEEN 条件一 AND 条件二 (查询是包括两个条件一范围内数据,包含边界)
SELECT id,`name`
from a
WHERE id BETWEEN 1 and 2;
FROM a;
2.第二种写法
SELECT id,`name`
from a
WHERE id >=1 && id <= 2;
FROM a;
3.反例
7. IN (SET) \ NOT IN (SET)
1.方法一:
-- IN (SET) \ NOT IN (SET)
-- 查询id为1.3
SELECT id,`NAME`
FROM a
WHERE id = 1 OR id = 3 OR id <=> NULL;#=null是错误的,要用<=>
2.方法二:
SELECT id,`NAME`
FROM a
WHERE id IN(1,3,NULL);#NULL查询不出来,其他可以
3.方法三:
SELECT id,`NAME`
FROM a
WHERE id NOT IN(1,3);#NULL查询不出来,其他可以
8.like:模糊查询
1.%查询内容%
-- %代表不确定个数的字符
SELECT id,`NAME`
FROM a
WHERE `name` LIKE '%m%';#可以忽略大小写
2.查询内容%:只有一个%
-- 查询name中以字符T开头的信息
SELECT id,`NAME`
FROM a
WHERE `name` LIKE 'T%';
3.查询一个名字,包含两个
既查询name中包含T且包含E的
4.查询name中指定位置的字母的方法
-- 查询第二个字符是E的名字
-- _代表一个不确定字符
SELECT `name`
FROM a
WHERE `name` like '_e%';#'_e%'不能包含空格
-- 查询第三个字符是m的名字
-- __代表两个不确定字符.
SELECT `name`
FROM a
WHERE `name` like '__m%';