申明:本总结参照魔乐的视频《Oracle》,再次表示感谢。但是本人认为此视频讲得并不是很好,传智的会更好一些,观点仅供参考。
一、 Oracle安装及基本命令
1、 配置服务
OracleOra10g_home1TNSListener,表示监听服务,如果客户端想连接到数据库,此服务必须打开,此服务必须打开。
OracleService数据库名,表示数据库的主服务,此服务必须启动。
2、 进入sqlplusw,主机字符串处输入数据库名
3、 设置行缓冲长度
set linesize 长度;
4、 修改每页显示记录的长度
set pagesize 行数;
5、 ed 文件名
可以以相应的工具编辑sql文件
然后通过@文件名 就可以执行文件中的命令
通过@路径 可以访问磁盘上的文件,如@d:/demo.txt /可以省略
如果文件的扩展名是.sql,则扩展名可以省略。
6、 更换用户
conn 用户名/密码 [AS SYSDBA| SYSOPER]
如conn scott/manager
如果现在连接的是超级管理员(sys),则在连接的最后必须写上AS SYSDBA,表示以管理员的身份进行连接。
如: conn sys/change_on_install
conn system/manager
访问不同用户下的表,需要加上相应的用户名,如select * from scott.emp
7、 显示当前连接的是哪个用户
show user;
8、 得到数据库中的所有表
select * from tab;
9、 得到表的详细描述
desc emp;
10、
二、 SQL的分类
1、 DML(Data Manipulation Language, 数据查询语言):用于检索或者修改数据
2、 DDL(Data Definition Language, 数据定义语言):用于定义数据的结构,如创建、修改或者删除数据库对象。
3、 DCL(Data Control Language, 数据控制语言):用于定义数据库用户的权限。
三、 简单查询语句
1、 为显示列起别名
select empno 编号, ename 姓名, job 工作 from emp;
2、 DISTINCT的使用
select distinct job from emp;
3、 使用||作连接操作
select ‘编号是:’||empno||’的雇员,姓名是’||enmae||’工作是:’||job from emp;
4、 支持四则运算功能
select ename, sal*12 income from emp;
5、
四、 限定查询
1、 null(如果字段中不存在内容,则为null)
select * from emp where comm. is not null;(查询含有薪水的雇员儿)
2、 支持逻辑运算符and or
3、 not
select * from emp where not(sal>1500 and comm is not null)
4、 between ……and……(包括两端数据)
select * from emp where sal between 1500 and 3000
支持日期的区间取值
select * from emp where hiredate between ‘1-1月 -81’ and ’31-12月 -81’
5、 Oracle对字符串的大小写敏感
6、 [not] in(支持所有类型)
select * from emp where empno in (7369, 7499, 7521);
7、 模糊查询
“%”:可以匹配任意长度的内容
“_”:可以匹配一个长度的内容
如:查询出所有孤雁姓名中第二个字母是M的信息
select * from emp where name like ‘_M%’
查询出在1981年雇佣的雇员信息
select * from emp where hiredate like ‘%81%’
查询工资中包含6的雇员信息
select * from emp where sal like ‘%6%’
如果使用like时,没有查询关键字,则表示查询全部
8、 支持条件运算符,其中不等号有两种表示形式: <> !=
9、 distinct
select {distinct} job from emp
10、 order by 子语中,asc 表示升序, desc表示降序
五、 单行函数
1、 字符函数
a) upper(str) 将小写字母变成大写字母
select upper(‘smith’) from dual
b) lower(str) 将一个字符串变成小写字母表示
c) initcap(str) 将单词的第一个字母大写
select initcap(‘HELLOW word’) from dual;
d) contact(str1, str2) 字符串连接操作
e) substr(str, startPos, length) 截取字符串,第二个参数为开始位置,第三个位置为长度,当第一个参数为0时,oracle会当做1处理,第三个参数省略时,表示截取到字符串尾部。第二个参数为负时,表示从后往前数的位置。
f) length(str) 返回字符串长度
g) replace(str, replacedStr, replaceStr ) 替换字符串,第二个参数为被替换的字符串,第三个参数为替换字符串
select substr(‘hello’, 1, 3), length(‘hello’), replace(‘hello’, ‘l’, ‘x’) from dual
显示所有雇员的姓名及姓名后的三个字母
select ename, substr(ename, length(ename)-2) from emp 或者
select ename, substr(ename, -3, 3) from emp;
2、 数值函数
a) round(number) 四舍五入,默认截取所有小数,round(number, length),第二个参数为保留的小数点位数,当为负时表示舍去的整数位数。
select round(789.536) from dual output:790
select round(789.536, -2) from dual output:800
b) trunk(number) 截取小数位,用法和round相同,只是不进行四舍五入,而仅是进行舍去操作。
select trunk(789.536, -2) output:700
c) mod(number1, number1) 取余,即number1 mod number2
3、 日期函数
a) 日期+(-)日期=日期
日期-日期=数字(天数)
b) 显示当前日期:
select sysdate from dual;
显示雇员进入公司的星期数
select empno, ename, round(sysdate-hiredate)/7 from emp;
c) months_between(date1, date2): 求出给定日期范围的月数
select empno, ename, months_between(sysdate, hiredate) from emp;
d) add_months(date, number) 在指定的日期上加上指定的月数
select add_months(sysdate, 4);
e) next_day():下一个日期是哪一天
select next_day(sysdate, ‘星期一’) from dual;
f) last_date(date): 求出给定日期的每月最后一天的日期
找出每月倒数第三天受雇的所有员工
select * from emp where last_day(hiredate)-2=hiredate
4、 转换函数
a) to_char():转换成字符串
select empno, ename, to_char(hiredate, ‘yyyy’) year,
to_char(hiredate,’mm’) months,
to_char(hiredate, ‘dd’) day
from emp;
用作日期的转换
to_char(hiredate, ‘yyyy-mm-dd’)
在日期格式前加上fm,则会去除前导0
to_char(hiredate, ‘fmyyyy-mm-dd’)
可以用于格式化数字,格式字符串中可以使用$(表示美元)L(Local的缩写,以本地的语言进行金额的显示)
to_char(sal, ’L99.999’)
b) to_number(str): 转换成数字
c) to_date():转换成日期
select to_date(‘2009-02-16’, ‘yyyy-mm-dd’) from dual;
5、 通用函数
a) nvl(col, value) 如果col的值为null,则表达式的值为value,否则为col
select nvl(comm, 0)
b) decode(col/expression, value1, result1, value2, result2, … , [default]) 相当于if… else if … else if… else… 语句
select ename 雇员姓名, decode(job, ‘CLERK’, ‘业务员’, ‘SALESMAN’, ‘销售人员’, ‘MANAGER’, ‘经理’ ) 职位 from emp;
6、
六、 查询语句中应该注意的问题
1、 左右连接
选择一个雇员的姓名和其领导的姓名
select e.ename, m.ename from emp from emp e, emp m where e.empno=m.empno(+)
此时使用做链接,雇员信息将全部显示出来,即使没有领导信息。
+在左边表示右连接,+在右边表示左连接。左连接表示左边数据全部显示,有链接表示右表数据全部显示。
2、 SQL1999语法对SQL的支持
a) 交叉连接(corss join用于产生笛卡尔积)
select * from emp cross join dept;
b) 自然连接(nature join)
select * from emp nature join dept;
c) using子句:用于指定连接的字段
select * from emp join dept using(deptno) where deptno=30;
d) on子句,用于指定连接条件
select * from emp e join dept d on(e.deptno=d.deptno) where e.deptno=30;
e) 左(外)连接,右(外)连接
select e.enme, e.ename from emp e RIGHT OUTER JOIN dept d
ON(e.deptno=d.deptno); 即d中的所有行全部显示
左外连接同理。
七、 组函数和分组统计
1、 组函数
COUNT([DISTINCT|ALL] 列名|*)
MAX([DISTINCT|ALL] 列名|*)
MIN([DISTINCT|ALL] 列名|*)
AVG([DISTINCT|ALL] 列名|*)
SUM([DISTINCT|ALL] 列名|*)
2、 如果程序中出现了分组函数,则有两种使用的情况
a) 程序中存在了group by,并指定了分组条件,这样可以将分组条件一起查询出来。
b) 如果不适用分组,则只能单独使用分组函数
3、 分组函数不允许在where语句中出现,分组条件只能通过having指定
4、 组查询语法
select … where …[ group by … having … ] [order by … ]
5、 显示非销售人员工作名称及从事同一工作雇员的月工资的总和,并且满足同一工作的月工资合计大于$5000,输出结果按月工资的合计排序
select job, sum(sal) su
from emp
where job<>’SALSMAN’
group by job having sum(sa)>5000
order by su
6、 组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组条件的查询语句。
select max(avg(sal)) from emp group by deptno
八、 子查询
1、 子查询在操作中分为以下三类
a) 单列子查询:返回结果是一列的内容
b) 多行子查询:返回多个列,有可能是一条完整的记录
c) 多行子查询:返回多条记录
2、 要求查询出:部门名称、部门的员工数、部门的平均工资,部门最低收入雇员的姓名。
select d.name, ed.ct, ed.av
from dept d,
( select deptno count(empno) ct, avg(sal) av, min(sal) min
from emp
group by depno
) ed, emp e
where d.deptno = emp.deptno and d.deptno=emp.deptno and e.sal=ed.min
3、 在子查询中,存在以下三种操作符号
a) IN
求出每个部门的最低工资的员工信息
select * from emp where emp.sal in
(select min(sal) from emp group by deptno)
b) ANY
i. =ANY 与IN操作完全相同
select * from emp
where sal=any(select min(sal) from emp group by deptno)
ii. >ANY 比里面最小的值要大
select * from emp
where sal>any(select min(sal) from emp group by deptno)
iii. <ANY 比里面最大的值要小
select * from emp
where sal>any(select min(sal) from emp group by deptno)
c) ALL
i. >ALL 比最大的值要大
ii. <ALL比最小的值要小
九、 事务处理
1、 事务处理命令
a) 事务提交:commit
b) 事务回滚:rollback
2、 Oracle中可能发生死锁
一个session如果更新了数据库中的记录,其他session是无法立刻更新的,要等待对方提交之后才允许更新。
十、 数据库的更新操作
1、 复制表
create table 表名称 as (子查询),此语法只在oracle中起作用
如果子查询中的where条件是一个非真条件,则只复制表结构,不复制表数据。
2、 固定格式日期的插入,需要使用日期函数to_date();
十一、 数据库中的主要数据类型
No.
|
数据类型
|
描述
|
1
|
varhcar, varchar2
|
表示一个整数,有长度限制,为255
|
2
|
number
|
number(n):表示一个整数,整数长度为n,可以用int
|
number(m, n):表示一个小数,数字小数长度为n,张数长度为m-n,可以用float
|
3
|
date
|
表示日期的类型,日期要按照标准的日期格式存放
|
4
|
clob
|
大对象,表示大文本数据,一般可以存放4G的文本
|
5
|
blob
|
大对象,表示二进制数据,最大可以存放4G,例如:存放电影,歌曲,图片
|
分享到:
相关推荐
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着核心地位。以下是对Oracle数据库一些关键知识点的详细阐述,这些内容对于面试和日常开发工作都非常关键。 一、SQL基础 Oracle SQL是...
Oracle是世界上最流行的关系型数据库管理系统之一,以其强大的数据处理能力和高度的可扩展性而闻名。在本文中,我们将深入探讨Oracle数据库系统的核心概念、管理和优化技术。 首先,Oracle数据库采用SQL(结构化...
Oracle OCI(Oracle Call Interface)是Oracle数据库提供的一种C语言编程接口,它允许程序员直接与Oracle数据库进行通信,实现高效的数据存取和管理。这个接口提供了丰富的功能,包括SQL语句执行、事务控制、游标...
Oracle 游标是 Oracle 数据库中的一种重要概念,用于查询数据库,获取记录集合(结果集)的指针。游标可以看作是一个临时表,你可以对其每一行的数据进行任意的操作。本文将对 Oracle 游标的概念、分类、声明方式、...
以下是我对Oracle学习的一些心得和总结,主要聚焦于数据库对象,尤其是表及其约束。 1. **数据库对象**: 数据库对象是Oracle中的基本组成部分,包括表、视图、索引、存储过程、函数、触发器等。这些对象共同构成...
以上只是Oracle笔记总结的一部分,Oracle数据库系统的深度和广度远不止于此,包括数据库设计、PL/SQL编程、数据库复制、数据迁移等都是Oracle学习的重要领域。通过深入学习和实践,你可以更好地理解和驾驭这个强大的...
Oracle 学习总结 Oracle 是一种关系数据库管理系统,由 Larry Ellison 和 Bob Miner 于 1977 年创立。它是一种对象关系数据库管理系统,支持多种编程语言,包括 Java、Python、C++ 等。 一、创建 Oracle 数据库...
#### 一、Oracle 用户管理 1. **创建用户** - 命令格式:`CREATE USER 用户名 IDENTIFIED BY 密码;` - 示例:`CREATE USER john IDENTIFIED BY secret;` 2. **赋予权限** - 权限分为两种:系统权限和对象权限...
Oracle数据库是世界上最广泛使用的数据库管理系统之一,主要用于存储和管理企业级的数据。以下是对Oracle的一些关键知识点的详细说明: 1. **登陆与用户管理**: - 使用`sqlplus`命令行工具,通过`conn 用户名/...
本文将根据"oracle学习总结(适合刚学习oracle的人)"这一主题,深入探讨Oracle数据库的基础知识,帮助初学者建立起对Oracle的基本理解。 1. **Oracle简介**:Oracle数据库是由美国甲骨文公司开发的一款产品,它...
这个"oracle精品实例,练习总结"的压缩包文件显然包含了nickcheng个人整理的一系列关于Oracle数据库的操作实例和学习心得,旨在帮助用户深入理解和应用Oracle技术。下面我们将深入探讨Oracle数据库的一些关键知识点。...
### ORACLE安装总结 #### 一、安装前的准备工作 在进行Oracle数据库的安装之前,为了确保安装过程的顺利进行以及避免可能出现的问题,我们需要完成一系列的准备工作。这些准备工作包括但不限于以下几点: 1. **...
一、Oracle入门总结 Oracle数据库的基本概念包括数据库实例、表空间、数据文件、控制文件、重做日志文件等。入门学习时,首先要理解这些概念,了解它们在数据库中的作用和相互关系。Oracle的安装和配置是初学者的...
"Oracle核心基础总结"涵盖了Oracle数据库系统的基础知识,对于初学者和需要巩固基础的IT从业者来说,是非常宝贵的资源。以下是Oracle核心基础的一些关键知识点: 1. 数据库概念:了解数据库的基本构成,如表、索引...
### Oracle数据库总结 #### 一、Oracle数据库安装与卸载详解 ##### 1. Oracle数据库安装注意事项 在安装Oracle数据库之前,确保系统满足最低硬件和软件要求。安装过程中需特别注意的是用户权限设置,尤其是对`...
在IT行业中,SQL(Structured Query Language)是一种用于管理和处理关系数据库的强大语言,而Oracle数据库是全球最广泛应用的关系型数据库管理系统之一。本资料包"SQL(oracle).rar"显然是针对Oracle数据库系统,...
"Oracle DBA 面试题总结" Oracle DBA 面试题总结是 Oracle 数据库管理员需要掌握的重要知识点的汇总。本文将从 SQL 调优、执行计划、索引、绑定变量、执行计划稳定性、排序相关内存等方面对 Oracle DBA 面试题进行...
这套“OraclePPT总结及笔记”资料将覆盖以上所有知识点,并可能包含更深入的解释、示例和实践指南,对于希望在Oracle数据库领域提升技能的青软实训学员来说,无疑是一份宝贵的参考资料。通过学习和实践,学员们可以...
中软工作总结一:oracle