oracle基本查询用法入门示例


本文整理自网络,侵删。

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

一、基本select语句

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

例如:

--查询所有数据
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;

二、过滤和排序

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

例如:

--查询指定条件数据
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;

排序

ORDER BY 字段 [DESC|ASC]

例如:

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'])

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

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

5、条件表达式

在sql语句中使用if-then-else逻辑
case表达式,sql99语法,类似basic,比较繁锁
decode函数,oracle自已语法,类似java,比较简洁

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、函数嵌套

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

四、分组函数

阅读剩余部分

相关阅读 >>

oracle关于时间日期的操作

oracle 报警日志如何查看?

jdbc连接oracle数据库功能示例

oracle数据库的启动与关闭方法

c#实现的操作oracle通用类

oracle表被锁定的完美解决方法

oracle正则表达式regexp_like的用法详解

oracle存储过程及调用

详解oracle 日期格式(总结)

oracle存储过程是什么?

更多相关阅读请进入《oracle》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...