美图欣赏 | 设为首页 | 加入收藏 | 网站地图

当前位置:新锦江平台:www.xjj555666.com-电脑中国 > 数据库 > oracel >

Oracle 简单查询、限定查询、数据的排序

2012-09-11 10:42|来源:未知 |作者:汉网天下 |点击:
一、简单查询
SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。
Oracle数据库之所以发展的很好,主要也是因为Oracle是全世界最早采用SQL语句的数据库产品。
SQL功能强大,概括起来,它可以分成以下几组:
 
DML(Data Manipulation Language) 数据操作语言,用于检索或者修改数据
DDL(Data Definition Language) 数据定义语言,用于定义数据的结构,创建、修改或者删除数据库对象
DCL(Data Control Language) 数据控制语言,用于定义数据库的权限
简单查询指的是查询出一张表中的所有的数据,简单查询的语法如下:
SELECT [DISTINCT] * | 字段 [别名] [,字段 [别名]]
    
FROM 表名称 [别名];
范例:查询dept表的全部记录
SELECT * FROM dept;
范例:查询出每个雇员的编号、姓名、基本工资
SELECT empno, ename, sal FROM emp;
范例:查询出每个雇员的职位
SELECT job FROM emp;
 
这个时候发现查询出来的job内容中出现了重复的数据,而之所以数据会有重复,主要的原因是现在没有消除掉重复记录,可以使用DISTINCT消除掉所有的重复内容:
SELECT DISTINCT job FROM emp;
但是对于重复数据,指的是一行中的每个列的记录都重复,才叫重复数据。
范例:查询出每个雇员的姓名、职位
SELECT DISTINCT ename, job FROM emp;
在进行简单查询的操作之中,也可以使用各个数学的四则运算符。
范例:要求显示每一个雇员的姓名、职位、基本年薪
SELECT ename, job, sal*12 FROM emp;
 
但是这个时候显示列上出现了一个“SAL*12”,这个肯定是显示的查询列,但是这个列名称不方便浏览,所以此时可以起一个别名。    
SELECT ename, job, sal*12 income FROM emp;
但是对于别名,建议不要使用中文,只要是程序的开发,都要回避中文。
范例:由于公司的福利很高,每个月都有200元的饭食补助以及100元车费补贴,这个时候的年薪
SELECT ename, job, (sal+300)*12 income FROM emp;
范例:公司每年的年底都会多发一个月的基本工资
SELECT ename, job, (sal+300)*12+sal income FROM emp;
在简单查询中也可以使用“||”连接查询的字段。
范例:观察“||”的使用
SELECT empno || ',' || ename FROM emp;


 
由于“,”属于原样输出的字符串,所以必须使用“ ' ”括起来,即:在SQL语句之中,“ ' ”表示的是字符串。
范例:要求现在的数据库按照如下的格式显示:
“雇员编号是:7369的雇员姓名是:SMITH,基本工资是:800,职位是:CLERK!”
现在相当于查找:empno、ename、sal、job字段,并且使用“||”进行连接。
SELECT '雇员编号是:' || empno || '的雇员姓名是:' || ename  || ',基本工资是:' || sal || ',职位是:' || job || '! ' 雇员信息 FROM emp;
一定要记住,别名上的内容不要使用“ ' ”括起来,而只有在SELECT子句之中出现的内容使用“ ' ”。


 
二、限定查询
在之前的简单查询中,是将所有的记录进行显示,但是现在可以对显示的记录进行过滤的操作,而这就属于限定查询的工作了,限定查询就是在之前语法的基础上增加了一个WHERE子句,用于指定限定条件,此时语法如下:
SELECT [DISTINCT] * | 字段 [别名] [,字段 [别名]]
  
FROM 表名称 [别名]
 
[WHERE 条件(S)];
在WHERE子句之后可以增加多个条件,最常见的条件就是基本的关系运算:>、>=、<、<=、!=(<>)、BETWEEN、AND、LIKE、IN、IS NULL、AND、OR、NOT;
 
1、关系运算
范例:要求查询出基本工资高于1500的所有雇员信息
SELECT * FROM emp WHERE sal>1500;
范例:查询出所有职位是办事员的雇员信息
SELECT * FROM emp WHERE job='clerk';
这个时候没有返回相应的查询结果,主要原因是在Oracle数据库中,所有的数据都是区分大小写的,所以代码修改如下:
SELECT * FROM emp WHERE job='CLERK';
以上只是操作了一个条件,现在也可以操作多个条件,而这多个条件之间可以使用AND或OR进行连接操作。   
范例:查询工资在1500~3000之间的全部雇员信息
SELECT * FROM emp
WHERE sal>=1500 AND sal<=3000;
范例:查询出职位是办事员,或者是销售人员的全部信息
SELECT * FROM emp
WHERE job='CLERK' OR job='SALESMAN';
范例:查询出职位是办事员,或者是销售人员的全部信息,并且要求这些雇员的工资大于1200
SELECT * FROM emp
WHERE (job='CLERK' OR job='SALESMAN') AND sal>1200;
范例:查询所有不是办事员的雇员信息
SELECT * FROM emp WHERE job<>'CLERK';
 
SELECT * FROM emp WHERE job!='CLERK';
 
(责任编辑:dnzg)
热门文章