《Oracle简单查询笔记》由会员分享,可在线阅读,更多相关《Oracle简单查询笔记(7页珍藏版)》请在金锄头文库上搜索。
1、四数据查询四数据查询( (一一) ) 数据库查询语言数据库查询语言 SQLSQL类 别功 能举 例数据库控制语言(DCL)控制对数据库的访问,启动和关闭等对系统权限进行授权和回收的 GRANT、REVOKE 等语句数据库定义语言(DDL)用来创建、删除及修改数据库对象创建表和索引的 CREATE TABLE、ALTER INDEX 等语句数据库操纵语言(DML)用来操纵数据库的内容,包括查询查询、插入、删除、修改和锁定操作的 SELECT、 INSERT、UPDATE、DELETE、LOCK TABLE 等语句数据库事务处理实现对数据的交易过程的完整控制与数据库事物处理相关的 COMMIT、
2、ROLLBACK、SAVEPOINT、SET TRANSACTION 等语句1.基本 SELECT 语句:SELECT 内容 FROM 表-集合 WHERE 条件;1) 内容: 是所选定的数据项.2) 条件: 是选择数据的过滤规则.- 1) 内容:1 *代表所有字段;2 若希望单独列出某几个字段,可以使用“COL1,COL2,.“的方式.3 *不能与“COL1,COL2,.“的方式连用.4 但,可以通过“表名.*“的方式与“COL1,COL2,.“的方式同时使用. -例子-CONNECT SCOTT/TIGER DHEE; REM 查询所有员工信息 -SELECT * FROM EMP; RE
3、M 查询工资大于 2000 的员工信息-SELECT * FROM EMP WHERE SAL2000; REM 查询员工的编号,姓名,职务,工资.-SELECT EMPNO,ENAME,JOB,SAL FROM EMP;-SELECT *,EMPNO,ENAME,JOB,SAL FROM EMP;-ERROR SET LINESIZE 200; SELECT EMP.*,EMPNO,ENAME,JOB,SAL FROM EMP;-SELECT ROWNUM,EMP.* FROM EMP;5 显示行号: ROWNUMROWNUM-虚列, 本身不是字段,但可以当成字段使用.(1) ROWNUM
4、的初始值为 0,每 SELECT 一行数据,其值加 1.然后进行 WHERE 匹配, 若匹配成功,则进入最终缓存;否则减 1.(2) ROWNUM 只和当前的 SELECT 相关. -例子-REM 显示第 1 条数据-SELECT ROWNUM,EMP.* FROM EMP WHERE ROWNUM = 1;REM 显示第 2 条数据-error-SELECT ROWNUM,EMP.* FROM EMP WHERE ROWNUM = 2;6 计算列(1) 虚列.本身不是字段,是一个计算表达式,甚至可能只是一个常数.(2) +,-,*,/(3) 每 SELECT 一行,则计算一次. 注意注意:
5、NULL 在参与算术运算的时候,结果仍然为 NULL.尤其在修改数据的时候要注意这一点.可以使用NVL(V1,V2) -(当 V1 为 NULL 时,返回 V2,否则返回 V1)函数进行空值转换. -例子- REM 显示员工编号,姓名,工资,以及工资上调 50%的结果.-SELECT EMPNO,ENAME,SAL,SAL*1.5 FROM EMP; -SELECT EMPNO,ENAME,SAL,SAL*1.5 FROM EMP WHERE SAL*1.53000; -SELECT EMPNO,ENAME,10 FROM EMP; -SELECT 10 FROM EMP; -SELECT 1
6、0*20*30*12341553 FROM DUAL; 7 字符串连接列: |(1) 字符串是用一对单引号修饰的字符序列. ABC(2) 字符串的连接运算用“|“a | b = ab(3) NULL 在参与连接运算的时候以空字符串的形式进行. (4) 但是,如果字符串本身出现了单引号,如 smiths,此时,用两个单引号连用的方 式来表示字符串内容中的一个单引号. -例子- REM 显示员工编号,姓名,工资,津贴(COMM),以及津贴上调 300 的结果.-SELECT EMPNO,ENAME,SAL,COMM,NVL(COMM+300,300) FROM EMP; -SELECT EMPNO
7、 | ENAME FROM EMP; -SELECT EMPNO | SAL | COMM FROM EMP;8 给字段起别名.(1) 字段名 别名 (2) 字段名 AS 别名(3) 字段名 “别名“ (4)字段名 AS “别名“-a) 给字段起别名是对缓存结果进行的.b) 使用 AS 可以帮助区分原名和别名.c) 双引号可以保留别名格式.d) 注意注意: 当别名中出现关键字或者空格的时候必须使用双引号修饰! e) 注意注意: 由于别名是对缓存进行的,所以,在 WHERE 条件中不可以使用字段别名! - 例子-:SELECT AB, SMITHS FROM EMP;-SELECT EMPNO
8、AS E_NO,ENAME E_NAME FROM EMP;-SELECT EMPNO E_NO, ENAME “e_name“, SAL Salary FROM EMP;-SELECT EMPNO “MY NO“, ENAME “SELECT MY NAME“ FROM EMP;REM 请将EMP中的字段换成对应的中文名.-DESC EMP;9 消除重复行. 在所选的内容前加 DISTINCTDISTINCT COL|COL1,COL2,.|* (1) 表示对所选择的数据的重复行数进行消除.(2) DISTINCT 必须放在所有字段之前! -例子-REM 显示职务. -SELECT DIST
9、INCT JOB FROM EMP;REM 显示职务和工资 -SELECT DISTINCT JOB,SAL FROM EMP;SELECT DISTINCT * FROM EMP; - -SELECT EMPNO,ENAME,JOB,SAL,SAL*1.5 S15 FROM EMP WHERE S15 2000;- ERROR2)条件:SELECT . FROM . WHERE 条件条件: 选择数据的过滤规则. 1) 简单条件:,=,=1 数值直接比较大小.2 字符串按 ASCII 码的大小进行比较.3 日期类型的比较要求比较的左右必须是日期类型,直接按日期先后顺序进行比较.也可以使用符合标
10、准日期格式的字符串来进行比较.标准日期格式“DD-MON-YY“ : 8-8 月-08 -例子- REM 显示工资大于2500的员工信息. -SELECT * FROM EMP WHERE SAL 2500;REM 显示工资不等于3000的员工信息 -SELECT * FROM EMP WHERE SAL = 3000; -SELECT * FROM EMP WHERE SAL != 3000; -SELECT * FROM EMP WHERE SAL = 3000;REM 显示在1982年后雇佣的员工信息. SELECT * FROM EMP WHERE HIREDATE 1-1月-82;2
11、) 逻辑条件AND, OR, NOT1 AND,OR 的左右必须是完整的条件. (条件 1) AND (条件 2)2 NOT 后必须是完整的条件. NOT(条件)3 如果某条件同时出现了 AND,OR,NOT,按优先级从高到低计算: NOTANDOR -例子- REM 显示工资大于 2000 小于 3000 的员工信息. -SELECT * FROM EMP WHERE SAL 2000 AND SAL 2000; -SELECT * FROM EMP WHERE NOT SAL 1500; 3) 特殊条件: BETWEEN.AND. IS NULL LIKE IN ANY ALL EXSIT
12、S; 1 NOT BETWEEN 下限 AND 上限A. 表示判断某字段的值是否在下限和上限之间.包括上下限.B. 下限一定要小于上限. -例子- REM 显示工资大于等于2000且小于等于3000的员工信息. -SELECT * FROM EMP WHERE SAL BETWEEN 2000 AND 3000;REM 显示工资不在2000,3000范围的员工信息. -SELECT * FROM EMP WHERE SAL NOT BETWEEN 2000 AND 3000;SELECT * FROM EMP WHERE NOT SAL BETWEEN 2000 AND 3000;2 IS N
13、OT NULLA. 表示判断某字段的值是否为 NULL.B. 注意: NULL 在参与比较运算结果永远为 NULL.所以不可以直接用 NULL 参与简单比较,而必须使用 IS NULL 来进行判断. -例子- REM 显示津贴为NULL的员工. -SELECT * FROM EMP WHERE COMM = NULL; -SELECT * FROM EMP WHERE COMM IS NULL;REM 显示有津贴的员工信息. SELECT * FROM EMP WHERE COMM IS NOT NULL; SELECT * FROM EMP WHERE NOT COMM IS NULL;3 NOT LIKE 匹配字符串A. 表示判断某字段的值是否与匹配字符串匹配.B. 匹配字符串.% : 表示任意多个字符. -例子-