DQL

1.简单查询

查询一个字段
  1. select 字段名 from 表名;

查询两个字段
  1. select 字段名1,字段名2 from 表名;

查询多个字段
  1. select 字段名1,字段名2,字段名3,... from 表名;
  2. -- 不推荐
  3. -- 效率低、可读性差
  4. select * from 表名;

起别名
  1. -- 起别名 as关键字(只是显示,原表关键字不变)
  2. select DNAME as new from dept;
  3. -- 只用空格也行
  4. select DNAME new from dept;
  5. -- 这个时候别名不能有空格
  6. -- 如果必须要在别名中加空格,可以用 '' 或者 "" 括起来 建议统一用 ''
  7. select DNAME 'new 1' from dept;
  8. -- 别名是中文用''
  9. select DNAME '年薪' from dept;

字段使用数学表达式
  1. 字段可以参与 ' +-*/ '运算
  2. select ENAME,SAL*100 from emp;

2.条件查询

  1. select
  2. ...
  3. from
  4. ...
  5. where
  6. 条件;
  1. /*
  2. <
  3. <=
  4. >
  5. >=
  6. <> 或 !=
  7. >= and <= 相当于 between ... and ... 左小右大 左闭右闭
  8. */
  9. select EMPNO, ENAME from emp where SAL = 800;
  10. -- null不能用 = ,只能用 is
  11. select EMPNO, ENAME from emp where COMM is null
  1. select EMPNO, ENAME from emp where JOB = 'MANAGER' and SAL = 2450;
  2. select EMPNO, ENAME from emp where SAL = 800 or SAL = 1600;
  3. -- and or 同时出现 and 的优先级大于 or 需要加()
  4. -- in or
  5. select EMPNO, ENAME, JOB from emp where JOB = 'MANAGER' or JOB = 'SALESMAN';
  6. select EMPNO, ENAME, JOB from emp where JOB in ('MANAGER', 'SALESMAN');
  7. select EMPNO, ENAME, JOB from emp where JOB not in ('MANAGER', 'SALESMAN');
  1. -- % :任意多个
  2. -- _ :任意一个
  3. -- %o% 中间有o
  4. -- %o 末尾是o
  5. -- o% 开始是o
  6. select ENAME from emp where ENAME like '%o%';
  7. -- _A% 第二个为a
  8. select ENAME from emp where ENAME like '_A%';
  9. -- \转义字符 \_
  10. select ENAME from emp where ENAME like '%\_%';

3. 排序

  1. -- order
  2. -- 指定降序 desc
  3. -- 指定升序 asc
  4. select ENAME,SAL from emp order by SAL;
  5. select ENAME,SAL from emp order by SAL desc;
  6. select ENAME,SAL from emp order by SAL asc;

多字段排序
  1. -- 第一个字段主导 sal,只有当 sal 相同时,才用到第二个字段 ename
  2. select ENAME,SAL from emp order by SAL, ENAME;

练习
  1. -- 找出sal 12503000 的员工,按照降序
  2. select
  3. ENAME, SAL
  4. from
  5. emp
  6. where
  7. SAL between 1250 and 3000
  8. order by
  9. SAL desc ;
  10. -- 关键字顺序不能变 s -> f -> w -> ob