Oracle教程第一篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Phone_1070333541/article/details/82724862

一、安装省略

建议安装虚拟机VMWare,向虚拟机内安装Oracle,本机安装可视化工具 PLSQL来练习。

二、Oracle简介

2.1.真正的网络化、集群化的服务器操作系统。
2.2.操作难度高,含金量大。
2.3.分布式、集群化、大数据处理能力。
2.4.Oracle认证体系 OCA 、DCP、OCM。

三、Oracle的体系结构

3.1.数据库 (DataBase)
空kOracle的数据库是数据的物理存储。Oracle的数据库概念和其他的数据库有些不一样,这里的数据库是一个操作系统,只有一个库。
3.2.实例
空k一个Oracle的实例由一系列的后台进程和内存结构组成。一个数据库可以有N个实例
3.3.数据文件(DBF)
空k数据库文件是数据库的物理存储单位。如果要删除某个数据文件,只能删除其表空间才行。
3.4.表空间
空k1) 表空间是Oracle对物理数据库上相关数据文件的逻辑映射。
空k2) 每个数据库至少有一个表空间,称为System表空间。
空k3) 一个数据库文件只能属于一个表空间。
空k4) 外部统一管理,管理一定数量的数据文件。
空k5) 内部结构 --> 段、区、数据块、行(对象)。
3.5.用户
空k1) 用户是在实例下建立的。
空k2)不同的实例可以建相同名字的用户。
空k3) 表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中
3.6.图解

在这里插入图片描述

四、操作顺序(之后详解)

4.1.创建表空间。
4.2.创建用户。
4.3.创建表,操作数据。

五、SQL

5.1.包含。
空k 1) DML-->数据库操作语言
空k 2) DQL-->数据查询语言
空k 3) DDL-->数据定义语言
空k 4) DCL-->数据库控制语言
空k 5) TCL-->事务控制语言

5.2.DQL详解。
空k1)别名要用双引号括起来,单引号为列。
空k2)去重关键字 distinct。
空k3)四则运算。
空空空空值问题。
空空空空K当我要计算(两个字段)工资加奖金,有一字段为空,计算结果就变成空。
空空空解决。
空空空空K见下方函数。
空k4)连接字符串。
空空空|| 而不是 +
空空空示例:select job ||’:’|| name from emp。
空空空结果:职位:姓名。
空k5)查询有奖金的雇员。
空空空select * from emp where bouns is not null and bouns <> 0
空空空简化为:
空空空select * from emp where bouns > 0
空k6)范围查询。
空空空between and 包括边界值。
空空空范围查询时间类型 between date ‘1981-01-01’ and date ‘1981-12-31’;
空k7)查询字段值的大小写问题。
空空空见下方函数解决。
空k8)in 关键字。
空空空select * from where empno in (7521,7232,7213);
空k9)排序查询时null值放前面和后面 NULLS FIRSTNULLS LAST
空空空select * from emp order by bouns nulls last。
空k10)排序前先过滤数据提高效率。

六、单行函数

6.1.字符类型。
空k 1)大小写转换。
空空空 select lower(ename) from emp
空空空 select upper(ename) from emp
空k 2)连接字符串
空空空 select concat('A','B') from dual
空k 3)截取字符串
空空空 select substr('hello',1,3) from dual; (索引 0 和 1 一样) 空k4)获取字符长度
空空空select length('hello') from dual
空k5)字符串替换
空空空select replace ('hello,Oracle','l','x') FROM DUAL
6.1.数值类型。
空k1)四舍五入
空空空select round (123.456,2) from dual; 2-->留几位小数
空k2)不四舍五入
空空空select trunc (123.456,2) from dual;
空k3)取余数
空空空select mod(5,2) from dual 6.2.日期类型。
空k1)查询员工入职的周数
空空空select round((sysdate - hiredate)/7 ,0) c1 from emp; c1-->第一列
空k2)查询入职月数(计算两个时间段中间的月数)
空空空select round( months _between(Sysdate,hiredate) ,0) c1 from emp
空k3)查询三个月后的时间
空空空select add_months(sysdate,3) from dual
6.2.转换函数。
空k1) 数字转字符
空空空to_char
空空空select to_char(sal,‘L999,999,999.00') from emp
空空空9 代表数字 0代表0
空k2) 日期转字符
空空空to_char
空空空select to_char(sysdate,‘yyyy-MM-dd hh24:mm:ss') from dual
空k3) 字符转数字或时间
空空空to_number to_date
空空空select to_number('123.456') from dual
空空空select to_date ('2017-09-14',‘yyyy-MM-dd') from dual; //注意单引号
空k4) 解决空值问题
空空空nvl 如果为空就选后面的值
空空空select ename,sal*12+nvl(comm,0) from emp
空空空nvl2 如果目标不为 NULL 取第一个 为 NULL 取第二个(类似三目)
空空空SELECT NVL2(E.COMM,E.COMM,0) FROM EMP E
空空空NULLIF 如果两个值相等 返回一个 NULL
空空空SELECT NULLIF(E.COMM,E.COMM) FROM EMP E
空空空COALESCE 配置多个表达式 返回一个为空的 如果都为空 则返回空
空空空SELECT COALESCE(NULL,1,NULL,2) FROM DUAL
6.3.条件表达式。
空k1) 计算员工的工资税率等级
空空空select ename,sal,decode(trunc(sal/2000,0),
空空空空空空空空空空空空空空空空空空空0, 0.00,
空空空空空空空空空空空空空空空空空空空1, 0.09,
空空空空空空空空空空空空空空空空空空空2, 0.20,
空空空空空空空空空空空空空空空空空空空0.30) from emp;
空空空相当于:
空空空SELECT E.ENAME 姓名,E.SAL 薪资,
空空空CASE
空空空WHEN E.SAL >= 500 AND E.SAL < 1500 THEN 1
空空空WHEN E.SAL >= 1500 AND E.SAL < 2000 THEN 2
空空空WHEN E.SAL >= 2000 AND E.SAL < 2500 THEN 3
空空空WHEN E.SAL >= 3000 AND E.SAL < 3500 THEN 4
空空空ELSE 5
空空空END 薪资等级
空空空FROM EMP E;

七、多行函数

7.1.也可以叫聚合函数。
7.2.平均。
空空空 select round(avg(sal),2) from emp
7.3.count(面试题)。
空空空 count(*) count(1) count(主键) 三种方式 哪个快。
空空空空 count(主键)最快,索引机制。
空空空空空 数据已经按照主键形成了一份记录(目录)
空空空空 count(1) 居中。
空空空空 count(*) 最慢。

教程第二篇传送门。

猜你喜欢

转载自blog.csdn.net/Phone_1070333541/article/details/82724862