2021-11-11

本文回顾了Oracle数据库的历史,包括人工管理阶段、文件系统阶段和数据库系统阶段的特点,深入解析了SQL、sqlplus、PL/SQL的区别,以及Oracle环境的概述。讲解了数据库的核心特性和管理服务,如数据共享、安全性控制等。
摘要由CSDN通过智能技术生成

数据库

历史

  1. 人工管理阶段
  2. 文件系统阶段
  3. 数据库系统阶段

人工管理阶段

  • 数据不保存
  • 没有对数据进行管理的软件系统
  • 没有文件的概念
  • 一组数据对应于一个应用,数据是面向应用的

文件系统阶段

  • 数据需要长期保存在外存上供反复使用
  • 程序之间有了一定的独立性
  • 文件的形式已经多样化
  • 数据的存取基本上以记录为单位

数据库系统阶段

  • 采用复杂的结构化的数据模型
  • 较高的数据独立性
  • 最低的冗余度
  • 数据控制功能
    针对数据库系统,数据模型是它的核心。按照数据库模型的发展,数据库模型可以从三个方面反应:
  1. 第一代数据库系统 层次和网状数据库管理系统
  2. 第二代数据库系统关系数据库管理系统(RDBMS)
  3. 第三代数据库系统目前此阶段仍处于发展中

特点

数据库的主要特点有:

  1. 实现数据共享
  2. 减少数据的冗余度
  3. 数据的独立性
  4. 数据实现集中控制
  5. 数据一致性和可维护性,以确保数据的安全性和可靠性
  • 安全性控制:以防止数据丢失、错误更新和越权使用;
  • 完整性控制:保证数据的正确性、有效性和相容性;
  • 并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;
  • 故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障;
  1. 故障恢复

Oracle环境

概述

1977年6月,Larry Ellison(拉里,埃里森)与Bob Miner和Ed Oates在硅谷共同创办了一家名为软件开发
实验室(Software Development Laboratories,SDL)的计算机公司,这就是ORACLE公司的前身。
如今,ORACLE(甲骨文)公司,已经是全球最大的企业级软件公司,它的软件和硬件产品众多,其中
oracle数据库更是其核心的软件产品,同时它还收购了SUN公司,从而获取了对java语句的“掌控权”。
作为企业级数据库的主打产品,Oracle数据库在众多关系型数据库之中,表现突出,性能优越。但是
oracle数据库的价格昂贵,如果再考虑到搭载oracle的服务器和存储设备的话,那么需要付出的成本也会
更高。
oracle的版本很多,除了这些商用的收费版本之后,还有一些免费版本,例如我们现在安装使用的版
本。

服务

较重要

  • OracleServiceXE服务,如果不启动的话,Oracle无法正常使用,也不能使用sqlplus登录到oracle数据库中
  • OracleXETNSListener服务,如果不启动的话,就无法使用oracle自带管理系统登录到数据库中,之后也无法在代码中使用JDBC连接到数据库中
  • 可以使用 system 用户登录,登录密码是安装oracle过程中,自己手动输入的密码
    在 sqlplus 中,使用指定账号,登录到oracle数据库中
//普通用户登录
sqlplus 用户名/密码
//管理员用户登录
sqlplus system/密码
//使用DBA的身份登录,这种情况不需要密码,但是这种情况需要当操作系统的用户有权限才行
sqlplus "/as sysdba"

登录成功后,可以查看当前登录的账号是谁:

show user

登录成功后,如果要清屏:

//Windows系统中
$CLS
//或者
$cls
//Ubuntu系统中
!clear

登录成功后,也可以直接退出:

exit

会话

登录成功后,默认的会话是中文的:
可以通过命令修改当前会话的语言环境: 会话修改为英文环境

alter session set nls_language=english;

也可以修改回来:修改为简体中文环境

alter session set nls_language='simplified chinese';

用户

创建用户:
使用管理员登录后,还可以使用命令创建一个新的用户,并设置密码以及授权

//创建用户test1,设置密码test1
create user test1 identified by test1;
//把角色connect和resource授权给test1账号
grant connect,resource to test1;

这里角色代表相关权限的集合:

  • connect 角色,基本的连接
  • resource 角色,程序开发
  • DBA 角色,数据库管理

切换用户:

conn
//或者
conn 用户名/密码

删除用户

drop user test1 cascade;

查看当前用户,有哪些表:

show user;
select table_name from user_tables;

导入sql文件命令:@文件名.sql
查看表结构

desc 表名

SQL

SQL(Structured Query Language),结构化查询语言,是专门操作关系型数据库的一种语言
SQL语言属于第四代编程语言

  •  第一代编程语言,机器语言,是面向机器的,通过二进制代码对其计算机操作
    
  •   第二代编程语言, 汇编语言,使用指令对应的符号,来代替二进制代码
    
  •   第三代编程语言,高级开发语言 ,例如C、C++ Java等,语言更加简单,操作更方便
    
  •   第四代编程语言,只告诉计算机需要做什么,不需要告诉计算机怎么做,更加接近自然语言
    

sql语句的分类

  • DQL (Data Query Language),数据查询语言
    用于检索数据库中的数据,主要是 SELECT 语句
  • DML (Data Manipulation Language),数据操纵语言
    用于改变数据库中的数据,主要是 INSERT , UPDATE , DELETE 语句
  • DDL(Data Define Langage),数据定义语言
    用来建立、修改、删除数据库对象,主要是 CREATE 、 ALTER 、 DROP 、 TRUNCATE 语句
  • TCL (Transaction Control Language),事务控制语言
    用于维护数据的一致性,主要是 COMMIT , ROLLBACK , SAVEPOINT 语句
  • DCL(Data Control Language),数据控制功能
    用于执行权限授予和权限收回操作,主要是 GRANT , REVOKE 语句
    注意,DML语句需要事务的支持(产生事务),DDL语句会自动提交事务
sql、sqlplus、pl/sql的区别:
  • sql,结构化的查询语句,操作关系型数据库的语言
  • sqlplus,oracle数据库软件自带工具,可以接收用户输入的sql语句,然后将sql执行结果显示出来
  • pl/sql,程序化的sql语句,在sql语句的基础上加入一定的逻辑操作,如 if for 等
基础

select语句,可以通过列名,把一行行的数据给查询出来,语法为:

select [distinct] *{col_name1,col_name2,..} from tb_name;

注意1,语法中出现的中括号[],表示该部分可有可无
注意2,*号表示所有列
注意3,col_name1,col_name2代表列名,如果有多个可以逗号分开

别名

语法:

select old_column [as] new_column_name from tb_name;
拼接

语法:

select col_name||'spe_char'||col_name from tb_name;
nvl

使用nvl函数可以将null进行替换
语法:

select nvl(col_name,change_value) from tb_name;
distinct

该关键字可以将重复数据去除。
语法:

select distinct col_name,col_name...
from tb_name;

注意,distinct关键词只能放在select关键词后面

format

使用 format 可以将查询结果显示的宽度进行调整。
语法:

//表示last_name列的下方有15个“-”
column last_name format a15
//或者简写为
col last_name for a15;

注意,format只能设置字符类型的字段列

sqlplus

使用 sqlplus 登录之后,可以使用buff(缓存)来存储/执行/修改上一条运行的sql语句 。

  • buff中只能存储一条sql语句,但是这条sql语句可能有很多行
  • 每次放入新的sql语句,会把之前的覆盖掉
  • 每次执行sql语句,都会把这个sql语句放到buff里面
    sqlplus 相关的命令:
  • l 查看缓存中的sql语句
  • a 在[定位]的那一行后面追加新的内容
  • i 在[定位]的那一行下面插入新的一行
  • c 替换[定位]的那一行中的某些字符串 ,格式为:c/老的字符串/新的字符串
  • del 删除[定位]的那一行内容
  • n 后面加内容可以重写这一行
  • $ 后面跟一个终端命令,例如$cls清屏,linux中使用!
  • / 执行缓存sql命令
    如果要清空buff中的sql:
clear buffer

其他的一些命令:

save test.sql //buff中的sql语句保存在test.sql文件中
get test.sql //把test.sql中的内容在加载到buff中,但是没有运行
start test.sql //把test.sql中的内容在加载到buff中并且执行
@test.sql //把test.sql中的内容在加载到buff中并且执行
edit file_name //使用系统默认编辑器去编辑文件

spool 命令:可以记录操作的过程

spool file_name //将接下来的sql语句以及sql的运行结果保存到文件中
sql1
result1
sql2
result2
...
spool off //关闭spool功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵魂的孤独

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值