Oracle概述
概念
数据:在数据库领域看来,数据是存储的基本单位,包含文本,图片,视频,音频
数据库:就是数据仓库,存储数据的地方,特指计算机设备中的硬盘,以二进制压缩文本的形式存放
该文件不能直接操作,必须由各数据库公司提供的工具方可操作,该文件的格式是每个数据库公司内部
定义的,不是统一规则
数据库对象:在Oracle中,例如:表,视图,索引,函数,过程,触发器。。。
关系型数据库:简单的说,以行列结构的形式,将数据库中的信息表示出来的对象,即二维表
常见流行的关系型数据库:Oracle&MySQL/Oracle–>DB2/IBM—>SQLServer/Microsoft–>
oracle数据库服务器:
(A)实例:理解为对象,看不见的,在内存中 orcl
(B)数据库:理解为类,看得见的
oracle服务器与orcl数据库的关系
一个oracle数据库服务器中包括多个数据库,例如:orcl,orm,oa,bbs,tax,erp等等
在E:\oracleDB\oradata\目录下,有多少个文件夹,就有多少个数据库,例如:orcl文件夹=orcl数据库
我们向数据库中存储的所有数据库,最终都会存放在对应库的*.DBF文件中,以二进制压缩形式存放
在oracle服务器中创建数据库:参见《在oracle服务器中创建数据库.JPG》
注意:我们在安装oracle时,已经创建好了一个数据库,默认名叫orcl,除非你当时改了数据库名字
sqlplus和sqldeveloper,orcl实例,orcl数据库之间的关系
sqlplus是oracle11g自带的一个客户端黑屏界面工具,该工具可以连接到某个数据库的实例上,从而操作数据库
sqldeveloper是oracle11g自带的一个客户端彩屏界面工具,该工具可以连接到某个数据库的实例上,从而操作数据库
如果你觉得这二款客户端工具不喜欢,可以上网下载第三方的客户端工具
理解失败转移和负载平衡概念
失败转移:一个群集中的某个oracle服务器坏掉,应该让该台oracle服务器上的用户转移到其它的几台oracle服务器上
这个过程对用户来说,无需知道
负载平衡:多个用户来并发访问时,集群内的oracle服务器共同承担用户并发访问的压力,但不一定是平均分配
上述二个概念,不光出现在数据库领域,也能出现在WEB服务器领域
以sys超级用户名,dba角色,即超级管理员身份解锁scott方案/用户,并为scott设置一个密码为tiger
解锁用户:alter user scott/hr account unlock;
设置密码:alter user scott/hr identified by tiger/lion;
超级管理员命令
sqlplus / as sysdba
声明:我们以普通用户的身份进入
**
SQL92/【99】标准的四大分类
**
(A)DML(数据操纵语言):select,insert,update,delete
(B)DDL(数据定义语言):create table,alter table,drop table,truncate table 。。。
(C)DCL(数据控制语言):grant 权限 to scott,revoke 权限 from scott 。。。
(D)TCL(事务控制语言):commit,rollback,rollback to savepoint
oracleSQL与SQL92/99的关系
SQL92/99标准,访问任何关系型数据库的标准
oracleSQL语言,只访问Oracle数据库服务器的专用语言
基本命令
查询当前用户是谁 :show user
显示当前时间:select sysdate from dual;
清屏,属于SQL*PLUS工具中的命令:host cls
;
查询emp表的结构:desc 表名
使用/杠,执行最近一次的SQL语句:/
设置显示的列宽(字符型varchar2、日期型date),10个宽度位,a表示字符型,大小写均可:
column ename format a12;
column hiredate format a10;
在CMD模式下对Oracle进行操作时对e’m’p表进行设置:
col empno for 9999;
col ename for a10;
col job for a10;
col mgr for 9999;
col hiredate for a12;
col sal for 9999;
col comm for 9999;
col deptno for 99;
set pagesize 20;
col tname for a20;
set pagesize 80;
设置显示的列宽(数值型number),9表示数字型,一个9表示一个数字位,四个9表示四个数字位,只能用9
column empno format 9999;
column mgr format 9999;
column sal format 9999;
column comm format 9999;
column deptno format 9999;
滤空函数
解决null的问题,使用NVL()函数,NVL(a,b):如果a是NULL,用b替代;如果a是非NULL,就不用b替代,直接返回a的值
注意:
1.使用列别名时,不加双引号的别名不能有空格;加了双引号的别名可以有空格
2.要加只能加双引号,不能加单引号,因为在oracle中单引号表示字符串类型或者是日期类型
列名不能使用单引号,因为oracle认为单引号是字符串型或日期型
SQL语句的特点
- 是SQL92/99的ANSI官方标准,只要按照该标准来写,在任何的关系型数据库中都可以直接执行
- SQL语句的关健字不能简写,例如:select,where,from
- 大小写不敏感,提倡大写
- 能够对表数据进行增删改查操作
- 必须以分号结束
- 通常称做语句
SQLPLUS命令的特点
- 是oracle自带的一款工具,在该工具中执行的命令叫SQLPLUS命令
- SQLPLUS工具的命令中的关健字可以简写,也可以不简写,例如:col ename for a10;
- 大小写不敏感,提倡大写
- 不能够对表数据进行增删改查操作,只能完成显示格式控制,例如:设置显示列宽,清屏,记录执行结果
- 可以不用分号结束,也可以用分号结束,个人提倡不管SQL或SQLPLUS,都以分号结束
- 通常称做命令,是SQLPLUS工具中的命令
- 注意:SQLPLUS命令是SQLPLUS工具中特有的语句:col ename for a12;
单引号出现的地方如下
数据类型
- 字符串型,例如:‘hello’ || ’ world’
- 日期型,例如’25-4月-15’
注意:
- 凡是精确查询用=符号
凡是不精确查询用like符号,我们通常叫模糊查询 - null不能参数=运算
null能参与number/date/varchar2类型运算 - 只有当sal相同的情况下,hiredate排序才有作用
函数
单行函数:
只有一个参数输入,只有一个结果输出
多行函数或分组函数:可有多个参数输入,只有一个结果输出
多行函数:
函数的参数是多行,返回一个结果
内连接查询:
只能查询出符合条件的记录
外连接查询:
既能查询出符合条件的记录,也能根据一方强行将另一个方查询出来
子查询:
一般一次性查询不了的sql,需要两次甚至多次查询能得到的结果就是子查询
集合
基本操作:
并集:union或着union all
交集:intersect
差集:minus
集合操作的细节
1.集合操作时必须保证级和列数是相等的
2.集合操作时必须保证集合列类型对应相等
3.当多个集合操作时,结果的列名由第一个集合列名决定
4.当多表查询,子查询,集合查询都能完成同样工作时,按照以下优化方案选择:单表查询–》多表查询–》子查询–》集合查询
5.集合之间的操作满足交换律