DQL:数据查询语言
至少包含两部分:
1:SELECT子句
2:FROM子句
SELECT之后指定要查询的字段,可以
使用"*"查询所有字段,也可以单独指定
具体的字段,或者一个函数,表达式。
FROM之后指定要查询的表
SELECT ename,job,sal,deptno
FROM emp
查看函数或表达式的结果
SELECT ename,sal*12
FROM emp
字符串函数
1:CONCAT(char1,char2)
连接字符串
SELECT CONCAT(ename,sal)
FROM emp
SELECT
CONCAT(CONCAT(ename,':'),sal)
FROM emp
可以使用"||"的形式连接字符串
SELECT
ename||':'||sal
FROM
emp
LENGTH(char)函数
统计指定字符串的长度
对CHAR统计长度是固定的,通常
对VARCHAR2类型字段统计。
SELECT ename, LENGTH(ename)
FROM emp
UPPER(),LOWER(),INITCAP()
将字符串转换为全大写,全小写
以及首字母大写
dual:伪表,当查询的内容与现实的
任何一张表没有关系时,可以使用
伪表来填充FROM子句,伪表只会查询
出一条记录
SELECT
UPPER('helloworld'),
LOWER('HELLOWORLD'),
INITCAP('hello world')
FROM dual
TRIM,LTRIM,RTRIM
去除字符串两边的指定字符
SELECT
TRIM('e' FROM 'eeeeeliteeee')
FROM dual
SELECT
LTRIM('etstesteliteseseses','set')
FROM dual
LPAD,RPAD
补位函数
SELECT
RPAD(sal,5,' ')
FROM
emp
SUBSTR(str,m,n)
截取当前字符串,从m指定的
位置开始连续截取n个字符。
n可以不指定,不指定则截取到
字符串末尾,n若超过该字符串
可以截取的最大值时,也是截取到
字符串末尾。
需要注意:数据库下标从1开始!!!!
SELECT
SUBSTR('thinking in java',1,5)
FROM
dual
INSTR(char1,char2,n,m)
查看char2在char1中的位置
n:可以不指定,不指定默认值为1
表示从第几个字符开始检索
m:可以不指定,默认值为1
表示第几次出现
SELECT
INSTR('thinking in java','in',
4,2)
FROM
dual
数值函数:
ROUND(n,m)
四舍五入,保留n的小数点后m位。
若m不指定或为0则表示保留到整数
为,负数则是十位以上的数字。
SELECT ROUND(45.678, 2) FROM DUAL
SELECT ROUND(45.678, 0) FROM DUAL
SELECT ROUND(45.678, -1) FROM DUAL
TRUNC()
参数与ROUND一致,截取数字,不进行四舍五
入操作
SELECT TRUNC(45.678, 2) FROM DUAL
SELECT TRUNC(45.678, 0) FROM DUAL
SELECT TRUNC(45.678, -1) FROM DUAL
MOD(m,n)
求余数
SELECT
ename, sal, MOD(sal, 1000)
FROM emp;
CEIL(n),FLOOR(n)
向上取整与向下取整
SELECT CEIL(45.678) FROM dual
SELECT FLOOR(45.678) FROM dual
日期相关函数
SYSDATE,SYSTIMESTAMP
这两个关键字表示两个内部函数
返回的都是当前系统时间,只不过
一个以DATE型返回,一个以时间戳
类型返回。
SELECT SYSDATE FROM dual
SELECT SYSTIMESTAMP FROM dual
TO_DATE函数
可以将一个字符串按照指定的日期格式
解析为一个DATE类型的值
日期格式字符串中出现了除英文,数字,符号
以外的其他字符时都要使用双引号括起来。
SELECT
TO_DATE('1992年08月05日 22:12:44',
'YYYY"年"MM"月"DD"日" HH24:MI:SS' )
FROM
dual
日期可以比较大小与计算
时间越晚的越大
两个日期相减,差为相差的天数
对一个日期加减一个数字等于加减指定的天数
SELECT SYSDATE+1 FROM dual
查看每个员工到今天为止入职多少天了?
SELECT ename,SYSDATE-hiredate
FROM emp
查看自己到今天为止活了多少天?
SELECT
SYSDATE-TO_DATE('1992-08-02','YYYY-MM-DD')
FROM
dual
查看82年以后入职的员工?
SELECT ename,hiredate
FROM emp
WHERE hiredate>TO_DATE('1982-01-01','YYYY-MM-DD')
TO_CHAR()
可以将给定的日期按照指定的日期
格式转换为字符串
SELECT
TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS')
FROM
dual
RR在日期格式中也是2位数字表示
的年,但是与YY不同,它可以在
解析字符串的年时判定世纪
SELECT
TO_CHAR(
TO_DATE('49-08-08','RR-MM-DD'),
'YYYY-MM-DD'
)
FROM
dual
LAST_DAY(date)
返回给定日期所在月的月底
查看每个员工入职所在月的月底?
SELECT ename,LAST_DAY(hiredate)
FROM emp
ADD_MONTHS(date,i)
对指定的日期加上指定的月
若i为负数,则是减去。
查看每个员工入职30周年纪念日?
SELECT
ename,ADD_MONTHS(hiredate,12*30)
FROM
emp
MONTHS_BETWEEN(date1,date2)
计算两个日期之间相差的月
查看每个员工至今入职多少个月了?
SELECT
ename,MONTHS_BETWEEN(SYSDATE,hiredate)
FROM
emp
NEXT_DAY(date,i)
返回给定日期第二天起一周之内
的周几
SELECT NEXT_DAY(SYSDATE,4)
FROM dual
LEAST、GREATEST
求最小值与最大值,参数一个以上即可。
常用与日期,数字的求值
SELECT
LEAST(SYSDATE,
TO_DATE('2008-08-05',
'YYYY-MM-DD')
)
FROM DUAL;
EXTRACT()
提取一个日期的指定时间分量
对应的值
1982年入职的员工?
SELECT ename,hiredate
FROM emp
WHERE EXTRACT(YEAR FROM hiredate)=1982
NULL值操作
CREATE TABLE student
(id NUMBER(4), name CHAR(20), gender CHAR(1));
INSERT INTO student VALUES(1000, '李莫愁', 'F');
INSERT INTO student VALUES(1001, '林平之', NULL);
INSERT INTO student(id, name) VALUES(1002, '张无忌');
UPDATE student
SET gender = NULL
WHERE id=1000
SELECT * FROM student
删除性别为NULL的记录
判断一个字段的值是否为空,要使用
IS NULL或IS NOT NULL
不能使用"="判断NULL
DELETE FROM student
WHERE gender IS NOT NULL
CREATE TABLE student
(id NUMBER(4),
name CHAR(20),
gender CHAR(1) NOT NULL);
NULL与字符串连接等于什么也没做
NULL与数字运算记过还为NULL
查看每个员工的收入情况:
SELECT
ename,sal,comm,sal+comm
FROM emp
空值函数:
NVL(f1,f2)
当f1为NULL时,函数返回f2,
若不为NULL,函数返回f1自身。
所以NVL函数的作用是将NULL值
替换为非NULL值。
查看每个员工的收入情况:
SELECT
ename,sal,comm,sal+NVL(comm,0)
FROM emp
查看每个人的奖金情况,有奖金的
则显示为"有奖金",为NULL的则显示
为"没有奖金"
NVL2(f1,f2,f3)
当f1不为NULL时,函数返回f2
当f1为NULL时,函数返回f3
SELECT
ename,sal,comm,
NVL2(comm,'有奖金','没有奖金')
FROM
emp
SELECT
ename,NVL2(comm,sal+comm,sal)
FROM
emp
相关推荐
Oracle数据库学习总结资料.pdf Oracle数据库学习总结资料.pdf 是一份关于 Oracle 数据库的学习总结资料,涵盖了 Oracle 数据库的各个方面,包括 Oracle 的简介、简单查询、标量函数和算数运算、多表查询、列函数和...
Oracle 数据库总结 Oracle 数据库是甲骨文公司的一款关系数据库管理系统,是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。下面是 Oracle 数据库的总结...
"查看登录 Oracle 数据库用户记录" Oracle 数据库是一个强大的关系型数据库管理系统,提供了强大的数据存储和管理功能。为了管理和监控数据库的访问情况,需要对登录 Oracle 数据库的用户记录进行跟踪和查看。本文...
### Oracle数据库日志查看方法详解 #### 一、概述 Oracle数据库是企业级应用中广泛使用的数据库管理系统之一,为了确保数据库系统的稳定运行和快速定位问题,掌握Oracle数据库日志查看方法至关重要。本文将详细...
Oracle数据库知识点总结 章节目录 一、Oracle数据库概述 二、Oracle数据库架构与组件 三、SQL语言基础 四、PL/SQL编程 五、数据库对象管理 六、数据备份与恢复 七、性能优化与安全管理 八、如何学习Oracle数据库 九...
oracle数据库总结oracle数据库总结oracle数据库总结oracle数据库总结
oracle数据库总结
Oracle 数据库的启停 Oracle 数据库的启停是数据库管理员的重要任务之一。启停数据库的过程可以细分为三个步骤:启动实例、挂载数据库、打开数据库。下面将详细讲解 Oracle 数据库的启停过程。 启动数据库 启动...
总结,Oracle数据库设计与优化是一个涉及多方面知识的复杂过程,包括但不限于物理结构设计、SQL优化、索引策略、存储过程使用、性能监控以及备份恢复策略。理解这些核心概念并灵活应用,将有助于构建高效、稳定且...
总结,LabVIEW调用Oracle数据库涉及的关键点有:使用ODBC连接数据库、构建和执行SQL命令、创建和操作数据库表。理解这些概念和步骤,将有助于在LabVIEW环境中有效地管理和操作Oracle数据库。在实际应用中,还要考虑...
### C# 版 Oracle 数据库通用操作类解析 在现代软件开发中,数据库操作是必不可少的一部分,而 C# 结合 Oracle 数据库的应用尤为广泛。本文将深入探讨一个用于简化 Oracle 数据库操作的 C# 类——`ConnForOracle`。...
本文档总结了 Oracle 数据库开发和设计规范的主要内容,包括命名约定、表名规则、存储过程规则、视图规则、索引规则、序列规则、主键规则和外键规则等。 一、命名约定 Oracle 数据库开发和设计规范中,命名约定是...
新建Oracle数据库并连接详细教程 在这篇教程中,我们将学习如何新建Oracle数据库并连接到该数据库。该教程分为两部分:新建Oracle数据库和连接到数据库。 新建Oracle数据库 新建Oracle数据库需要使用Database ...
"Oracle数据库命令个人总结" Oracle数据库命令个人总结是徐博文在2014年3月整理的关于Oracle数据库的命令和心得的总结。下面是从该总结中提取的重要知识点: 1. 查询数据库数据文件的基本字段信息:使用DESC DBA_...
### Oracle数据库克隆总结 #### 一、Oracle数据库克隆概述 在企业级应用中,Oracle数据库因其稳定性和高效性而被广泛采用。随着业务需求的变化和技术的发展,Oracle数据库克隆成为了维护和管理数据库的一项重要...
Access 数据库 MDB 数据文件导入 Oracle 数据库操作步骤 Access 数据库 MDB 文件是 Microsoft Access 应用程序的数据库文件格式,而 Oracle 数据库是关系数据库管理系统。将 Access 数据库 MDB 文件导入 Oracle ...
### Excel导入数据到Oracle数据库详解 #### 一、前言 在日常工作中,我们经常会遇到需要将Excel中的数据批量导入到Oracle数据库的情况。这一过程不仅可以提高工作效率,还能确保数据的一致性和准确性。本文将详细...