首页 > 数据库 > Oracle > 正文
Oracle那些事(11)-SQL单表查询
2017-06-19       个评论    来源:  
收藏    我要投稿

一,简介

Oracle那些事(11)-SQL单表查询,SQL其实就是用户和关系数据库交互的标准语言,是老美制定的,大体上分为三大类:

1,DML数据操纵语言,对数据库中的数据进行增删改查等操作
2,DDL数据定义语言,主要是创建和修改数据库对象,比如表的创建、修改、删除
3,DCL数据控制语言,比如对用户进行授权

这三大类大体知道有这么回事就行了,本篇我们介绍单表查询中常用的SQL语句。

二,select

直接查询类
/*星号表示全部列*/
select * from emp;
/*可以选择指定的列empno和ename*/
select empno,ename from emp;
/*两根竖线表示连接*/
select empno||','||ename from emp;
/*as表示列的别名*/
select ename as emp_name from emp;
/*用e这个别名代表emp,注意Oracle中表的别名不实用as*/
select e.ename from emp e;
查询结果处理
/*查询结果升序排序(默认升序)*/
select * from emp order by ename;
/*查询结果降序排序*/
select * from emp order by ename desc;
/*查询结果转化,例如存储时1男0女*/
select 
case sex
when '1' then '男的'
when '0' then '女的'
end
from PEO t
/*查询前10行*/
select * from emp where rownum<=10;
/*排序后查询前10行*/
select * from (select * from emp order by ename)  where rownum<=10
/*结果筛选*/
select * from emp where ename='JAMES';/*名字是JAMES的*/
select * from emp where ename<>'JAMES';/*名字不是JAMES的*/
/*and同时满足 or满足一个以上,not对内容取反*/
select * from emp where ename='JAMES' and empno=7900;
select * from emp where ename='JAMES' or empno=7902;
select * from emp where not(ename='JAMES')
/*in、not in,集合判断*/
select * from emp where ename in ('JAMES','ALLEN','MILLER');
select * from emp where ename not in ('JAMES','ALLEN','MILLER');
/*like模糊匹配,%表示任意字符,_表示一个字符*
select * from emp where ename like '%A%'
select * from emp where ename like 'A____'
/*选择不重复的内容*/
select distinct(deptno) from emp
/*对选择结果进行计算*/
select sum(sal) as sumsal from emp;
select avg(sal) as sumsal from emp;
select count(comm) from emp;/*注意NULL列是不纳入计数的*/
非常特殊的NULL

NULL值表示该列没有数据,也就无从谈起这个数是多少,或者不是多少,或者大于小于多少,这些判断都将不成立。

/*如果comm是NULL,则comm=100不成立,comm<>100也不成立*/
select * from emp where comm =100 or comm <>100;
/*可以使用is NULL或is not NULL判断NULL的列*/
select * from emp where comm is NULL;
相当特殊的group by

需要注意的是,当用了group by语句后,select的列必须是group by后面的列,或者聚合函数(count/sum/avg/…)计算的列。

例如:

/*正确*/
select count(deptno),deptno from emp group by deptno;
/*错误,因为ename不是group by后面的列*/
select count(deptno),deptno,ename from emp group by deptno;
/*正确,因为sum是聚合函数*/
select sum(sal),deptno from emp group by deptno;
/*having其实很简单,就是限制性group by 及之前的语句,然后对结果进行筛选*/
select sum(sal),deptno from emp group by deptno /*执行后查询出结果*/HAVING sum(sal)>10000/*对结果筛选*/
点击复制链接 与好友分享!回本站首页
上一篇:Oracle那些事(10)-scott用户的简单使用
下一篇:Oracle中的存储过程,函数和触发器
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 |
版权所有: 88bifa.com--致力于做实用的IT技术学习网站