PART4运算符
1.算数运算符
+、-、*、/、%(加、减、乘、除、取模)
注意:sql中,不同于java,“+”仅有加法作用,没有连接作用(即会将字符串隐式转化为数值)
取模时结果的符号与被模数一致
2.比较运算符
左右两边操作数进行比较,比较结果为真时返回1;为假时返回0;其他情况返回NULL。
2.1第一组
=,<=>,< >,!=,<,<=,>,>=
其他的都比较好理解,但特别注意<=>含义:安全等于,用于解决NULL问题
比较等于和安全等于的区别:
例如:查询commission_pct为NULL的数据
SELECT commission_pct FROM employees WHERE commission_pct=NULL;
运行结果:
SELECT commission_pct FROM employees WHERE commission_pct <=> NULL;
原因:使用等号时,有NULL的运算结果都为NULL;所以得用安全等于来避免这个事情发生。
2.2第二组
2.2.1 IS NULL,IS NOT NULL,ISNULL
和安全等于符号有异曲同工之妙,都可以用于解决有关于NULL的问题
例如:查询commission_pct为NULL的数据
SELECT commission_pct FROM employees WHERE commission_pct IS NULL;
SELECT commission_pct FROM employees WHERE ISNULL(commission_pct);
查询commission_pct不为NULL的数据
SELECT commission_pct FROM employees WHERE commission_pct IS NOT NULL;
2.2.2 LEAST(),GREATEST()
一个是求其最小值,另外一个是求其最大值。
2.2.3 BETWEEN...AND...
查询一个连续的区间,包括其边界值。
SELECT salary FROM employees WHERE salary BETWEEN 6000 AND 8000;
等价于
SELECT salary FROM employees WHERE salary >= 6000 AND salary <= 8000;
2.2.4 IN(set),NOT IN(set)
查出来的是一个离散的集合,找到的是符合set条件内的数据。
SELECT salary FROM employees WHERE department_id IN(10,30);
等价于
SELECT salary FROM employees WHERE department_id=10 OR department_id=30;
2.2.5 LIKE模糊查询
当不确定要查询的数据在哪个精确的位置时,会使用LIKE关键字进行查询。
LIKE关键字一般搭配着%或_进行使用,%表示通配任意N个字符,_表示1个不确定字符。
例1:查询last_name中包含字符“a"的员工信息。
SELECT last_name FROM employees WHERE last_name LIKE '%a%';
例2:查询last_name以字符"a"为开头的员工信息。
SELECT last_name FROM employees WHERE last_name LIKE 'a%';
例3:查询last_name第二个字符为"a"的员工信息。
SELECT last_name FROM employees WHERE last_name LIKE '_a%';
(注意:这里第二个字符为a,则有一个下划线;第三个字符为a,则有两个下划线)
3.逻辑运算符
||,&&,!,XOR(或,与,非,异或)
注意:and的优先级比or高,要是写sql语句时判断不了优先级,则将需要先算的加小括号。
4.位运算符(了解)
PART5排序与分页
排序
若没有使用排序操作,则默认按数据添加顺序显示。
若要自定义排序,则用ORDER BY对查询列的数据排序
升序:ASC ,降序:DESC
例1:按照员工的工资降序去排序员工表。
SELECT last_name,salary FROM employees ORDER BY salary DESC;
注意:有ORDER BY和WHERE同时出现时,写的格式一定是:FROM...WHERE...ORDER BY...
若给某一列起别名,此别名能在ORDER BY中使用,但不能在WHERE中使用。
二级排列(多级排列同原理)
例2:显示员工信息,按照department_id的降序排列,再按照salary的升序排列。
SELECT employee_id,salary,department_id FROM employees ORDER BY department_id DESC,salary ASC;
分页
当有太多条数据时,可以使用LIMIT关键字进行数据的分页显示。
形式:LIMIT 位置偏移量,条目数;
位置偏移量从0开始,即第一条数据的位置偏移量为0。
例:表中有107条数据,显示第32,33条数据。
SELECT employee_id,last_name FROM employees LIMIT 31,2;
ps:在8.0的版本时也可以写成
SELECT employee_id,last_name FROM employees LIMIT 2 OFFSET 31;