文件系统
Oracle数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,而数据库实例则是管理数据库文件的内存结构。此外,数据库是由后台进程组成。
通常情况下,oracle数据库只有一个实例ORCL,‘’
数据库和实例是紧密相连的,所以我们一般说的Oracle数据库,通常指的就是实例和数据库。
Oracle数据库使用逻辑存储结构对磁盘空间使用情况进行精细控制。以下是Oracle数据库中的逻辑存储结构:
● 数据块(Data blocks)
● 范围(Extents)
● 段(Segments)
● 表空间(Tablespaces)
物理存储结构是存储数据的纯文件。当执行一个CREATE DATABASE语句来创建一个新的数据库时,创建文件
MYSQL:创建一个数据库,创建相应的表
Oracle:创建一个表空间,创建用户,用户去创建表
create
alter
drop
truncate
insert
update
delete
安全级别
授权
grant
revoke
select
from字句
where字句
select {列名} {*} from 表名 {where 条件} {group by 分组条件}{having 过滤}{order by 排序}
select * from emp;
select 1+1;//在mysql当中会输出2不会报错,但是在Oracle当中会报错
在Oracle当中需要这样做
select 1+1 from dual;
dual表是oracle的虚表,伪表,主要是用来补齐语法结构
select ename 姓名,sal 工资 from emp;
在刚安装完Oracle需要解决中文乱码的问题
中文乱码问题解决
select userenv('language') from dual;
我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK
select * from V$NLS_PARAMETERS
查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样。
如果不是,需要设置环境变量.
否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码.
计算机->属性->高级系统设置->环境变量->新建
设置变量名:NLS_LANG,变量值:第1步查到的值, 我的是AMERICAN_AMERICA.ZHS16GBK
select ename 姓 名,sal 工资 from emp;
select ename 姓%名,sal 工资 from emp;
select ename "姓 名",sal 工资 from emp;
distinct
select distinct job from emp;
select job,deptno from emp;
select distinct job,deptno from emp;
加法运算
select 1+1 from dual;
select ename,12*sal 年薪 from emp;
null代表不确定 不可预知的内容,不可以做四则运算
select ename,12*sal+comm from emp;
如果返回值当中有null则设为0
select ename,12*sal+nvl(comm,0) from emp;
Java当中+号拼接
Oracle当中使用||拼接
mysql当中使用拼接需要使用函数concat(str1,str2)函数,这个函数在mysql当中和oracle当中都有
姓名:SCOTT
在oracle
双引号是用来起别名
这里使用的是单引号,单引号当中引起来的是字符
select '姓名:' || ename from emp;
concat()
在mysql当中可以使用在oracle当中也可以使用select concat('姓名:',ename) from emp;
> >= < <= != <>
and or not
like : 模糊运算符
in(set) :在某个集合内
between..and.. :在某个区间内
is null :判断为空
is not null :判断不为空
select * from emp where comm is not null;
查询对应条件的信息
select * from emp where sal >= 1500 and sal <= 3000;
select * from emp where sal between 1500 and 3000;
select * from emp where ename in ('JONES','SCOTT','FORD');
like
%匹配多个字符
_ 匹配单个字符
select * from emp where ename like '__O%';
update emp set ename = 'TUR%NET' where ename = 'TURNER';
如果模糊查询的时候有特殊字符则需要使用escape转意
escape告诉oracle后面在字符是转意字符
select * from emp where ename like '%\%%' escape '\';
order by
升序asc
: ascend降序desc
: descendselect * from emp order by comm desc;
nulls last或者first
select * from emp order by comm desc nulls last;
select deptno,sal from emp order by deptno asc,sal desc;