orcale与mysql学习总结

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 方案名.对象名;

你可能感兴趣的:(orcale与mysql学习总结)