sqlplus教程中文版内容摘要:

‗ANALYST‘,即 JOB 列的值为 ‗CLERK‘和 ‗ANALYST‘中的一个即可。 对于这样的查询,一般可以用或( OR)操作来完成: SQLSELECT ENAME, JOB FROM EMP WHERE JOB=‗CLERK‘ OR JOB=‗ANALYST‘; 如果 JOB 列还可以取多个值,则还需要多个 OR操作,如果使用 IN,就可以用一个简单的 WHERE 子句表示这种要求: SQLSELECT ENAME, JOB FROM EMP WHERE JOB IN ( ‗CLERK‘, ‗ANALYST‘); ENAME JOB SMITH CLERK SCOTT ANALYST ADAMS CLERK JAMES CLERK IFORD ANALYST MILLER CLERK 6 rows selected. 谓词 IN的作用就是检查列值是否等于它后面括弧内的一组值中的某一个,如果等于其中某一个值,则被查询出来。 我们还可以使用 NOT IN 来表示与 IN 完全相反的含义,即选择那些不在列表中的行。 例 查找不是职员和分析员的雇员姓名。 SQLSELECT ENAME, JOB FROM EMP WHERE JOB NOT IN ( ‗CLERK‘, ‗ANALYST‘); ( 2) BETWEEN…AND 在查找中,如果 要求某列的数值在某个区间范围内,则可以使用BETWEEN…AND。 例 查找哪些雇员的工资在 $2020 到 $3000 之间,可以写成 SQLSELECT ENAME, JOB, SAL FROM EMP WHERE SAL BETWEEN 2020 AND 3000; ENAME JOB SAL JONES MANAGER 2975 BLAKE MANAGER 2850 CLARK MANAGER 2450 SCOTT ANALYST 3000 FORD ANALYST 3000 5 rows selected. 与此相反, NOT BETWEEN……AND 则选择列值不在该范围内的信息。 例 SQLSELECT ENAME, JOB, SAL FROM EMP WHERE SAL NOT BETWEEN 2020 AND 3000; ( 3) LIKE(模式匹配) 在查找中,有时需要对字符串进行比较。 在比较中,有的要求两个字符串完全相同,有的要求部分字符相同,而其余的字符可以任意。 LIKE 就可以用来搜索所有的数据,来查找与你描 述的模式相匹配的行。 LIKE 提供两种字符串匹配方式: 一种用下划线( _)表示,称为定位标志;另一种用百分号( %)表示,称为通配符。 在检测一个字符串时,如果有一个字符可以任意,则在该字符串位置上用下划线表示。 例 1选择名字以 W 开头,后面仅有三个字母的雇员信息。 显然,在查找中,要求名字的第一个字母是 W,后面仅有三个字母,可以是任意字母,因此后面三位可以用三个下划线来表示: SQLSELECT ENAME, DEPTNO FROM EMP WHERE ENAME LIKE‗W_ _ _‘; ENAME DEPTNO WARD 30 1 row selected. 若在查找时只需包含某个字符串,其他字符任意的情况下,可用通配符 %来表示。 例 1 SQLSELECT ENAME, DEPTNO FROM EMP WHERE ENAME LIKE‗S%‘; ENAME DEPTNO SMITH 20 SCOTT 20 2 rows selected. 通配符 %还可以与下划线一起使用。 例 1查找名字以字母 M 开头,以 R结尾,并且第三个字母为 L的雇员名字、工种 和所在部门号。 那么,在查找中,名字的第一个字母是 M,第三个字母是 L,第二个字母可以是任意的,该位置可用一个下划线表示。 最后一个字母是 R,而第三个字母和最后一个字母之间可以是任意长度的字符串,所以在字母 L 和 R 之间使用通配符 %,其命令语句如下: SQLSELECT ENAME, JOB FROM EMP WHERE ENAME LIKE‗M_L%R‘; ENAME DEPTNO MILLER CLERK 1 row selected. 总之,我们可以使用通配符 %匹配任意长度的字符串, 使用 ‗_‗匹配一个任意字符。 此外我们还可以使用 NOT LIKE 选择列值不匹配的行。 例 1查找哪些雇员的工种名不以 SALES 开头。 SQLSELECT ENAME, JOB FROM EMP WHERE JOB NOT IN LIKE‗SALES%‘; ( 4) IS NULL 和 IS NOT NULL 我们使用的数据库一般是反映实际的具体情况,但有时某些数据在实际情况中还不存在,例如:新来的雇员还未分配到部门工作,那么他的 DEPTNO 就不存在,他的 DEPTNO 值既不等于 0 也不等于其他值,而 是一个未知的值,我们称它的 DEPTNO 值为空值。 空值实际是指一种未知的、不存在的或不可应用的数据,通常用 NULL 表示。 NULL 仅仅是一个符号,它不等同于零,所以它不能象零那样进行算术运算。 NULL 不能与等号之类的运算符连用,而应该使用关键字 IS。 例 1选择没有奖金的雇员信息(即奖金为空值的雇员信息) SQLSELECT ENAME, JOB FROM EMP WHERE COMM IS NULL; ENAME JOB SMITH CLERK JONES MANAGER BLAKE MANAGER CLARK MANAGER SCOTT ANALYST KING PRESIDENT ADAMS CLERK JAMES CLERK FORD ANALYST MILLER CLERK 10 rows selected. 若查找列值为非空的信息,则使用 IS NOT NULL。 例 1选择有奖金的雇员。 SQLSELECT ENAME, JOB FROM EMP WHERE COMM IS NOT NULL; ( 5)逻辑运算符 NOT, AND, OR 在 WHERE 子句中,也可以通过逻辑运算符连接多个条件,构成一个更复杂的条件进行查询。 在 WHERE 子句中可以使用三种逻辑运算符: 运算符 名称含义 NOT 逻辑非选择不满足条件的行 AND 逻辑与选择列值同时满足多个条件的行 OR 逻辑或选择列值满足任一条件的行 在 WHERE 子句中,关系比较符的优先级高于逻辑运算符。 在逻辑运算符中,逻辑非( NOT)的优先级最高,逻辑与( AND)次之,逻辑或( OR)优先级最低。 例 1查找 20 号部门里不是职员的雇员信息。 SQLSELECT ENAME, JOB FROM EMP WHERE DEPTNO=20 AND JOB。 =‗LERK‘; ENAME JOB JONES MANAGER SCOTT ANALYST FORD ANALYST 3 records selected. 例 1查找在 20 号部门工作或不是职员的雇员信息。 SQLSELECT ENAME, JOB, DEPTNO FROM EMP WHERE DEPTNO=20 OR JOB。 =‗CLERK‘; ENAME JOB EPNTO SMITH CLERK 20 ALLEN SALESMAN 30 WARD SALESMAN 30 JONES MANAGER 20 MARTIN SALESMAN 30 BLAKE MANAGER 30 CLARK MANAGER 10 SCOTT ANALYST 20 KING PRESIDENT 10 TURNER SALESMAN 30 ADAMS CLERK 20 FORD ANALYST 20 13 rows selected. 综合上所述,在 WHERE 子 句中,可以使用关系运算符、逻辑运算符以及特殊的运算符 LIKE等构成条件,当条件满足时,则取有关的数据。 这些运算符的优先顺序如下: ①= ,。 =, , , =, , = [NOT] BETWEEN„AND , [NOT]IN, [NOT]LIKE, IS [NOT]NULL ②NOT ③AND ④OR 括弧()可以改变上述运算符执行的顺序。 ORDER BY 子句 通常使用 SELECT 命令查找数据时,查询结果按各行在表中的顺序显示,当需要按照某种特定的顺序显示时,可以通过 ORDER BY 子句来改变查询结果的显示 顺序。 ORDER BY 子句的格式是: SELECT …… FROM…… [WHERE……] ORDER BY列名 [ASC/DESC][, 列名 [ASC/DESC]]…… ; 在 ORDER BY 子句中, 列名 指出查询结果数据按该列排序,选项[ASC/DESC]表示按升序还是降序排列,选择 ASC 为升序显示,选择 DESC 为降序显示,该项缺省为升序形式。 例 1按字母顺序显示雇员的名字。 SQLSELECT ENAME FROM EMP ORDER BY ENAME; ENAME ADAMS ALLEN BLAKE CLARK FORD JAMES JONES KING MARTIN MILLER SCOTT SMITH TURNER WARD 14 rows selected. 如果按降序排列,必须加上关键字 ―DESC‖。 例 按部门号降序显示。 SQLSELECT * FROM EMP ORDER BY DEPTNO DESC; DEPTNO DNAME LOC 40 OPERATIONS BOSTON 30 SALSE CHICAGO 20 RESEARCH DALLAS 10 ACCOUNTING NEW YORK 4 rows selected. 如果按多列进行排序时,应分别指出它们相应的列名及有关的递增或递减方式。 选择按多列排序,首先由第一个列名确定顺序,若第一排序列值相同,再按第二个列名排序,第二排序列值相同,再按第三列排序,依此类推。 例 2查找工资高于 $2020 的雇员信息,按部门号和雇员名字排序。 SQLSELECT ENAME, SAL, DEPTNO FROM EMP WHERE SAL2020 ORDER BY DEPTNO, ENAME; ENAME SAL DEPTNO CLARK 12450 SCOTT 3000 KING 5000 10 FORK 3000 20 JONES 2975 20 BLAKE 2850 30 6 rows selected. 注意:如果排序列含有空值(如上述的 DEPTNO),则含有空值的行首先显示,而不管选择升序还是降序形式。 GROUP BY 子句和 HAVING 子句将放到 节 ―聚组函数 ‖具体论述。 表达式 在 SQL 命令中还可以使用加( +)、减( —)、乘( *)、除( /)运算符构成的表达式,其中乘、除运算的优先级高于加、减运算。 算术表达式的处理顺序从左到右,括弧可以改变处理的顺序。 例如, 12*( SAL+COMM)。 =12*SAL+COMM。 这些运算符可以用于 SQL 命令的 SELECT 子句、 WHERE子句、 ORDER BY 子句以及后面还要讲述的 GROUP BY 子句及 HAVING 子句中,但不能在 FROM 子句中使用运算符。 例 2选择奖金高于其工资的 5%的雇员。 SQLSELECT ENAME, SAL, COMM, COMM/SAL FROM EMP WHERE COMM*SAL ORDER BY COMM/SAL DESC; ENAME SAL COMM COMM/SAL MARTIN 1250 1400 WARD 1250 500 ALLEN 1600 300 3 rows selected. 1. 2. 2 数据更新:插入、修改和删除 在数据库应用中,经常要对存放的数据进行更新操作,以满足不断变化的需求,因此对数据进行插入、修改和删除就成为必不可少的一项工作。 数据的插入 当需要为一个基表增加新的数据时,就要向基表中插入数据,这是由INSERT 命令来实现的。 INSERT 命令有两种用法:一种是将指定的具体数值插入表中,通过关键字 VALUES 来实现;另一种是将其他表中满足条件的数据插入到一个表中,这是通过 SELECT 子句实现的。 在插入数据时,应首先确认基表已经。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。