千家信息网

Oracle 学习之 SQL(二) Restricting and Sorting Data

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,限制SELECT语句的返回行语法:使用WHERE关键字来限制数据行的返回,WHERE子句跟在FROM子句的后面。SQL> select * from emp where deptno=10;
千家信息网最后更新 2026年11月02日Oracle 学习之 SQL(二) Restricting and Sorting Data

限制SELECT语句的返回行

语法:

使用WHERE关键字来限制数据行的返回,WHERE子句跟在FROM子句的后面。

SQL> select * from emp where deptno=10;     EMPNO ENAME      JOB          MGR HIREDATE                   SAL COMM     DEPTNO---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------      7782 CLARK      MANAGER        7839 1981/06/09 00:00:00       2450                   10      7839 KING       PRESIDENT         1981/11/17 00:00:00           5000                   10      7934 MILLER     CLERK       7782 1982/01/23 00:00:00       1300                   10

当WHERE后面的表达式为true时,则返回行,否则跳过改行。

SQL> select * from emp where ename='KING';     EMPNO ENAME      JOB          MGR HIREDATE                   SAL COMM     DEPTNO---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------      7839 KING       PRESIDENT         1981/11/17 00:00:00           5000                   10

字符串是大小写敏感的

SQL> select * from emp where ename='king';no rows selected

条件表达式支持的比较操作符有如下

SQL> select * from emp where sal<2000;     EMPNO ENAME      JOB          MGR HIREDATE                   SAL COMM     DEPTNO---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------      7369 SMITH      CLERK          7902 1980/12/17 00:00:00        800              20      7499 ALLEN      SALESMAN       7698 1981/02/20 00:00:00       1600       300            30      7521 WARD       SALESMAN          7698 1981/02/22 00:00:00       1250       500            30      7654 MARTIN     SALESMAN            7698 1981/09/28 00:00:00       1250      1400         30      7844 TURNER     SALESMAN            7698 1981/09/08 00:00:00       1500         0          30      7876 ADAMS      CLERK          7788 1987/05/23 00:00:00       1100                   20      7900 JAMES      CLERK          7698 1981/12/03 00:00:00        950              30      7934 MILLER     CLERK       7782 1982/01/23 00:00:00       1300                   10

BETWEEN AND 只要值在这个范围内,就返回值

SQL> select * from emp where sal between 1500 and 2000;     EMPNO ENAME      JOB          MGR HIREDATE                   SAL COMM     DEPTNO---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------      7499 ALLEN      SALESMAN       7698 1981/02/20 00:00:00       1600       300            30      7844 TURNER     SALESMAN            7698 1981/09/08 00:00:00       1500         0          30

IN 只要列的值出现在列表中即返回行

SQL> SELECT * FROM EMP WHERE ENAME IN ('SMITH','KING');


EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

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

7369 SMITH CLERK 7902 1980/12/17 00:00:00 800 20

7839 KING PRESIDENT 1981/11/17 00:00:00 5000 10

LIKE 模糊查询

查询所有姓名以S开头的人

SQL> select * from emp where ename like 'S%';     EMPNO ENAME      JOB          MGR HIREDATE                   SAL COMM     DEPTNO---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------      7369 SMITH      CLERK          7902 1980/12/17 00:00:00        800              20      7788 SCOTT      ANALYST        7566 1987/04/19 00:00:00       3000                   20

% 通配符,表示0或多个任意字符

查询所有姓名包含S的人

SQL> select * from emp where ename like '%S%';     EMPNO ENAME      JOB          MGR HIREDATE                   SAL COMM     DEPTNO---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------      7369 SMITH      CLERK          7902 1980/12/17 00:00:00        800              20      7566 JONES      MANAGER        7839 1981/04/02 00:00:00       2975                   20      7788 SCOTT      ANALYST        7566 1987/04/19 00:00:00       3000                   20      7876 ADAMS      CLERK          7788 1987/05/23 00:00:00       1100                   20      7900 JAMES      CLERK          7698 1981/12/03 00:00:00        950              30

_ 通配符表示任意一个字符

查询名字的第二个字符为O的人

SQL> select * from emp where ename like '_O%';     EMPNO ENAME      JOB          MGR HIREDATE                   SAL COMM     DEPTNO---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------      7566 JONES      MANAGER        7839 1981/04/02 00:00:00       2975                   20      7902 FORD       ANALYST           7566 1981/12/03 00:00:00       3000                   20

如果列的值本身就包含%或_字符呢? 用escape关键字转义。

查询名字中含有_的人

SQL> select * from emp where ename like '%\_%' escape '\';no rows selected

过滤NULL值

过滤NULL值不能使用= <>来查询,null有一个专有的判断条件 IS NULL

SQL> SELECT * FROM EMP WHERE COMM IS NULL;     EMPNO ENAME      JOB          MGR HIREDATE                   SAL COMM     DEPTNO---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------      7369 SMITH      CLERK          7902 1980/12/17 00:00:00        800              20      7566 JONES      MANAGER        7839 1981/04/02 00:00:00       2975                   20      7698 BLAKE      MANAGER        7839 1981/05/01 00:00:00       2850                   30      7782 CLARK      MANAGER        7839 1981/06/09 00:00:00       2450                   10      7788 SCOTT      ANALYST        7566 1987/04/19 00:00:00       3000                   20      7839 KING       PRESIDENT         1981/11/17 00:00:00           5000                   10      7876 ADAMS      CLERK          7788 1987/05/23 00:00:00       1100                   20      7900 JAMES      CLERK          7698 1981/12/03 00:00:00        950              30      7902 FORD       ANALYST           7566 1981/12/03 00:00:00       3000                   20      7934 MILLER     CLERK       7782 1982/01/23 00:00:00       1300                   10


查询 字符 关键 关键字 名字 姓名 子句 条件 表达式 通配符 限制 多个 大小 字符串 开头 操作符 数据 范围 语句 语法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 互联网科技网 为想互联网科技怎么样 疫情对互联网科技公司影响 互联网为科技 腾讯阿里互联网科技 奇酷互联网络科技公司 上海卓越科技 互联网 深圳卡尔迅互联网科技有限公司怎么样 互联网和高科技公司 承德科技产业互联网发展 湖南诚度互联网科技有限公司 港股科技和互联网 浙江互联网科技研学营 赶超互联网科技 微信多开 互联网科技与大数据专业 互联网媒体平台算高科技产业 数字互联网科技有限公司 互联网的科技体现在哪里 中国主要互联网科技公司 科技和互联网公司 互联网金融科技平台 科技伦理 互联网公司 金融科技与互联网金融相同和不同 昊天互联网科技有限公司 威龙国际互联网科技公司 明优互联网科技有限公司 湖北辰鑫科技互联网 互联网金融运营模式中的金融科技 银川新华互联网科技学校原画
0