Oracle快速入门(基本概念+查询大全)

一、Oracle的体系结构

1、Oracle相关概念

(1)数据库

文件系统
Oracle数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,而数据库实例则是管理数据库文件的内存结构。此外,数据库是由后台进程组成。

(2)数据库实例

通常情况下,oracle数据库只有一个实例ORCL,‘’

数据库和实例是紧密相连的,所以我们一般说的Oracle数据库,通常指的就是实例和数据库。

(3)表空间(逻辑单位)

Oracle数据库使用逻辑存储结构对磁盘空间使用情况进行精细控制。以下是Oracle数据库中的逻辑存储结构:
● 数据块(Data blocks)
● 范围(Extents)
● 段(Segments)
● 表空间(Tablespaces)
Oracle快速入门(基本概念+查询大全)_第1张图片

(4)数据文件(物理单位)

物理存储结构是存储数据的纯文件。当执行一个CREATE DATABASE语句来创建一个新的数据库时,创建文件

(5)逻辑和物理存储结构之间的关系

Oracle快速入门(基本概念+查询大全)_第2张图片

(6)MySQL和Oracle的区别
  • 对比MySQL和Oracle创建项目

MYSQL:创建一个数据库,创建相应的表
Oracle:创建一个表空间,创建用户,用户去创建表

  • Oracle和MySQL的差别
    Oracle是多用户的,Mysql是多数据库的
    1)都是遵循SQL标准
    2)不同厂家,不同的数据库产品,但是有自己的方言。
    3)使用自己的方言也可以完成相同订单功能
    4)Oracle安全级别较高,MySQL是开源免费
(7)下图说明了Oracle数据库体系结构:

Oracle快速入门(基本概念+查询大全)_第3张图片

二、SCOTT和HR账户

在这里插入图片描述

1、SCOTT用户下的表

部门表
Oracle快速入门(基本概念+查询大全)_第4张图片

2、HR用户下的表

Oracle快速入门(基本概念+查询大全)_第5张图片

三、基本查询,在登录SCOTT用户后

1、SQL:结构化查询语言

2、SQL分4类

(1)DDL:数据定义语言

create
alter
drop
truncate

(2)DML:数据操纵语言

insert
update
delete

(3)DCL:数据控制语言

安全级别
授权
grant
revoke

(4)DQL:数据查询语言

select
from字句
where字句

3、查询语句的结构

select {列名}  {*}  from 表名 {where 条件} {group by 分组条件}{having 过滤}{order by 排序}

select * from emp;

4、方言特征

select 1+1;//在mysql当中会输出2不会报错,但是在Oracle当中会报错

在Oracle当中需要这样做

select 1+1 from dual;

Oracle快速入门(基本概念+查询大全)_第6张图片
dual表是oracle的虚表,伪表,主要是用来补齐语法结构

四、别名查询:使用as 关键字,可以省略

select ename 姓名,sal 工资 from emp;

在刚安装完Oracle需要解决中文乱码的问题
中文乱码问题解决

1、查看服务器端编码

select userenv('language') from dual;

我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK

2、执行语句

select * from V$NLS_PARAMETERS 

查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样。
如果不是,需要设置环境变量.
否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码.

3、设置环境变量

计算机->属性->高级系统设置->环境变量->新建
设置变量名:NLS_LANG,变量值:第1步查到的值, 我的是AMERICAN_AMERICA.ZHS16GBK

4、重新启动PLSQL,插入数据正常

Oracle快速入门(基本概念+查询大全)_第7张图片

5、别名查询的时候不能有特殊字符或者关键字

select ename 姓   名,sal 工资 from emp;
select ename 姓%,sal 工资 from emp;

Oracle快速入门(基本概念+查询大全)_第8张图片
需要在汉字外加上""

select ename "姓   名",sal 工资 from emp;

查询成功
Oracle快速入门(基本概念+查询大全)_第9张图片

五、查询的时候去除重复数据distinct

1、单列去除重复数据

(1)查询emp表当中的job列有重复数据

Oracle快速入门(基本概念+查询大全)_第10张图片

(2)在对应列前面加distinct关键字
select distinct job from emp;

Oracle快速入门(基本概念+查询大全)_第11张图片

2、多列去除重复数据

(1)同时查询job列和deptno列有重复数据
select job,deptno from emp;

Oracle快速入门(基本概念+查询大全)_第12张图片

(2)在对应多列前面加distinct关键字:去除重复数据
select distinct job,deptno from emp;

Oracle快速入门(基本概念+查询大全)_第13张图片

六、查询当中的四则运算

加法运算

select 1+1 from dual;

Oracle快速入门(基本概念+查询大全)_第14张图片

七、查询员工年薪

select ename,12*sal 年薪 from emp;

Oracle快速入门(基本概念+查询大全)_第15张图片

八、查询员工年薪+奖金

1、注意:当加空(null)的项的时候所有对应的内容都会为空

null代表不确定 不可预知的内容,不可以做四则运算

select ename,12*sal+comm  from emp;

Oracle快速入门(基本概念+查询大全)_第16张图片

2、解决方法:需要在有null向的列上使用nvl函数:参数1为null,就返回参数2

如果返回值当中有null则设为0

select ename,12*sal+nvl(comm,0)  from emp;

Oracle快速入门(基本概念+查询大全)_第17张图片

九、字符串拼接

Java当中+号拼接
Oracle当中使用||拼接
mysql当中使用拼接需要使用函数concat(str1,str2)函数,这个函数在mysql当中和oracle当中都有

1、查询员工姓名: 姓名:SCOTT

在oracle
双引号是用来起别名
这里使用的是单引号,单引号当中引起来的是字符

select '姓名:' || ename from emp;

Oracle快速入门(基本概念+查询大全)_第18张图片

2、使用函数拼接concat()在mysql当中可以使用在oracle当中也可以使用

select concat('姓名:',ename) from emp;

Oracle快速入门(基本概念+查询大全)_第19张图片

十、条件查询{where后面的算法}

1、关系运算符: > >= < <= != <>

2、逻辑运算符: and or not

3、其他运算符:

like : 模糊运算符
in(set) :在某个集合内
between..and.. :在某个区间内
is null :判断为空
is not null :判断不为空

十一、条件相关练习

1、查询每月能得到奖金的员工信息

select * from emp where comm is not null;

Oracle快速入门(基本概念+查询大全)_第20张图片

2、查询工资在1500–3000之间的员工信息

查询对应条件的信息

select * from emp where sal >= 1500 and sal <= 3000;

select * from emp where sal between 1500 and  3000;

Oracle快速入门(基本概念+查询大全)_第21张图片

3、查询名字在某个范围的员工信息

select * from emp where ename in ('JONES','SCOTT','FORD');

Oracle快速入门(基本概念+查询大全)_第22张图片

十二、模糊查询

like
%匹配多个字符
_ 匹配单个字符

1、查询员工姓名第三个字符是o的员工信息

select * from emp where ename like '__O%';

在这里插入图片描述

2、查询员工姓名中,包含%的员工信息

(1)修改信息设置带有%的信息
update emp set ename = 'TUR%NET' where ename = 'TURNER';

Oracle快速入门(基本概念+查询大全)_第23张图片

(2)查询员工姓名中,包含%的员工信息

如果模糊查询的时候有特殊字符则需要使用escape转意
escape告诉oracle后面在字符是转意字符

select * from emp where ename like '%\%%' escape '\';

Oracle快速入门(基本概念+查询大全)_第24张图片

十三、排序查询order by

升序asc: ascend
降序desc: descend

1、查询员工信息,按照奖金由高到低排序

select * from emp order by comm desc;

Oracle快速入门(基本概念+查询大全)_第25张图片

  • 排序注意空值问题:设置空值不排在前面,将空值排序到后面nulls last或者first
select * from emp order by comm desc nulls last;

Oracle快速入门(基本概念+查询大全)_第26张图片

2、查询部门编号和工资 按照部门升序排序,工资降序排序

select deptno,sal from emp order by deptno asc,sal desc;

工资在部门升序的基础上降序
Oracle快速入门(基本概念+查询大全)_第27张图片

你可能感兴趣的:(Oracle,数据库,oracle,sql)