day01_Oracle
一、课程目标
1.安装oracle后,介绍常见的服务以及作用,介绍安装后默认的用户有哪些服务的作用
2.添加逻辑存储结构的介绍
3.常见的表空间
4.表空间和数据文件的关系
5.模式和用户的关系
6.删除表空间操作
7.oracle角色介绍
二、数据库概述
2.1 数据库的好处
- 将数据持久化到本地
- 提供结构化查询功能
2.2 数据库的常见概念
- DB:数据库,存储数据的仓库
- DBMS:数据库管理系统,又称为数据库软件或者数据库产品,用于创建和管理数据库,常见的有MySQL、Oracle、SQL Server
- DBS:数据库系统,数据库系统是一个通称,包括数据库、数据库管理系统、数据库管理人员等,是最大的范畴
- SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言
2.3 数据库的存储特点
- 数据存放到表中,然后表再放到库中
- 一个库中可以有多张表,每张表具有唯一的表名用来标识自己
- 表中有一个或多个列,列又称为“字段”,相当于Java中“属性”
- 表中的每一行数据,相当于Java中“对象”
2.4 数据库的常见分类
- 关系型数据库:MySQL、Oracle、DB2、SQL Server
- 非关系型数据库:
- 键值存储数据库:Redis、Memcached、MemcacheDB
- 列存储数据库:HBase、Cassandra
- 面向文档的数据库:MongDB、CouchDB
- 图形数据库:Neo4J
2.5 SQL语言的分类
- DQL:数据查询语言:select、from、where
- DCL:数据控制语言:grant、revoke
- DDL:数据定义语言:create、alter、drop、truncate
- DML:数据操作语言:insert、update、delete
- TCL:事务控制语言:commit、rollback
三、Oracle概述
3.1 什么是Oracle
ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一。
ORACLE 通常应用于大型系统的数据库产品。
ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
ORACLE 数据库具有以下特点:
(1)支持多用户、大事务量的事务处理
(2)数据安全性和完整性控制
(3)支持分布式数据处理
(4)可移植性
创始人:
他在32岁之前一直是一事无成的,可以说是无所事事,但是却在一夜之间成为了顶级富豪,源于Oracle。
3.2 Oracle下载与安装
课程使用:Windows 10
数据库版本:Oracle 11gR2
3.2.1 中文官网网址
在下载的时候,需要我们登录,如果没有账号是没办法下载的,再这里我们给大家已经提供了
3.2.2 Oracle安装
参考资料中的《oracle安装步骤.pdf》文件,进行安装
测试是否安装成功
sqlplus system/root
3.2.3 Oracle目录结构
admin目录
记录Oracle实例的配置,运行日志等文件,每一个实例一个目录,SID:SystemIDentifier的缩写,是Oracle实例的唯一标记,在Oracle中一个实例只能操作一个数据库,如果安装多个库那么就会有多个实例,我们可以通过实例SID来区分。
cfgtoollogs目录
下面子目录分别存放当运行dbca,emca,netca等图形化配置程序时的log。
checkpoints目录
存放检查点文件。
diag目录
Oracle11g添加的一个重组目录,其中的子目录,基本上Oracle每个组件都有了自己的单独目录,在Oracle10g中我们诟病的log文件散放在四处的问题终于得到解决,无论是asm还是crs还是rdbms,所有组件需要被用来诊断的log文件都存放在这个新的目录下。
flash_recovery_area(闪回区)目录
分配一个特定的目录位置来存放一些特定的恢复文件,用于集中和简化管理数据库恢复工作。闪回区可存储完全的数据文件备份,增量备份、数据文件副本、当前控制文件、备份的控制文件、spfile文件、快照控制文件、联机日志文件、归档日志、块跟踪文件、闪回日志。
oradata目录
存放数据文件。
名称 | 描述 |
CONTROL01.CTL | Oracle数据库的控制文件 |
EXAMPLE01.DBF | Oracle数据库表空间文件 |
REDO01.LOG | Oracle数据库的重做日志文件,此文件有三个 |
SYSAUX01.DBF | 11g新增加的表空间,主要存储除数据字典以外的其他数据对象,由系统内部自动维护 |
SYSTEM01.DBF | 用于存放Oracle系统内部表和数据字典的数据。比如:表名、列名、用户名等 |
TEMP01.DBF | 临时表空间文件 |
UNDOTBS01.DBF | 撤销表空间文件,用来保存回滚数据 |
USERS01.DBF | 用户表空间 |
product目录
数据库实例存放文件。
3.3 Oracle配置
3.3.1 服务启动配置
3.3.2 网络配置
如果你是把Oracle 11gR2安装到了服务器中,那么你要想客户端远程访问,接下来的这些步骤,请你仔细阅读!
客户端为了和服务器连接,必须先和服务器上的监听进程联络。ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息。一般tnsnames.ora 是建立在客户端上的。如果是客户端/服务器结构,整个网络上只有一台机器安装了ORACLE数据库服务器,那么只需在每个要访问ORACLE服务器的客户端上定义该文件,在服务器上无需定义。也就是说,如果客户端想连接到服务器上的Oracle数据库实例,客户端就必须有tnsnames.ora这个文件。一般在Oracle数据库安装的时候,它就会生成一个listener.ora(监听器配置文件)、tnsnames.ora(网络服务名配置文件),因为我们现在已经将Oracle安装到本地了,并没有安装到服务器上,为了能够测试连接服务器是否需要tnsnames.ora文件,我们假设D:\Oracle是服务器上的一个目录,D:\Oracle以外都是客户端的目录。
- 第一步:打开文件夹(假设当前电脑是服务器)
- 第二步:获取服务器IP地址
假设当前电脑是服务器:192.168.1.3
- 第三步:修改listener.ora文件
第四步:修改tnsnames.ora文件
- 第五步:重启服务器Oracle的服务
第六步:复制tnsnames.ora文件到客户端
假设当前电脑是客户端:D:\Config
- 第七步:配置tnsnames.ora文件到环境变量
假设当前电脑是客户端: TNS_ADMIN = D:\Config
3.4 PLSQL DEVELOP 安装
PLSQL是连接Oracle的一款客户端工具,方便我们操作Oracle数据库
3.4.1 PLSQL DEVELOP 安装破解
- 解压文件
- 双击安装同意协议
剩下的步骤直接点击一下步即可
- 启动PLSQL Developer进行破解
- 打开资料中的注册文件,进行填写
- 点击注册,提示注册成功
3.4.2 PLSQL DEVELOP 配置
点击 Apply–> ok 重新启动plsql
点击登录
3.5 Oracle体系结构
3.5.1 物理结构
存储到磁盘上的具体的信息:*.dbf(数据库文件) *.log(日志文件) *.cul(控制文件)
3.5.2 逻辑结构
就是我们使用者(开发者、DBA)等用户看到的ORACLE的结构信息.包括表空间、段、块等。
- 数据库:Oracle是一种关系型的数据库管理系统
- 数据库实例:数据库实例其实就是用来访问和使用数据库的一块进程,它只存在于内存中,就像Java中new出来的实例对象一样。数据库和实例的关系是1:N的关系;
- 表空间:Oracle数据库是通过表空间来存储物理表的,一个数据库实例(Instance)可以有N个表空间,一个表空间下可以有N张表。
- 用户:Oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定表空间
四、Oracle表空间和用户创建
4.1 创建表空间
Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表
4.1.1 sql语句
4.1.2 字段解释
字段名 | 说明 |
oracletestspace | 表空间的名称 |
datafile | 用于设置物理文件名称 |
size | 用于设置表空间的初始大小 |
autoextend | 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容 |
next | 用于设置扩容的空间大小 |
4.1.3 查看表空间
Select * from DBA_Tablespaces
4.2 创建用户并赋权
4.2.1 创建用户
语法:create user 用户名 identified by 密码 default tablespace 表空间的名
需要登录一下
4.2.2 赋予权限
创建好用户之后,我们重新使用新用户登录,是没办法登录的,因为新用户没有赋予权限,会出现以下提示,该用户没有登录权限
Oracle 中已存在三个重要的角色:connect 角色,resource 角色,dba 角色。
CONNECT 角色: --是授予最终用户的典型权利,最基本的ALTER SESSION --修改会话
CREATE CLUSTER --建立聚簇
CREATE DATABASE LINK --建立数据库链接CREATE SEQUENCE --建立序列
CREATE SESSION --建立会话CREATE SYNONYM --建立同义词CREATE VIEW --建立视图
RESOURCE 角色: --是授予开发人员的CREATE CLUSTER --建立聚簇CREATE PROCEDURE --建立过程CREATE SEQUENCE --建立序列CREATE TABLE --建表
CREATE TRIGGER --建立触发器CREATE TYPE --建立类型
DBA 角色:拥有全部特权,是系统最高权限,只有 DBA 才可以创建数据库结构,并且系统权限也需要DBA 授出,且 DBA 用户可以操作全体用户的任意基表,包括删除
sql语句
再次重新登录
五、DDL语句
5.1 创建表
5.1.1 语法
5.1.2 数据类型
数据类型 | 说明 |
CHAR | 固定长度的字符类型,最多存储 2000 个字节 |
VARCHAR2 | 可变长度的字符类型,最多存储 4000 个字节 |
LONG | 大文本类型。最大可以存储 2 个 G |
NUMBER | 数值类型,默认长度18 NUMBER(5) 最大可以存的数为 99999 NUMBER(5,2) 最大可以存的数为 999.99 2表示小数位 |
DATE | 日期时间型,精确到秒 |
TIMESTAMP | 精确到秒的小数点后 6 位 |
CLOB | 存储字符,最大可以存 4 个 G |
BLOB | 存储图像、声音、视频等二进制数据,最多可以存 4 个 G |
5.1.3 创建student表
5.2 修改表结构【了解】
5.2.1 增加字段
语法
示例
在student表中增加出生日期和手机号
5.2.2 修改字段类型
语法
示例
5.2.3 修改字段名
语法
示例
5.2.4 删除字段名
删除一个字段
删除多个字段
示例
5.3 删除表
语法
示例
六、DML语句
6.1 添加数据
语法
示例
语句中的 sysdate 是系统变量用于获取当前日期,也可以使用to_date函数插入日期字符串
insert into test(id,name,height,birth)values
(2,‘王五’,160,to_date(‘2003-10-17’,‘yyyy-MM-dd’))
6.2 修改数据
语法
举例
注意事项
如果不加任何条件,则会将表中所有记录全部修改。
6.3 删除数据
语法
举例
注意事项
如果不加条件,则删除表中所有记录。
如果要删除所有记录
七、DQL语句
7.1 数据准备
7.2 基本查询
- 查询所有记录
- 查询表中所有学生的姓名和对应的数学成绩
- 查询表中学生地址(去重)
- 起别名
语法
as : as也可以省略
示例
7.3 条件查询
- 查询math分数大于80分的学生
- 查询age大于35且性别为男的学生(两个条件同时满足)
- 查询english成绩大于等于77,且小于等于87的学生
- 查询id是1或3或5的学生
- 查询英语成绩为null的学生
- 查询英语成绩不为null的学生
- 查询姓名中包含’德’字的学生
八、序列*
注意:Oracle 没有主键能够自动增长的功能 ,如果想要得到主键自动增长的效果,就需要序列。
序列是用来产生一个自动递增的数值,可以插入到主键作为值使用。
5.1 简单序列
语法
创建序列
使用序列
序列有 currval 和 nextval 两个属性可以使用,区别如下:
- nextval:拥有数字累加的效果,也是使用时最为常用的方式。而且第一次使用时也必须使用这个属性对序列初始化。
- currval:获取当前的数字,不会进行累加,因此不管调用多少次都不会出现值的变化。注意如果序列没有初始化直接使用 currval 会报错。
*:我们在刚建立序列后,无法提取当前值,只有先提取下一个值时才能再次提取当前值。==
提取下一个值
提取当前值
第一次先用currval会报错?如何办
5.2 复杂序列
语法
创建序列
和我们的表结合起来insert into test values(seq_copy_id.nextval,‘张三’,170,sysdate)
5.3 查看与删除序列
查看序列状态
删除序列
提取当前值
第一次先用currval会报错?如何办
[外链图片转存中…(img-VMSF2ZmW-1665740422237)]
5.2 复杂序列
语法
创建序列
和我们的表结合起来insert into test values(seq_copy_id.nextval,‘张三’,170,sysdate)
5.3 查看与删除序列
查看序列状态
删除序列