算数运算符
在SQL中“+”没有连接的作用,就表示加法运损,此时,将会字符串转成数值
" = - * /(div) %(mod) "
100+'1' == String (1001)字符串,在java中+有字符串连接的作用,当运算中出现字符,则就自动转换成字符串
#SQL =>100+'1' = 101(单纯加法)“其中字母是0代表的值”
SELECT 100 + 'A'
FROM DUAL;#得到的值是100;
SELECT 100 + NULL
FROM DUAL;#得到的值是NULL,NULL值参与运算得到的值都是NULL;(参与判断 null = null 得到的还是null)
比较运算符:
“> < <= >= !=(<>) <=>(安全等与,判断null值)”
###########################
<=>:安全等于,
/*
在没有null参与的时候,他的作用和=相同
为了NULL而生的
*/
#不等于运算符
###############################
<>(!=)与=
判断值是否相同(=反之判断<>(!=))
1.如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的是每个字符串中字符的ANSI编码是否相等。
2.如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。
3.如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。
4.如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。
(其他的大于等于小于等于判断值是否相同都是样子)
非符号类型的运算符
空运算符
IS NULL or ISNULL()\IS NOT NULL
#是null返回值是1否者就是0常常和过滤关键字WHERE使用
#LEAST() \ GREATEST()
最大最小
#BETWEEN 条件一 AND条件二 (包括了边界值)
SELECT salary FROM employees
WHERE salary BETWEEN 6000 AND 100000;
#不在
SELECT salary FROM employees
WHERE salary NOT BETWEEN 6000 AND 100000;
#IN (SET)\NOT IN (SET)
#LIKE :模糊查询
#%:不确定字符(0个,1个2个无数个....)
#练习:查询last_name中包含字符‘a'的员工信息
#查询第二个字符是’a'的员工信息
#下滑线“_”表示的是一个不确定的字符
#如果真的是_那么需要使用转移字符“\”s
select last_name
from employees
where last_name like '_a%';
逻辑运算符
#NOT OR !
非得关系
#AND OR &&
且的关系
逻辑与(AND或&&)运算符是当给定的所有值均为非0值,并且都不为NULL时,返回
#OR 或 ||
或的关系
逻辑或(OR或||)运算符是当给定的值都不为NULL,并且任何一个值为非0值时,则返回1,否则返回0;当一个值为NULL,并且另一个值为非0值时,返回1,否则返回NULL;当两个值都为NULL时,返回NULL。
#XOR异或
异或得关系
逻辑异或(XOR)运算符是当给定的值中任意一个值为NULL时,则返回NULL;如果两个非NULL的值都是0或者都不等于0时,则返回0;如果一个值为0,另一个值不为0时,则返回1。
当AND和OR并用的时候AND 高于 OR
为运算符
& | ^ ~ << >>
与 或 异或 按位取反 按位右移 按位左移
小作业
#作业
# 1.选择工资不在5000到12000的员工的姓名和工资
SELECT last_name,salary
FROM employees
WHERE salary NOT BETWEEN 5000 AND 12000;
# 2.选择在20或50号部门工作的员工姓名和部门号
SELECT last_name,first_name,department_id
FROM employees
#where department_id = 20 or department_id = 50;
WHERE department_id IN (20,50);
# 3.选择公司中没有管理者的员工姓名及job_id
SELECT last_name ,job_id
FROM employees
WHERE ISNULL(manager_id );
# 4.选择公司中有奖金的员工姓名,工资和奖金级别
SELECT last_name,salary*(1+commission_pct) AS 'totalSalary',commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
# 5.选择员工姓名的第三个字母是a的员工姓名
SELECT last_name FROM employees
WHERE last_name LIKE '__a%';
# 6.选择姓名中有字母a和k的员工姓名
SELECT last_name FROM employees
WHERE last_name LIKE '%a%' AND last_name LIKE '%k%';
# 7.显示出表 employees 表中 first_name 以 'e'结尾的员工信息
SELECT first_name FROM employees
WHERE first_name LIKE '%e';
# 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种
SELECT last_name,department_id,job_id
FROM employees
WHERE department_id BETWEEN 80 AND 100;
# 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id
SELECT last_name,salary 'totalSalary',manager_id
FROM employees
WHERE manager_id IN(100,101,110);