实例与数据库概念
Oracle数据库服务器由两部分组成:
- 实例:理解为对象,看不见的
- 数据库:理解为类,看得见的
我们在安装Oracle的时候,已经填写过自己数据库的名称了,一般实例与数据库的名称是一致的…
这里写图片描述
如果还没有安装Oracle数据库的,可以看一下我其他的博文….
那么我们自带的sqlplus黑色窗口与实例,数据库之间的关系又是什么的呢???我们可以看下图:
这里写图片描述
Oracle数据库把表、视图等都看成是对象:
Oracle中的null值
Oracle中如果存在字段是null值的话,那么在sqlplus中它是不会显示出来的….如果我们使用null值的数据与其他数据进行运算…那么最终得出的结果都是null值
因此,Oracle提供了NVL(表达式1,表达式2)函数供我们使用,如果表达式1的值为null值,那么就取表达式2的值…当然了,如果表达式1不是null,取的就是表达式1的值
还有值得注意的是:null值不能参数=号运算,null能参数number/date/varchar2类型运算
Oracle提供了 is null关键字来代替=号运算的问题
Oracle中的别名
我们知道在Mysql中如果要用别名的话,需要使用as关键字 ,后面跟着别名就行了….Oracle可以省略as关键字…
并且,一般地,我们使用别名都是用双引号""把别名括起来,Oracle也支持我们直接写别名,但是呢,如果我们不写双引号,那么我们的别名是不能有空格的
还有一点的是:Oracle的别名是不能使用单引号来括起来的,Oracle默认认为单引号是字符串类型和日期类型的。
IO输入输出SQL语句
我们可以在sqlplus中使用spool命令把SQL语句保存在硬盘中,具体的例子:
spool e:/oracle-day01.sql;
使用spool off命令,保存SQL语句到硬盘文件e:/oracle-day01.sql,并创建sql文件,结束语句
spool off;
当然了,我们也可以把硬盘中的SQL文件在sqlplus中执行,只要以下的命令就行了:
@ e:/crm.sql;
转义字符
有的时候,我们可能会模糊查询一些数据,但是呢,在名称中又有一些特殊的字符。那么我们就要经过转义….当然了,如果按照Java的来,就十分简单了,就写一个"\"就可以了。
那在Oracle中是怎么样转义的呢??我们来看下面的例子:
查询员工姓名中含有'_'的员工,使用\转义符,让其后的字符回归本来意思【like '%\_%' escape '\'】 select * from emp where ename like '%\_%' escape '\';
如果名称是'单引号呢???那么两个单引号代表着一个引号
插入一个姓名叫''的员工 insert into emp(empno,ename) values(2222,'''''');
单行函数与多行函数
首先,我们要明确一个概念:
- 单行函数:输入一个参数,返回一个结果
- 多行函数:扫描多个参数,返回一个结果….一般地,多行函数和分组函数的概念是差不多的…
Oracle提供了关于字符串函数、日期函数供我们对数据进行对应的操作,这里就不一一赘述了,我们到时候有需要的时候查文档就行了。
单引号出现的地方如下:
- 1)字符串,例如:'hello'
- 2)日期型,例如:'17-12月-80'
- 3)to_char/to_date(日期,'YYYY-MM-DD HH24:MI:SS')
双引号出现的地方如下:
- 1)列别名,例如:select ename "姓 名" from emp
- 2)to_char/to_date(日期,'YYYY"年"MM"月"DD"日" HH24:MI:SS')
GROUP BY 细节
group by 子句的细节:
- 1)在select子句中出现的非多行函数的所有列,【必须】出现在group by子句中
- 2)在group by子句中出现的所有列,【可出现可不现】在select子句中