从数据表中检索信息
本章内容包括:
使用SELECT语句从一个或多个数据库表中检索信息
使用算术表达式进行计算
使用WHERE子句对行进行过滤
对从表中检索到的行进行排序
一、单表查询数据
SELECT语句用于从数据库表中检索信息。
select * from customers; //选择一个表中所有的列
select c.name from cutomers c; //选择表中的某一列
使用WHERE子句过滤行
在查询中可以使用WHERE子句来指定想要检索的行。
select * from customers where customer_id = 2;
理解行标识符
oracle数据库中的每一行都有一个唯一的行标识符ROWID。Oracle数据库内部使用行标识符来存储行的物理位置。rowid通常被称为伪列。不会出现在表结构中
理解行号
oracle的另一个伪列是ROWNUM,它返回每一行在结果集中的行号
SQL> select rowid,rownum,f.serial_no,f.code_id from fault_barrier_base_code f where rownum < 20; ROWID ROWNUM SERIAL_NO CODE_ID -------------------------------------------------------------------------------- ---------- --------- ---------------------------------------- AAGlTlAAOAAJEhUAAA 1 5 YJ_SOAP AAGlTlAAOAAJEhUAAB 2 6 SC_SOAP AAGlTlAAOAAJEhUAAC 3 9 88 AAGlTlAAOAAJEhUAAD 4 22 12 AAGlTlAAOAAJEhUAAE 5 23 52 AAGlTlAAOAAJEhUAAF 6 24 82 AAGlTlAAOAAJEhUAAG 7 25 94 AAGlTlAAOAAJEhUAAH 8 29 21 AAGlTlAAOAAJEhUAAI 9 30 REPLACE_NOCHECK_SECROSCODE AAGlTlAAOAAJEhVAAA 10 10 89 AAGlTlAAOAAJEhVAAB 11 13 RECORD_MONITOR_LOG AAGlTlAAOAAJEhVAAC 12 14 92 AAGlTlAAOAAJEhVAAD 13 15 DEFAULT_URL_FALG AAGlTlAAOAAJEhVAAE 14 32 98 AAGlTlAAOAAJEhVAAF 15 37 CHECK_DEFAULT_SECRESCODE_DESC AAGlTlAAOAAJEhVAAG 16 38 NOT_FAULT_BARRIER_ENABLE AAGlTlAAOAAJEhVAAH 17 39 NO_FAULT_BARRIER_CRON AAGlTlAAOAAJEhVAAI 18 40 GROUP_SPECIAL_MSISDN AAGlTlAAOAAJEhVAAJ 19 41 GROUP_SPECIAL_BIPCODE_ACTIVECODE 19 rows selected
执行算术运算
Oracle在SQL语句中使用算术表达式来进行算术运算,包括+、-、*、/
日期运算:在2016年6月6日上加上一天
SQL> select to_date(sysdate) + 7 as "one week later" from dual; one week later -------------- 2016/6/13 SQL> select to_date(sysdate) - 7 as "one week ago" from dual; one week ago ------------ 2016/5/30
算术运算中也支持表的列操作。
禁止显示重复行 关键字DISTINCT
比较值,用 =、<>或!=、<、>、<=,>=,ANY(与任何值比较),ALL
使用SQL操作符,LIKE(模糊查询),IN(范围查询),BETWEEN(范围查询),IS NULL,IS NAN(非数字),IS INFINITE
使用逻辑操作符 x AND y(当x和y都为true时,返回true),x OR y(当x和y中有一个为true,就返回true),NOT x(如果x为false,则返回true);
使用ORDER BY 子句对行进行排序
使用ORDER BY子句可以对查询检索出来的行进行排序。ORDER BY子句必须位于FROM或WHERE子句(如果提供了WHERE子句)之后。
二、执行两个表的SELECT语句
连接可以用于连接任意多个表。连接数 = 查询中使用的表的总数 - 1
select * from fault_barrier_code; select * from fault_barrier_sec_rspcode sec,fault_barrier_code fc where sec.bip_code = fc.bip_code and sec.act_code = fc.act_code and sec.plat_code = fc.plat_code;
3. 连接条件和连接类型
根据连接中使用的操作符的不同,连接条件(join condition)可以分为两类:
等连接(equijion)在连接中使用操作符。
不等连接(non-equijoin)在连接中使用除等号之外的操作符如,<,>,BETWEEN
连接有3中类型
内连接(inner join)只有当连接中的列包含满足连接条件的值时才会返回一行。
外连接(outer join)即使连接条件中的一列包含空值也会返回一行
自连接(self join)返回连接到同一张表中的行
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341