Oracle:
关系型的数据库,端口号:1521,收费(学习是免费的,用于商业要授权)19万左右,每年交服务费 效率高,安全
mysql:关系型的数据库 , 表于表的关系:外键 , 端口号:3306
redis:非关系型数据库 ,key - value , 端口号:6379
Oracle数据库是Oracle(甲骨文)公司的核心产品,适合于大型项目的开发;银行、电信、电商、金融等各领域都大量使用Oracle数据库。
Oracle数据库是一种对象关系型数据库,在关系型数据库的基础上,引入了一些面向对象的特性。
Oracle数据库的产品可以免费下载,其服务是收费的,也就是该数据库用于商业目的时,必须取得Oracle的授权。
a.创建表(同)
create table 表名( 字段名 字段类型,....)
b.删除表(异)
MySQL: drop table if exists 表名;
Oracle: drop table 表名
注意:Oracle没有if exists 关键字
a.添加列(异)
MySQL:
A.alter table 表名 add column 列名 数据类型
B.alter table tableName add column 列1 类型, add 列2 类型;
Oracle:
A. alter table 表 add 列 类型;
B. alter table 表 add (列 类型);
C. alter table 表 add (列1 类型,列2 类型);
注意: A语法,只有添加单列的时候才可以使用,多列添加使用C,不可以像MySQL重复只用add关键字
b.删除列(异常)
MySQL:
A. alter table 表 drop column 列1
B. alter table 表 drop column 列1, drop column 列2
注:其中关键字column可有可无。
Oracle:
A. alter table 表 drop column 列
B. alter table 表 drop (列1)
C. alter table 表 drop (列1,列2)
注:对于A,只有删除单列的时候才可使用,对于删除多列时需要使用C,不能像MySQL那样重复使用drop column关键字。
c.修改列名(异)
MySQL:
alter table 表 change column 旧列名 新列名 类型;
Oracle:
alter table 表 rename column 旧列名 to 新列名;
d.修改列类型(说明)
Oracle中,在列有数据的时候,无法修改列类型;没有数据时可以。
MySQL中,无论列是否有数据都可以修改列类型。但是当有数据时,直接修改列类型都可能对数据造成丢失等,所以一般需要结合具体的业务来对列数据做处理后,再修改列类型类型。所以修改列的类型并非使用SQL语句进行一步到位的修改,而是通过以下流程:
A. 添加临时列
B. 将需要更改的列的值经过类型转换的验证后,赋值给临时列
C. 删除原有列
D. 将临时列的列名修改为原有列列名
在整个数据库内,MySQL的索引可以同名,也就是说MySQL的索引是表级别的;
但是Oracle索引不可以同名,也就是说Oracle的索引是数据库级别的。
a. 创建索引(同)
create index 索引名称 on 表 (列名);
b. 删除索引(异)
MySQL:
alter table 表 drop index 索引名称
Oracle:
drop index 索引名称
c. 查询表的索引(异)
MySQL:
show index from 索引名称
Oracle:
select index_name, table_name, column_name from user_ind_columns where table_name=' tableName '
Oracle中空字符串''就是null(也就是说,只有null,没有空字符),
而MySQL是区分null和''的。
对于使用语句:select * from table1 where user_name <> ''来查询列user_name不为空(不为null且不为空字符)时,
Oracle会查不出任何结果,
而MySQL可以正常运行。这里MySQL之所以可以得到正确结果,还因为比较符号<>会先将列为null的内容进行过滤,然后再比较内容是否为空字符串。
以后在编写代码的时候,尽量保证不会往数据库插入空字符串''这样的值,要么保持有数据,要么保持为null。
另外,对于MySQL中已经同时存在Null和''时,所有判断是否为null或者''的地方改为判断列的长度是否为0。
1、
oracle服务端是指装在数据库服务器上的oracle主服务,数据库的核心,用于数据库的管理,数据的与存储、查询、数据库资源的监控、监听等服务。
oracle客户端只是指与服务端交互的工具,要登录使用oracle数据库服务就需要安装客户端(例如PLSQL),利用PLSQL连接到数据库,来执行oralce服务的一些增删改查等操作。
2、
服务器端不一定在本地(client一定在本地),所以需要在客户端配置TNSNAMES.ORA文件。在文件中添加服务名和IP。
3、
oracle数据库服务都会有一个全局数据库名例如:orcl,这是在安装数据库时指定的。如果要安装多个数据库,那么这个全局数据库名必须不一样。服务器端的listener文件里配置有监听程序,可以配置多个监听IP。
而oracle客户端连接服务端是就要配置oracle的实例名来确认数据库信息。
4、
服务器端的客户工具是通过服务器端tnsnames.ora和listener.ora进行验证并建立连接;
远程客户端是通过客户端的tnsnames.ora和服务器端的listener.ora执行验证和建立连接。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cej2x2hf-1640826162191)(C:\Users\eport\Desktop\oracle.png)]
数据库:只有一个数据库
实例:后台运行的一个进程
表空间:
逻辑存储单位
表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据库文件(datafile)。一个数据文件只能属于一个表空间。
数据文件:
物理存储单位
数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中,而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
用户:
面向用户管理,都会对应一个表空间,向表空间中添加数据,就是保存到数据文件中。
用户是在实例下建立的。不同实例中可以建相同名字的用户。注:表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于 Oracle 的数据库不是普通的概念,oracle 是由用户和表空间对数据进行管理和存放的。但是表不是由表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!
系统默认用户:
sys
级别:Oracle的一个超级用户,最高权限。
主要作用:用来维护系统信息和管理实例。
登录角色:只能以SYSDBA或SYSOPER角色登录。
登录命令:
username/password @server(服务名) as sysdba
例子:sys/root @orcl as sysdba
切换到sys用户(sys用户要指定sysdba,其他不用)
connect sys/root as sysdba
system
级别:Oracle默认的管理员,拥有DBA权限。
主要作用:用来管理Oracle数据库的用户、权限和存储等。
登录角色:只能用normal身份登陆em(页面管理器),除非你对它授予了sysdba的系统权限或者syspoer系统权限。。
scott
级别:Oracle的一个普通示例用户 。
主要作用:为初学者提供一些简单的应用示例,测试数据。
登录角色:只能以Normal角色登录。
注:创建数据库时默认该用户为锁定状态,使用前需解锁。默认密码为tiger。
– 解锁用户
alter user 用户名 account unlock;
alter user scott account unlock
– 重置密码
alter user 用户名 identified by 密码;
alter user scott identified by tiger;
sysman
级别:是Oracle数据库中用于EM管理的用户,管理员级别。
主要作用:用来操作企业管理器
注:如果不用EM可以删除该用户。
dbsnmp
级别:是Oracle数据库中用于智能代理的用户。
主要作用:用来监控和管理数据库相关性能,收集系统运行状态相关的数据。
注:如果停止该用户,则无法提取相关的数据信息。
SYSDBA:
数据库管理员权限(打开数据库服务器、关闭数据库服务器、管理功能、备份数据库、恢复数据库、日志归档、会话限制。)
SYSOPER:
数据库操作员权限(打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制。)
NORMAL:
普通用户权限。
注:sysdba拥有最高系统权限,sysoper主要用来启动、关闭数据库。
ORACLE是数据库,有客户端和服务器;
PLSQL Developer只是第三方工具,服务于ORACLE,类似的工具还有Toad,sqlplus,sql developer等等;
安装PLSQL Developer对于安装oracle没啥关系,但是如果没有oracle客户端,你装了PLSQL Developer也没啥意思。
SQL*Plus 是Oracle自带的数据库管理客户端,可以在这里编辑SQL语句执行,是命令行模式的。
PL/SQL 有两种。 一种是工具 PL/SQL Developer 和SQL* Plus一样是数据库管理客户端,是一种可视化界面,也可以使用命令行编辑SQL。另外一种是PL/SQL语言,是oracle中的块结构语言,类似存储过程,是一种过程话的语言。把SQL语言和编程高级语言想融合,和Java近似。既可以在SQL*Plus上开发PL/SQL语言,也可以在PL/SQL Developer上开发PL/SQL语言。
DML---
Data Manage Language 数据操纵语言,insert delete update 没有select!!!!
insert、delete、update
DQL---
Data Query Languate 数据查询语言 就是 select from
select
DCL---
Data Controller Languate 数据控制语言 就是授权 ROLLBACK GRANT COMMIT
grant、revoke
DDL---
Data Define Language 定义语言,就是创建,如create 创建表/存储过程/索引/触发器
create、drop
数据的大量性
数据的保存的持久性
数据的共享性
数据的可靠性
信息准则---关系型 DBMS 的所有信息都应在逻辑上用一种方法,即表中的值显式地表示
保证访问的准则
视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
数据物理性和逻辑性独立准则
ORACLE 数据库自第5版起提供了分布式处理能力,到第7版有比较完善的分布式数据库功能了,一个ORACLE 分布式数据库由 oraclerdbms、sql*Net、SQL*CONNECT 和其他非 ORACLE 的关系型产品构成。
信息准则---关系型 DBMS 的所有信息都应在逻辑上用一种方法,即表中的值显式地表示
保证访问的准则
视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
数据物理性和逻辑性独立准则
ORACLE 数据库自第5版起提供了分布式处理能力,到第7版有比较完善的分布式数据库功能了,一个ORACLE 分布式数据库由 oraclerdbms、sql*Net、SQL*CONNECT 和其他非 ORACLE 的关系型产品构成。