oracle基本查询用法入门示例

来源:脚本之家  责任编辑:小易  

oracle从浅到深的书籍: 1. Oracle的官方文档 2.《深入浅出Oracle》,《从实践中学习Oracle/SQL》 3. Thomas Kyte的《Expert One on One: Oracle》,Oracle OCP官方培训教材 4.《Oracle 数据库DBA专题技术精粹》、《Oracle 数据库性能优化》、《

本文实例讲述了oracle基本查询用法。分享给大家供大家参考,具体如下:

oracle 分为oracle server (也就是服务器)和oracle client客户端,plsql也是客户端,但plsql偏向开发,oracle client 偏向管理,你去下一个 oracle server ,装上,然后建一个数据库实例,再装个plsql,配好SID和网络服务名,用plsql去管理这个库

一、基本select语句

这种sql网上可以找到很多,给你举个例子: select * from (select e.* ,rownum rn from (select * from emp) e) where rn>=5 and rn

SELECT *|{[DISTINCT] column|expression [alias], ...} FROM table;

学oracle大神Tomas Kyte的书不能不看,大名鼎鼎的ASK TOM就是他开的网站! Tomas Kyte一共有三本书: 《Oracle专家高级编程》:经典中的经典。虽然是讲9i的,但是还是不能不看,讲的都是些基础但是很重要的东西。而且网上现在有电子版可以下载!

例如:

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

--查询所有数据 select * from emp; --查询指定列数据 select empno,ename,sal from emp; --算数运算符(+ - * /) select ename,sal,sal+30 from emp; --使用括号 select ename,sal,12*(sal+30) from emp; --定义空值 --(空值是无效的,未指定,未知的或不可预知的值,空值不是空格或是0) select ename,job,sal,comm from emp; --空值的数学运算 --包含空值的数学表达式的值都为空值 select ename,12*sal+comm from emp; --列的别名 --别名使用双引号,AS可以省略 select deptno as "no",ename as "name" from emp; --连接符,把列与列,列与字符连接在一起 select deptno || '--' || ename from emp; --字符串 --日期和字符只能在单引号中出现 select 'hello ' || ename from emp; --删除重复行 select distinct deptno from emp; --显示表结构 desc[ribe] tablename;

春晚这个13亿中国人的盛会,全球中国人的年夜饭,向来不避讳,谁火邀请谁来参加。据悉,“洪荒少女”傅园慧的所在单位已经接到了中央电视台发来的函件,傅园慧将有望亮相2017年央视春节晚会。傅园慧所在单位——浙江体育职业技术学院上周接到中央电视台发来的函件,希望学校同意傅园慧参加2017年央视的春节晚会。该校相关负责人也确认了此事:“从单位的角度,在不影响正常训练的情况下是同意她参加春晚的。”但是其父亲表示她目前在北京封闭式训练,女儿担心参加春晚影响训练,希望有不影响她训练的两全办法。最终我们能否在春晚看到她的亮相值得期待!下面就简单的盘点下那些年上过春晚的明星: 第一次登上春晚舞台的体育明星是乒乓

二、过滤和排序

确实要先了解下半两知识20克半两拍出10万,先了解了,说不定那天你就能在地里挖出一个截图嘉德(比较权威专业的拍卖公司)拍品和宝宝们先欣赏下!拍卖时间:2014春季拍品信息:战国·秦“半两”(直径:32.8~32.4mm;重:20.3g),美品秦朝半两在秦统一六国之前,各国钱币的形状不一,如铲币、刀币、环钱等,且只能在各自统辖的范围内流通;秦始皇在统一六国后,确定统一法律、度量衡、货币和文字,废止了战国后期六国旧钱,在战国秦半两钱的基础上加以改进,圆形方孔的秦半两钱在全国通行,结束了我国古代货币形状各异、重量悬殊的杂乱状态。铸期:公元前211年-前206年铸地:秦处由中央政权统一铸币。至末年,社

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

SELECT *|{[DISTINCT] column|expression [alias], ...} FROM table [WHERE condition(s)];

从2007年进入联盟到如今的10年里,杜兰特的性格发生了很大的变化,刚进入联盟时他是个不折不扣的好好先生,低调、安静,在比赛中很少动怒,场外和鲜有绯闻,但现在的杜兰特,不仅在场上杀器十足,在场下也显得有些“口无遮拦”,花边新闻也越来越多,是什么让他的性格发生了这么大的变化呢?或许是因为他敏感的天性。杜兰特本性肯定是非常纯良的,但是他太敏感了,太在意别人的看法,这一点在他每次和网友互怼时就体现得淋漓尽致,这种敏感的性格和“千年老二”的遭遇让他的压力越来越大,高中时被KB3(后来因意外死亡)力压成为第二高中生、选秀时被奥登力压当选榜眼,进入NBA后一直被詹姆斯压制,是联盟第二人。细心的球迷可能会发

例如:

--查询指定条件数据 select deptno,ename from emp where deptno=10; --字符串和日期包含在单引号中 --字符串大小写敏感,日期格式敏感 select ename,job,deptno from emp where ename='King'; --比较运算符(= > < <= >= <> !=) select ename,sal from emp where sal<1500; --其他比较运算符 --BETWEEN ... AND ... 在两个值之间包含边界 --IN(set) 等于值列表中的一个 --LIKE 模糊查询 --IS NULL 空值 select ename,sal,deptno from emp where deptno in(10,30); select ename,sal,comm from emp where comm is null; --逻辑运算(AND OR NOT) select ename,sal from emp where deptno=10 and sal>1500;

排序

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

ORDER BY 字段 [DESC|ASC]

例如:

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

select ename,sal from emp order by sal desc; --多列排序 --先按第一列排序,如果相同,则按第二列排序,以此类推 select * from emp order by sal desc,hiredate desc;

三、单行函数

1、字符函数

--LOWER 转换小写 --UPPER 转换大写 --INITCAP 首字母大写 select lower(ename) from emp; --CONCAT 接接字符串 --SUBSTR 截取字符串 --LENGTH 字符串长度 --INSTR 查找字符串 --LPAD 左边填充字符 --RPAD 右边填充字符 --TRIM([leading|trailing|both] 字符串1 from 字符串2) --TRIM可以删除两边空格,也可删除其他字符 --REPLACE 替换字符串 select concat('aa','bb') from emp; select substr('abcdefg', 2, 3) from emp; select length('test...') from emp; select instr('hello world', 'w') from emp; select lpad(sal, '10', '0') from emp; select rpad(sal, '10', '*') from emp; select trim(' test ') from emp; --从尾部删除字符串*号 select trim(trailing '*' from '**1212121**') from emp; --把字符串中的22替换成88 select replace('11223344', '22', '88') from emp;

2、数字函数

--ROUND 四舍五入 --TRUNC 截断 --MOD 求余 select round(25.533,2) from dual; select trunc(25.323,2) from dual; select mod(8, 3) from dual;

3、日期

oracle中日期型数据实际含有两个值:日期和时间。

默认格式为:DD-MON-RR

--返回系统时间 select sysdate from dual; --两个日期相减,返回日期之间相差的天数 select ename,(sysdate-hiredate) / 7 "weeks" from emp; --MONTHS_BETWEEN 两日期相差月数 --ADD_MONTHS 指定日期加上若干月数 --NEXT_DAY 指定日期的下一个日期 --LAST_DAY 本月的最后一天 --ROUND 日期四舍五入 --TRUNC 日期截断 select months_between(sysdate,hiredate) from emp;

4、显式数据类型转换

--TO_CHAR(date, 'format_model') --把日期转换成字符串 select to_char(sysdate, 'YYYY MM DD HH:MI:SS') from dual; --TO_CHAR(number, 'format_model') select ename,sal,to_char(sal, '$99,999.00') from emp; --TO_NUMBER(char[,'format_model']) --TO_DATE(char[,'format_model'])

通用函数,适用于任何数据类型,也适用于空值

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

NVL(expr1,expr2) NVL2(expr1,expr2,expr3) NULLIF(expr1,expr2) COALESCE(expr1,expr2,...)

5、条件表达式

在sql语句中使用if-then-else逻辑

case表达式,sql99语法,类似basic,比较繁锁

decode函数,oracle自已语法,类似java,比较简洁

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_expr3 THEN return_expr3 ELSE else_expr] END

DECODE(col|expression, search1, result1 [,search2, result2, ..., ] [,defautl] )

select ename,sal,decode(round(sal/1000), 1, '一倍', 2, '二倍', 3, '三倍', '不知倍数' ) from emp;

6、函数嵌套

单行函数可以嵌套,嵌套函数的执行是由内到外。

四、分组函数

分组函数作用于一组数据,并对一组数据返回一个值。

常用组函数

--AVG --COUNT --MAX --MIN --SUM select sum(sal) as "total" from emp; select max(sal) from emp; select count(*) from emp where deptno=10; select count(distinct deptno) from emp;

分组数据

通过GROUP BY可以将数据分成若干组

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

select deptno,avg(sal) from emp group by deptno;

(*注意:在select列表中所有未包含在组函数中的列都必须包含在group by中。)

--多列分组 select deptno,job,avg(sal) from emp group by deptno,job;

过滤分组

通过HAVING子句对分组进行过滤

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

select deptno,avg(sal) from emp group by deptno having deptno in(10,20);

(*注意:不能在where子句中使用组函数,having子句中可以。)

嵌套组函数

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

select max(avg(sal)) from emp group by deptno;

五、多表查询

oracle的连接  sql99的连接

等值连接        cross joins

不等值连接     natural joins

外连接           using clause

自连接           full or two sided outer joins

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

SELECT table1.column, table2.column FROM table1,table2 WHERE table1.column1=table2.column2;

--等值连接 select d.dname,e.ename,e.sal from emp e, dept d where e.deptno=d.deptno; --多连接条件和and操作符 select d.dname,e.ename,e.sal from emp e, dept d where e.deptno=d.deptno and e.deptno=10;

表的别名

1、使用表别名可简化查询

2、使用表名前缀可以提高执行效率

3、如果使用了表的别名,则不能再使用表的真名。

--不等值连接 --查询员工部门名称和工资等级 select d.dname, e.ename, e.sal, s.grade from emp e, dept d, salgrade s where e.deptno = d.deptno and e.sal >= s.losal and e.sal <= s.hisal;

外连接语法

外连接查询可以查询不满足连接条件的数据。

外连接的符号是(+)

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column(+) = table2.column; SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column= table2.column(+) ;

--查询部门人数 select d.dname, d.deptno, count(e.empno) from emp e, dept d where e.deptno(+) = d.deptno group by d.deptno,d.dname;

自连接

--查询员工的上级 select e.ename as "员工", e2.ename as "上级" from emp e, emp e2 where e.empno = e2.mgr;

使用sql:1999语法连接

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

SELECT table1.column, table2.column FROM table1 [CROSS JOIN table2] | [NATURAL JOIN table2] | [JOIN table2 USING (column_name)] | [JOIN table2 ON(table1.column_name=table2.column_name)] | [LEFT|RIGHT|FULL OUTER JOIN table2 ON(table1.column_name=table2.column_name)];

使用cross join连接的表产生叉集,叉集和笛卡尔集是相同的。

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

select e.ename,d.dname from emp e cross join dept d;

使作natural join自然连接,会以两个表中具有相同名字的列为条件创建等值连接。

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

select e.ename,d.dname from emp e natural join dept d;

使用using创建连接,用natural join创建等值连接时,可以使用using指定等值连接中需要用到的列。

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

select e.ename,d.dname from emp e join dept d USING (deptno);

使用on创建连接,可以指定额外的连接条件。

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;

使用on创建多表连接

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

select e.ename, d.dname, e2.ename from emp e join dept d on e.deptno = d.deptno join emp e2 on e.empno = e2.mgr;

内连接和外连接

在sql:1999中,内连接只返回满足连接条件的数据。

两个表在连接过程中除了返回满足连接条件的行以外,还返回左(右)表中不满足条件的行,这种称为左(右)外连接。

两个表在连接过程中除了返加满足连接条件的行以外,还返回两个表中不满足条件的行,这种连接称为满外连接。

你好,我觉得书不在于多,关键在于你阅读之后懂了多少。 对于oracle初学者,我建议精读一本书就行了,可以多读几次,反复温习。 我推荐一本书《涂抹Oracle—三思笔记之一步一步学Oracle》,我见过的最通俗易懂的技术书籍,里面的文字都是大白话,

--左外连接 select e.ename, d.dname from emp e left outer join dept d on e.deptno = d.deptno;

--右外连接,返回右表中不满足条件的行 select e.ename, d.dname from emp e right outer join dept d on e.deptno = d.deptno;

--满外连接 select e.ename, d.dname from emp e full outer join dept d on e.deptno = d.deptno;

更多关于Oracle相关内容感兴趣的读者可查看本站专题:《Oracle常用函数汇总》、《Oracle日期与时间操作技巧总结》及《php+Oracle数据库程序设计技巧总结》

希望本文所述对大家Oracle数据库程序设计有所帮助。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

Oracle从入门到精通的目录

丛书序

前言

第一篇 数据库安装篇

第1章 Oracle 11g数据库简介 1

1.1 认识Oracle 11g 1

1.1.1 Oracle的成长历程 1

1.1.2 了解最新版本Oracle 11g 2

1.1.3 Oracle与SQL Server 2

1.2 回忆Oracle的产品版本 3

1.3 学习Oracle 11g的新特性 4

1.3.1 数据库管理部分 4

1.3.2 PL/SQL部分 5

1.4 小结 5

1.5 习题 5

第2章 Oracle 11g的安装与测试 6

2.1 使用Oracle 11g的基本条件 6

2.1.1 硬件条件 6

2.1.2 软件条件 6

2.2 在Windows 2003系统中安装Oracle 11g 7

2.2.1 获取Oracle 11g的安装文件 7

2.2.2 安装Oracle 11g 8

2.2.3 安装中遇到的问题 16

2.3 移除Oracle 11g 17

2.3.1 停止服务列表的5个服务 17

2.3.2 卸载Oracle产品 18

2.3.3 删除注册表项 18

2.3.4 删除环境变量 19

2.3.5 删除目录并重启计算机 19

2.4 小结 19

2.5 习题  20

第二篇 数据库基础篇

第3章 熟悉数据库 21

3.1 什么是数据库 21

3.1.1 了解数据管理的历史 21

3.1.2 数据库的模型 23

3.1.3 学习数据库的*模式和二级映像 25

3.1.4 数据库中的相关术语 26

3.1.5 数据库设计的完整性 28

3.2 范式-设计关系型数据库的准则 28

3.2.1 第一范式-关系型数据库设计的第一步 29

3.2.2 第二范式-关系型数据库设计的第二步 29

3.2.3 第三范式-关系型数据库设计的第三步 30

3.3 绘制E-R图设计数据库 30

3.3.1 绘制E-R图的基本要素 30

3.3.2 E-R图绘制实例 31

3.4 小结 33

3.5 习题 33

第4章 SQL基础 34

4.1 SQL-数据库沟通的语言标准 34

4.1.1 什么是SQL 34

4.1.2 了解SQL的种类 34

4.2 Oracle 11g中支持的数据类型 35

4.2.1 查看Oracle 11g中的数据类型 35

4.2.2 常用数据类型 37

4.3 数据定义语言(DDL) 38

4.3.1 使用Create语句创建表 38

4.3.2 使用Alter语句