oracle的select查询语句(DQL):
语法:
select //查询动作关键字
[distinct|all] //描述列表字段中的数据是否去除记录
select_list //需要查询的字段列表,占位符,可以是多个
from table_name //from关键字,表数据来源,表或者视图
[where_clause] // WHERE 条件部分
[group_by_clause] // 分组条件
[HAVING condition] // 分组的聚合函数
[order_by_clause] // 排序条件
1.字段查询
.1获取指定字段的数据
()普通查询特定字段
SELECT productid,productname,productprice from productinfo;
()根据当前模式获取表或视图的列
select scott.productinfo.productid,productinfo.productname,productinfo.productprice from scott.productinfo;
()获取所有字段的数据
SELECT * from productinfo;
使用*号的弊端:
()执行效率没有明确查询列高;
()增加不必要的网络消耗;
()在表中增加新的字段时,会造成一些不必要的程序异常。 .2使用别名替代表中的字段名:
select productid 产品编号, productname AS 产品名称, productprice AS 产品价格 FROM PRODUCTINFO ; .3使用表达式操作查询的字段:
select productid,productname,productprice || '*' 1.25 || '=' || productprice*1.25 as new_productprice
from productinfo; .4使用函数操作查询的字段:
select productid 产品编号,subStr(productid,,) as 截取后的编号,productname as 产品名称,productprice as 产品价格
from productinfo; .5去除检索数据中的重复记录:
select distinct category 产品类型 from productinfo ;
2.数据处理
.1检索出来的数据排序:
在select语句的后面,不管有什么条件限制,排序只能在最后一项。
语法:
order by
{expr | position | c_alias}
[ASC | DESC]
[NULLS FIRST | NULLS LAST]
[,{expr | position | c_alias}
[ASC | DESC]
[NULLS FIRST | NULLS last]
]...
.2使用升序,降序来处理数据
select productname, quantity from productinfo order by quantity; .3排序时对null值得处理
升序时null值在首位:
select productname, quantity from productinfo order by quantity nulls first;
降序时null值在末尾:
select productname, quantity from productinfo order by quantity nulls last ;
.4使用别名作为查询手段
select productname 产品名称,quantity 产品数量 from productionfo order by 产品数量 nulls last;
2.5 使用表达式作为排序字段
select productname,productprice,quantity,productprice*quantity from productinfo order by productprice*quantity ASC;
备注:null值和其他值相乘相加时,结果还是null;
2.6 使用字段的位置作为排序字段
select productname,productprice,quantity from productinfo order by desc;
.7使用多个字段排序:
select productname,category,quantity from productinfo order by category asc , desc nulls last; .where 设置检索条件
关系操作符:<,<=,>,>=,=,!=,<>.
比较操作符:is null, like,between...end...,in
逻辑操作符:and, or, not
.1单一条件检索:
where quantity>
.2多个条件:
where productprice>= and productprice<=;
where productprice between end ;
.3模糊查询:
%:代替多个字符
_:代替一个字符
例:where productname like '%三星%'
.4查询条件限制在某个列表范围之内
where category in('','')
.5针对null值得查询
where quantity is null ;
where quantity is not null; 4分组查询:group by和having
.1group by:
语法:GROUP BY
{ expr /**数据库列名**/
| {rollup | cube}({expr [,expr ]...}) /**group by子句的扩展,可以返回小计和总计记录**/
}
一个字段分组:
select category, avg (productprice) 平均价格 from productionfo group by category;
多个字段分组:
select category 产品类型编码,avg(productprice) 平均价格,origin 产地 from productinfo group by category,origin;
where 子句和分组混用(先筛选在分组):
select category,avg(productprice) 平均价格,origin from productinfo
where productprice > group by category,origin;
注意:当查询中出现group by子句时,select列表中只能存在分组函数,或出现在group by子句中的字段。
.2HAVING
having子句通常和group by子句一起使用,限制搜索条件,对group by子句负责。
select category,avg(productprice) 平均价格 from productinfo group by category HAVING avg(productprice)>; 5子查询
嵌套在另外一个语句中的select语句,本质上是where后的一个条件表达式。
5.1 子查询返回单行
单一条件子查询:
select productname,productprice
from productinfo
where category=(select category from categoryinfo where category = 'MP3'); 多个条件查询:
select productname,productprice from productinfo
where productprice >(select min(productprice) from productinfo)
and productprice<(select max(rpductprice) from productinfo)
.2子查询返回多行
in:符合任一个都可以
例:select productname,productprice from productinfo
where category in
(select categoryid from categoryinfo where categoryname = '电视' or categoryname = 'MP3');
*any:表示满足子查询结果的任何一个,和<,<=搭配,表示小于等于列表中的最大值,和>,>=配合表示大于等于列表中的最小值。
例:select productname,productprice from productinfo where productprice <
any (select productprice from productinfo where category = '')
and category <> ''
some:和any差不多,用在非'='的环境中,表示找出和子查询中任何相当的数据:
例:select productname,productprice from productinfo where productprice =
some (select productprice from productinfo where category = '') and category <> '';
*all:表示满足子查询结果的所有结果。和<,<=搭配,表示小于等于列表中的最小值;而和>,>=搭配时表示大于等于列表中的最大值。
例:select productname,productprice from productinfo where productprice <
all(select productprice from productprice from productinfo where category = ''); .连接查询:(内连接,外连接,全连接,自连接)
.1最简单的连接查询,用‘,’ (笛卡尔积,不推荐)
select * from productinfo,categoryinfo;
.2内连接:(两张表或多张表简单连接,只查询出匹配的记录)
等值连接:‘=’连接
例:select p.productname,p.productproce,c.categoryname
from productinfo p, categoryinfo c
where p.category = c.categoryid;
或:select p.productname,p.productprice,c.categoryname
from productinfo p inner join categoryinfo c
on p.category = c.categoryid;
不等值连接:'>','>=','<=','<','!=','<>','between...and...','in'
例:select p.productname,p.productprice,c.categoryname
from productinfo p inner join categoryinfo c on p.category in c.categoryid;
或:select p.productname,p.productprice,c.categoryname
from productinfo p, categoryinfo c where p.category in c.categoryid;
.3自连接:自身引用作为另一张表来处理
例:select p.productname,p.productprice,pr.productname,pr.productprice,pr.quantity
from productinfo p, productingo pr
where p.productid != pr.productid
and p.quantity = pr.quantity
and p.rowid < pr.rowid;
或:select p.productname,p.productprice,pr.productname,pr.procudtprice,pr.quantity
from productinfo p join procudtinfo pr
on p.productid != pr.productid
and p.quantity = pr.quantity
and p.rowid < pr.rowid;
.4外连接:((+)的使用:该操作符总是放在非主表的一方,并且使用where子句,左右连接可用)
左外连接:包含左表全部记录和右表匹配记录
例:select p.productname,p.productprice,p.category,c.categoryid,c.categoryname
from productinfo p left join categoryinfo c on p.category = c.categoryid;
或:select p.productname,p.productprice,p.category,c.categoryid,c.categoryname
from productinfo p , categoryinfo c
where p.category = c.categoryid(+);
右外连接:包含右表全部记录和左表匹配记录
例:select p.productname,p.productprice,p.category,c.categoryid,c.categoryname
from productinfo p right join categoryinfo c on p.category = c.categoryid;
或:select p.productname,p.productprice,p.category,c.categoryid,c.categoryname
from productinfo p,categoryinfo c
where p.category(+) = c.categoryid;
全外连接:所有匹配成功的记录,和左右表中未匹配成功的记录
例:select p.productname,p.procudtprice,p.category,c.categoryid,c.categoryname
from productinfo p full join categoryinfo c on p.category = c.categoryid;

ORACLE的查询语句的更多相关文章

  1. Oracle分页查询语句的写法(转)

    Oracle分页查询语句的写法(转)   分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的 ...

  2. 各种oracle参数查询语句

    各种oracle参数查询语句 1.show parameter:--显示各个系统参数配置 2.select * from v$parameter;--显示各个系统参数配置 2.show paramet ...

  3. Oracle分页查询语句的写法

    分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. AD:2013云计算架构师峰会精彩课程曝光 Oracle分页查询语句使我们最常用 ...

  4. ORACLE中查询语句的执行顺及where部分条件执行顺序测试

    Oracle中的一些查询语句及其执行顺序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查询条件: 1)LIKE:模糊查询,需要借助两个通配符, ...

  5. 45 个非常有用的 Oracle 日期查询语句

    日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 “SYSDATE”来指定查询的日期. SELECT TRUNC (SYSDATE, 'MO ...

  6. oracle 常用查询语句

    一.一般日常用的脚本 1.检查源库每个节点至少3组redoselect group#,thread#,bytes/1024/1024,members,status from v$log; select ...

  7. oracle数据库查询语句case的用法

    实现功能: 1.先查询status=2的记录,如果查询到记录则返回第一条记录的Product_Name:2.如果查询不到status=2的记录,则判断status=1的记录是否存在,不存在则返回“请耐 ...

  8. Oracle ->> 层级查询语句(hierarchical query)connect by

    Oracle中的Connect By... Start With语句实现了递归查询或者树状查询. Connect By Prior 一方为起始(root)的ID 参考: http://www.360d ...

  9. Oracle数据库查询语句

    编写以下查询的SQL语句,以scott用户的emp表和dept表作为查询数据: 1.列出至少有一个员工的所有部门. SQL语句: select * from SCOTT.DEPT where dept ...

随机推荐

  1. laravel中的模型关联之(一对一)

    一对一 一对一的关联关系就相当于,赞和文章之间的关系,一个用户只能赞一次一个文章,只能和文章发生一次关系, 用户和赞的文章是唯一的一份,这里举得是判断用户是否赞过某个文章 一个参数都是你要获取的模型, ...

  2. lucene和solr

    我们为什么要用solr呢? 1.solr已经将整个索引操作功能封装好了的搜索引擎系统(企业级搜索引擎产品) 2.solr可以部署到单独的服务器上(WEB服务),它可以提供服务,我们的业务系统就只要发送 ...

  3. Fedora 16下安装ruby on rails

    Fedora 16下安装ruby on rails 最近在windows下写了些rails小程序,问题一个接一个,到最后终于坚信了那句话“windows不适合用于ruby on rails开发”.于是 ...

  4. linux(2)

  5. svn ank问题

    subvesion detected a working copy that need upgrade in 可以先在文件夹下cleapup,然后打开解决方案,在解决方案的右键选择upgrade wo ...

  6. 【Azure Active Directory】单一登录 (SAML 协议)

    Azure Active Directory 支持 SAML 2.0 Web 浏览器单一登录 (SSO) 配置文件. 若要请求 Azure Active Directory 对用户进行身份验证时,云服 ...

  7. springMVC传对象参数

    springController: [java] view plaincopy @Controller @RequestMapping("/user") public UserCo ...

  8. TSQL--删除正在运行的数据库

    ); SET @dbName='DB1_SNAP' BEGIN TRY --===================================== --查找当前数据库所有连接并删除 DECLARE ...

  9. MVC区域路由配置

  10. DataTable中的select()用法

    1.在DataTable中执行DataTable.Select("条件")返回DataTable // <summary> // 执行DataTable中的查询返回新的 ...