Oracle数据库-01

Oracle数据库-01

1.Oracle的简单介绍

Oracle:
	关系型的数据库,端口号:1521,收费(学习是免费的,用于商业要授权)19万左右,每年交服务费 效率高,安全

mysql:关系型的数据库 , 表于表的关系:外键 , 端口号:3306
redis:非关系型数据库 ,key - value , 端口号:6379

Oracle数据库是Oracle(甲骨文)公司的核心产品,适合于大型项目的开发;银行、电信、电商、金融等各领域都大量使用Oracle数据库。
Oracle数据库是一种对象关系型数据库,在关系型数据库的基础上,引入了一些面向对象的特性。
Oracle数据库的产品可以免费下载,其服务是收费的,也就是该数据库用于商业目的时,必须取得Oracle的授权。

2.Oracle和MySQL的sql语句的异同

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。

3.Oracle客户端与服务端有什么区别

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)]

4.Oracle数据库的体系结构

数据库:只有一个数据库

实例:后台运行的一个进程

表空间:
	逻辑存储单位
	表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据库文件(datafile)。一个数据文件只能属于一个表空间。

数据文件:
	物理存储单位
	数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中,而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

用户:
	面向用户管理,都会对应一个表空间,向表空间中添加数据,就是保存到数据文件中。
	用户是在实例下建立的。不同实例中可以建相同名字的用户。注:表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于 Oracle 的数据库不是普通的概念,oracle 是由用户和表空间对数据进行管理和存放的。但是表不是由表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!

5.数据库用户

5.1、 用户:系统默认用户、新建用户。
系统默认用户:
    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数据库中用于智能代理的用户。
        主要作用:用来监控和管理数据库相关性能,收集系统运行状态相关的数据。
        注:如果停止该用户,则无法提取相关的数据信息。
5.2 、权限:
SYSDBA:
	数据库管理员权限(打开数据库服务器、关闭数据库服务器、管理功能、备份数据库、恢复数据库、日志归档、会话限制。)

SYSOPER:
	数据库操作员权限(打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制。)

NORMAL:
	普通用户权限。

注:sysdba拥有最高系统权限,sysoper主要用来启动、关闭数据库。

6.Oracle与PL/SQL的关系

	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语言。

7、DML、DQL、DCL、DDL

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

8.Oracle数据库的优势

8.1 完整的数据管理功能
数据的大量性
数据的保存的持久性
数据的共享性
数据的可靠性
8.2 完备关系的产品
信息准则---关系型 DBMS 的所有信息都应在逻辑上用一种方法,即表中的值显式地表示
保证访问的准则
视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
数据物理性和逻辑性独立准则
8.3 分布式处理功能
	ORACLE 数据库自第5版起提供了分布式处理能力,到第7版有比较完善的分布式数据库功能了,一个ORACLE 分布式数据库由 oraclerdbms、sql*Net、SQL*CONNECT 和其他非 ORACLE 的关系型产品构成。
信息准则---关系型 DBMS 的所有信息都应在逻辑上用一种方法,即表中的值显式地表示
保证访问的准则
视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化
数据物理性和逻辑性独立准则
8.3 分布式处理功能
	ORACLE 数据库自第5版起提供了分布式处理能力,到第7版有比较完善的分布式数据库功能了,一个ORACLE 分布式数据库由 oraclerdbms、sql*Net、SQL*CONNECT 和其他非 ORACLE 的关系型产品构成。
8.4 用 ORACLE 能轻松的实现数据仓库的操作

你可能感兴趣的:(数据库,oracle)