MySQL基础_02运算符

453 阅读1分钟

1. 算术运算符: + - * / div % mod

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

2. 比较运算符

2.1 = <=> <> != < <= > >=

2.2

  1. IS NULL \ IS NOT NULL \ ISNULL
  2. LEAST() \ GREATEST
  3. BETWEEN 条件下界1 AND 条件上界2 (查询条件1和条件2范围内的数据,包含边界)
  4. in (set)\ not in (set)
  5. LIKE :模糊查询。 _ :代表一个不确定的字符
    • “%”:匹配0个或多个字符。
    • “_”:只能匹配一个字符。 转义字符:ESCAPE '$'或者\。。。
  6. REGEXP \ RLIKE :正则表达式

3. 逻辑运算符: OR || AND && NOT ! XOR

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

------------------------------------------------------------

练习

1.选择工资不在5000到12000的员工的姓名和工资

SELECT last_name,salary
FROM employees
#where salary not between 5000 and 12000;
WHERE salary < 5000 OR salary > 12000;

2.选择在20或50号部门工作的员工姓名和部门号

SELECT last_name,department_id
FROM employees
//# where department_id in (20,50);
WHERE department_id = 20 OR department_id = 50;

3.选择公司中没有管理者的员工姓名及job_id

SELECT last_name,job_id,manager_id
FROM employees
WHERE manager_id IS NULL;

SELECT last_name,job_id,manager_id
FROM employees
WHERE manager_id <=> NULL;

4.选择公司中有奖金的员工姓名,工资和奖金级别

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


SELECT last_name,salary,commission_pct
FROM employees
WHERE NOT commission_pct <=> 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%k%' OR last_name LIKE '%k%a%';
//#where last_name like '%a%' and last_name LIKE '%k%';

7.显示出表 employees 表中 first_name 以 'e'结尾的员工信息

SELECT first_name,last_name
FROM employees
WHERE first_name LIKE '%e';

SELECT first_name,last_name
FROM employees
WHERE first_name REGEXP 'e$'; # 以e开头的写法:'^e'

8.显示出表 employees 部门编号在 80-100 之间的姓名、工种

SELECT last_name,job_id
FROM employees
#方式1:推荐
WHERE department_id BETWEEN 80 AND 100;
#方式2:推荐,与方式1相同
#where department_id >= 80 and department_id <= 100;
#方式3:仅适用于本题的方式。
#where department_id in (80,90,100);

SELECT * FROM departments;

9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id

SELECT last_name,salary,manager_id
FROM employees
WHERE manager_id IN (100,101,110);