目录
选择与投影:
查询emp表(选择——行):
SELECT * FROM emp;
查询emp表的其中两列(投影——列):
SELECT empno,ename FROM emp;
算术运算符:
运算规则:先乘除后加减,括号可以提高计算优先权
工资涨了300
SELECT ename, sal, sal+300 FROM emp;
空值null:
- 空值是指一种无效的、未赋值、未知的或不可用的值。
- 空值不同于零或者空格。
- 任何包含空值的算术表达式运算后的结果都为空值NULL。
SELECT ename, job, sal, comm ,sal+comm FROM emp;
列别名:
使用列别名的方法:
- 方式1:列名 列别名
- 方式2:列名 AS 列别名
以下三种情况列别名两侧需要添加双引号
- 列别名中包含有空格
- 列别名中要求区分大小写
- 列别名中包含有特殊字符
SELECT ename AS nname, sal nsal FROM emp;
SELECT empno "编 号",ename "姓 名" FROM emp;
消除重复行:
distinct
SELECT DISTINCT deptno FROM emp;
查看表结构:
DESC emp;
限定条件:
SELECT ename, job, deptno FROM emp WHERE deptno=20;
字符型数据作为被比较的值时,必须用单引号引起来
字符型数值区分大小写
日期型数值作为被比较的值时,必须用单引号引起来
比较运算符的不等于:<>
SELECT ename, job, deptno FROM emp WHERE job='CLERK';
SELECT ename, hiredate, deptno FROM emp WHERE hiredate > '1985-01-01';
特殊比较运算符:
- BETWEEN..AND..(可用>= <=等价替换)
使用BETWEEN .. AND.. 运算符来判断要比较的值是否在某个范围内。
SELECT ename, sal FROM emp WHERE sal BETWEEN 1000 AND 1500;
- IN运算符(与or等价)
使用IN运算符判断要比较的值是否和集合列表中的任何一个值相等。
SELECT empno, ename, sal, mgr FROM emp WHERE mgr IN (7902, 7566, 7788);
- LIKE运算符
使用LIKE运算符判断要比较的值是否满足部分匹配,也叫模糊查询。
模糊查询中两个通配符:
% 代表零或任意更多的字符
_ 代表一个字符
查询名字首字母是S的人
SELECT ename FROM emp WHERE ename LIKE 'S%';
查询名字第二个字母是L的人
SELECT ename FROM emp WHERE ename LIKE '_L%';
查询 JOB 以“MAN_”开头的雇员信息。
SELECT ename,job FROM emp WHERE job LIKE 'MAN@_%' ESCAPE '@';
- IS NULL 运算符
使用 IS NULL 运算符来判断要比较的值是否为空值NULL
SELECT ename, mgr FROM emp WHERE mgr IS NULL;
逻辑运算符:
- 逻辑与(AND):
AND: 要求两个条件都为真,结果才为真
SELECT empno, ename, job, sal FROM emp WHERE sal>=1100 AND job='CLERK';
- 逻辑或(OR):
OR: 只需要两个条件中的一个为真,结果就返回真
SELECT empno, ename, job, sal FROM emp WHERE sal>=1100 OR job='CLERK';
- 逻辑非(NOT)
NOT运算符还可以和BETWEEN…AND、LIKE、IS NULL一起使用
... WHERE deptno NOT IN (10, 20)
... WHERE sal NOT BETWEEN 3000 AND 5000
... WHERE ename NOT LIKE 'D%’
... WHERE mgr IS NOT NULL
SELECT ename, job FROM emp WHERE job NOT IN ('CLERK','MANAGER','ANALYST');
运算符的优先级:
()优先于所有优先级!
ORDER BY子句:
使用ORDER BY子句能对查询结果集进行排序:
- 可以按照列名、表达式、列别名、结果集的列序号排序
- ASC: 升序,默认值 DESC: 降序
- ORDER BY 子句必须写在SELECT语句的最后
- 参与排序的多列都可以指定升序或者降序
- ORDER BY子句中可以写没在SELECT列表中出现的列
SELECT ename, job, deptno, hiredate FROM emp ORDER BY hiredate;
SELECT ename, job, deptno, hiredate FROM emp ORDER BY hiredate DESC;
限制记录的行数:
SELECT 字段列表 FROM 数据源 LIMIT [start,]length;
说明:
1.limit接受一个或两个整数参数。start表示从第几行记录开始输出,length表示输出的记录行数。
2.表中第一行记录的start值为0(不是 1)。
查询员工表的前5条记录
SELECT ename, deptno, sal FROM emp LIMIT 0,5;