本文共 2658 字,大约阅读时间需要 8 分钟。
MySQL支持常见的算术运算符,包括加、减、乘、除、模运算。需要注意的是,除法默认会返回浮点数结果,若需要整数结果,可以使用DIV函数。
SELECT eid FROM t_employee WHERE eid % 2 = 0;
SELECT eid, basic_salary / 12 AS "日薪" FROM t_salary;
performance_salary 表存在):SELECT eid, basic_salary + performance_salary * (1 + commission_pct) FROM t_salary;
比较运算符用于筛选数据,常用的包括等于、不等于、大于、小于等于等操作。注意 NULL 值的处理,建议使用 IS NULL 或 IS NOT NULL 来判断,而不是直接比较 NULL 与其他值。
basic_salary 不等于 10000 的员工信息:SELECT eid, basic_salary FROM t_salary WHERE basic_salary != 10000;
commission_pct 等于 0.40 的员工信息:SELECT eid, commission_pct FROM t_salary WHERE commission_pct = 0.40;
commission_pct 等于 NULL 的员工信息:SELECT eid, commission_pct FROM t_salary WHERE commission_pct IS NULL;
逻辑运算符用于组合多个条件,常用来筛选复杂的数据。AND 用于同时满足多个条件,OR 用于满足任意一个条件。NOT 用于否定条件。
SELECT * FROM t_employee WHERE gender = '男' AND birthday < '1990-01-01';
SELECT eid, basic_salary FROM t_salary WHERE job_id = 1 OR job_id = 2;
BETWEEN 用于在两个值之间筛选数据,NOT BETWEEN 用于排除该范围。IN 和 NOT IN 则用于筛选集合中的元素。
SELECT eid, basic_salary FROM t_salary WHERE basic_salary BETWEEN 9000 AND 12000;
SELECT eid, basic_salary FROM t_salary WHERE eid IN (1, 3, 5);
LIKE 和通配符 %、 _ 用于进行模糊查询,匹配部分字符。NOT LIKE 则用于排除不符合的结果。
SELECT * FROM t_employee WHERE ename LIKE '%冰%';
SELECT * FROM t_employee WHERE ename LIKE '李_';
位运算符用于对二进制数据进行操作,常见的包括按位与、或、异或、取反等操作。
SELECT 2 & 3, 2 | 3, 2 ^ 3, ~3;
关联查询用于从多个表中获取相关数据,常见的有内连接、外连接和自连接等。
笛卡尔积是将两张或多张表的所有行组合在一起,通常会因为缺少关联条件而导致大量冗余数据。
SELECT ename, dname FROM t_employee, t_department;
关联条件可以通过 WHERE、ON、USING 等方式指定。WHERE 可用于所有关联类型,而 ON 和 USING 只能与 JOIN 结合使用。
WHERE 后面:SELECT ename, dname FROM t_employee, t_department WHERE t_employee.dept_id = t_department.did;
ON 后面(显式内连接):SELECT ename, dname FROM t_employee INNER JOIN t_department ON t_employee.dept_id = t_department.did;
内连接用于保留仅有匹配的行,通常用于两个表之间的关联。
SELECT ename, dname FROM t_employee INNER JOIN t_department ON t_employee.dept_id = t_department.did;
外连接用于保留没有匹配的行,通常用于左连接或右连接。
SELECT emp.ename, mgr.ename FROM t_employee AS empLEFT JOIN t_employee AS mgr ON emp.mid = mgr.eid;
自连接用于将同一张表视为两个不同的表进行操作。
SELECT emp.ename, mgr.ename FROM t_employee AS empLEFT JOIN t_employee AS mgr ON emp.mid = mgr.eid;
希望这些内容能帮助你更好地理解和使用MySQL运算符及关联查询!
转载地址:http://nedfk.baihongyu.com/