1、首先是官网安装软件
2、软件的安装,对于oracle的安装一定注意一些选项选择,否则可能面临删注册表重新安装的麻烦。
3、对于oracle首先来说首先命令在dos命令中输入sqlplus命令进入oracle的登录
接下来输入用户名密码(注意在oracle10之后对输入密码进行了隐藏,无法看到输入的字符个数及字符),常用的用户有:
①sys系统管理员用户:运行时可以选择以什么样的身份运行,sys as sysdba 作为管理员进入,还有一个就是sys as sysoper用户,前者权限最大。
②scott用户:这是oracle为我们预留的一个普通用户,一般我们对其进行数据的操作。
sqlplus中的相关指令:
connect:切换连接,disconnect:断开连接
exit/quit:断开连接
show user:查看当前的连接用户
set pagesize设置一行显示的页数,set linesize 设置一行显示的字符数
desc查看表结构
数据类型:
char(长度不可变)、varchar2(oracle中推荐的可变字符串类型)、number(数值型)、date(日期类型)、timestamp(时间戳)、以及大对象(BLOB、CLOB、BFILE)。
接下来就是sql的分类:
DDL:数据定义语言、主要就是操作数据库对象(create、alter、drop、truncate等)
DCT:数据操作语言,修改表内容(select、insert、update、delete)
DML:数据控制语言,数据的权限操作(grant、revoke)
TCL:事物控制语言,数据提交,回滚(commit、revoke、savepoint)
基础的建库建表语句不在重复
对于oracle与mysql对比数据类型:
oracle中特有 number类型(数值型)、字符型主要是varcahar2(可变类型)、日期型date、timestamp时间戳类型、大对象(BLOB、CLOB、BFILE)
mysql中数值类型:Integer,decimal(95,30)类型、日期时间:datetime类型范围(9999year),timestamp(70year-2038-01-09)、char、varchar(最长65535)大对象:TEXT、BLOB。
select语句基础:
select [distinct] *[列名 as 别名]
from table[join table on]
[where 条件]
[group by 分组] [having 组过滤]
[order by 排序列 默认asc、降序desc]
(limit[起始位置,]总行数 mysql特有的分页语句)在oracle中使用rownum来进行分页。
伪列的问题,这是oracle中一个特殊的列,常用的列是rowID(每条记录的唯一标识),rownum(是查询结果返回的行号)多用来表示主键。
常用地一些函数:
数值函数:ceil、floor、abs、round(四舍五入)、trunc(截断),日期函数:sysdate(返回当前日期)、systimestamp(返回当前日期时间戳) 转换函数:to_char(number[,format])、to_number(x[,fromat])、日期字符串转换函数:to_date(char[,fromat])、to_char(datetime[,fromat])
decode函数:
CASE expre
WHEN condition THEN return_value
WHEN condition2 THEN return_value2
ELSE default_value
END
类似mysql也有相同的条件语句,不在重复
单行函数:对一组数据进行操作,结果返回一行。
聚合函数:同时对一组数据进行操作,对每组行返回一行结果。
常用地聚合函数:max() 、min()、 count()、sum()、 avg()
注意:组函数可以用亍任何有效的表达式。如:可以对数字、字符串和日期使用COUNT、MAX、MIN。
组函数会忽略空值
**以及与group by语句使用时,如果查询中包含一个聚合函数,而所选择的列不在聚合函数中,那么这些列必须出现在group by子句中,聚合函数不能再where中使用。
子查询:单行单列子查询,单行多列子查询,以及多行多列子查询(看做一张新表)
左右连接以及全连接、内连接、交叉连接,注意在mysql中可以使用全连接但是不会有任何效果。
集合操作符:
UNION ALL:多个查询结果合并到一个结果中允许重复。
UNION:将多个查询结果合并到一个结果,求并集
INTERSECT:返回两个查询结果的交集 MINUS:求差集
事务控制:(一致性、原子性、隔离性、持久性【数据持久化】)
显式事务控制:commit、revoke、savepoint
隐式事务控制:orcale中正常退出,自动提交;如果连接中断、崩溃时自动回滚事务
但是在mysql中事务是随时随地都在提交的如果不设置手动控制事务。
ORACLE:SHOW AUTOCOMMIT -- 查看 、SET AUTOCOMMIT ON|OFF --更改
在oracle中各种各样的操作都需要权限,你创建一个数据库、查询、建表都需要需要权限,每一个数据库都是每一个方案。
角色:就是一组权限的集合。可分配给用户和其他角色。
CONNECT:连接到Oracle的权限 、RESOURCE:创建各种数据库对象的权限
DBA:数据库管理员所有权限
grant 角色名,... TO 用户名;授予权限、 revoke 角色名,... from 用户名;撤销权限
数据库的备份恢复
exp导出:EXP SCOTT(用户)/tiger(密码) BUFFER=64000(缓冲流大小) FILE=C:\SCOTT.DMP OWNER=SCOTT(基本格式)备份
imp导入:IMP scott/tiger BUFFER=64000 FILE=C:\SCOTT.DMP FROMUSER=SCOTT TOUSER=SCOTT (格式基本一致)
接下来就是数据库对象的管理:
表管理、约束管理、序列管理、索引管理、视图管理
1、表
对于表的相关语句:create、alter table(ADD/MODIFY/DROP COLUMN)、(rename...TO)、DROP table、
注意oracle中有一个回收站,一般执行删除操作,并没直接删除,而放在回收站中
显示回收站中的对象:SHOW RECYCLEBIN;
恢复回收站中的表:FLASHBACK TABLE 表名 TO BEFORE DROP;
删除回收站中的表:PURGE TABLE 表名;
彻底删除:DROP TABLE 表名 PURG
截断表:删除表中所有数据行,重置表存储空间 truncate table 表名;
2、约束(对表的列/字段设置内容限制)
not null、unique、primary key、foreign key、check。
注意在mysql中可以使用check约束,但是不会起作用。
3、序列(sequence)是一种用于生成唯一数字的数据库对象,序列生成器 会自动生成顺序递增的序列号。
CREATE SEQUENCE 序列名
[INCREMENT BY 递增量值]
[START WITH 开始值]
[MAXVALUE 最大值]
[MINVALUE 最小值]
[CYCLE | NOCYCLE] -- 达到最大值或最小值时是否循环
[CACHE 预生成数量 | NOCHE]; -- 默认缓存20个
nextval:返回下一序列值(可用作主键)、currval:返回当前序列值。
这是oracle特有的,同样在mysql中有一个[AUTO_INCREMENT]自动递增属性,其只能用来标识某一列,且该列必须是主键的一部分。
3、索引:索引是数据库中提高查询性能的最常用手段
oracle中两大索引:
索引候选列需要存储很大范围的值——“B-树”索引
索引候选列只包含很少范围的值——“位图”索引
在mysql中:只有一种索引——B-数索引,且只能在主键使用
任何单个查询要检索的行少于或等于整个表行数的10%时,索引就是 非常有用。
4、视图(view)一个或多个基表上的预定义查询,是一个虚拟表,只用于显示特定预设结果。
5、同义词:数据库对象的一个别名,用来简化对数据库对象的访问。(oracle独有)
创建语句:CREATE SYNONYM 同义词名 FOR 方案名.对象名;