OracleDay01

  • ORACLE 简介
    1. 什么是 ORACLE

ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或

B/S 体系结构的数据库之一。

ORACLE 通常应用于大型系统的数据库产品。

ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个

完备关系的产品;作为分布式数据库它实现了分布式处理功能。

ORACLE 数据库具有以下特点:

(1)支持多用户、大事务量的事务处理

(2)数据安全性和完整性控制

(3)支持分布式数据处理

(4)可移植性

    1. ORACLE 体系结构
      1. 数据库

Oracle 数据库是数据的物理存储。 这就包括(数据文件 ORA 或者 DBF、控 制文件、联机日志、参数文件)。其实 Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle 就只有一个大数据库。

      1. 实例

一个Oracle 实例(Oracle Instance)有一系列的后台进程(Backguound Processes)内存结构(Memory Structures)组成。一个数据库可以有 n 个实例。

      1. 数据文件(dbf)

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

行。

      1. 表空间

表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻 辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在 逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。

每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件

(datafile)。一个数据文件只能属于一个表空间。

注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。

由于 oracle 的数据库不是普通的概念,oracle 是有用户和表空间对数据进行 管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用

户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!

      1. 用户

用户是在表空间下建立的。用户登陆后只能看到和操作自己的表, ORACLE

的用户与 MYSQL 的数据库类似,每建立一个应用需要创建一个用户。

  • ORACLE 安装与配置
    1. 安装虚拟机

正常下一步即可

注意 安装 d盘/opt目录下, 这个目录没有中文没有空格

      1. 在vm中配置网关
      1. 修改 windows 的网卡信息
    1. 扫描已安装oracle的windows11系统

将压缩包解压到 没有中文没有空格的目录下.

    1. oracle已安装

检测oracle是否正常

这四个服务, 必须是正在运行才可以.

    1. PLSQL (oracle的客户端)

系统用户: system 密码: Aa123456

system

Aa123456

orcl

  • 准备数据 来源: 项目案例《自来水公司收费系统》
    1. 项目介绍与需求分析

XXX 市自来水公司为更好地对自来水收费进行规范化管理,决定委托传智 播客.黑马程序员开发《自来水公司收费系统》。考虑到自来水业务数量庞大,

数据并发量高,决定数据库采用 ORACLE 数据库。主要功能包括:

1.、基础信息管理:

(1)业主类型设置

(2)价格设置

(3)区域设置

(4)收费员设置

(5)地址设置

2、业主信息管理:

(1)业主信息维护

(2)业主信息查询

3、收费管理:

(1)抄表登记

(2)收费登记

(3)收费记录查询

(4)欠费用户清单

4、统计分析

(1)收费日报单

(2)收费月报表

    1. 表结构设计

1.业主类型表( T_OWNERTYPE)

|------|--------------|------|------|
| 字段名 | 类型(位数) | 是否必填 | 说明 |
| ID | NUMBER | 是 | 主键 |
| NAME | VARCHAR2(30) | 是 | 类型名称 |

2.价格表( T_PRICETABLE)

|-------------|--------------|------|---------|
| 字段名 | 类型(位数) | 是否必填 | 说明 |
| ID | NUMBER | 是 | 主键 |
| PRICE | NUMBER(10,2) | 是 | 价格 |
| OWNERTYPEID | NUMBER | 是 | 业主类型 ID |
| MINNUM | NUMBER(10,2) | 是 | 区间数开始值 |
| MAXNUM | NUMBER(10,2) | 是 | 区间数截止值 |

3.区域表( T_AREA)

|------|--------------|------|------|
| 字段名 | 类型(位数) | 是否必填 | 说明 |
| ID | NUMBER | 是 | 主键 |
| NAME | VARCHAR2(30) | 是 | 区域名称 |

4.收费员表( T_OPERATOR)

|------|--------------|------|-------|
| 字段名 | 类型(位数) | 是否必填 | 说明 |
| ID | NUMBER | 是 | 主键 |
| NAME | VARCHAR2(30) | 是 | 操作员名称 |

5.地址表( T_ADDRESS)

|------------|--------------|------|--------|
| 字段名 | 类型(位数) | 是否必填 | 说明 |
| ID | NUMBER | 是 | 主键 |
| NAME | VARCHAR2(30) | 是 | 地址名称 |
| AREAID | NUMBER | 是 | 区域 ID |
| OPERATORID | NUMBER | 是 | 操作员 ID |

6.业主表( T_OWNERS)

|-------------|--------------|------|---------|
| 字段名 | 类型(位数) | 是否必填 | 说明 |
| ID | NUMBER | 是 | 主键 |
| NAME | VARCHAR2(30) | 是 | 业主名称 |
| ADDRESSID | NUMBER | 是 | 地址 ID |
| HOUSENUMBER | NUMBER | 是 | 门牌号 |
| WATERMETER | VARCHAR2(30) | 是 | 水表编号 |
| ADDDATE | DATE | 是 | 登记日期 |
| OWNERTYPEID | NUMBER | 是 | 业主类型 ID |

7.收费台账( T_ACCOUNT)

|-------------|--------------|------|-------|
| 字段名 | 类型(位数) | 是否必填 | 说明 |
| ID | NUMBER | 是 | 主键 |
| OWNERID | NUMBER | 是 | 业主编号 |
| OWNERTYPEID | NUMBER | 是 | 业主类型 |
| AREAID | NUMBER | 是 | 所在区域 |
| YEAR | CHAR(4) | 是 | 账务年份 |
| MONTH | CHAR(2) | 是 | 账务月份 |
| NUM0 | NUMBER | | 上月累计数 |
| NUM1 | NUMBER | | 本月累计数 |
| USENUM | NUMBER | | 本月使用数 |
| METERUSERID | NUMBER | | 抄表员 |
| METERDATE | DATE | | 抄表日期 |
| MONEY | NUMBER(10,2) | | 应缴金额 |
| ISFEE | CHAR(1) | 是 | 是否缴费 |
| FEEDATE | DATE | | 缴费日期 |
| FEEUSERID | NUMBER | | 收费员 |

    1. 创建表空间

|-------------------------------------------------------------------------------------------------|
| create tablespace waterboss datafile 'C:\data\waterboss.dbf' size 100m autoextend on next 10m |

解释:

waterboss 为表空间名称

datafile 用于设置物理文件名称

size 用于设置表空间的初始大小

autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容

next 用于设置扩容的空间大小

    1. 创建用户

|----------------------------------------------------------------------------|
| create user c##wateruser identified by itcast default tablespace waterboss |

wateruser 为创建的用户名

identified by 用于设置用户的密码

default tablesapce 用于指定默认表空间名称

    1. 用户赋权

|---------------------------|
| grant dba to c##wateruser |

给用户 wateruser 赋予 DBA 权限后即可登陆

    1. 切换用户 c##wateruser
  • 表的创建、修改与删除
    1. 创建表

语法:

|------------------------------------------------------------------|
| CREATE TABLE 表名称( 字段名 类型(长度) primary key, 字段名 类型(长度), ....... ); |

数据类型:

  1. 字符型

(1)CHAR : 固定长度的字符类型,最多存储 2000 个字节

(2)VARCHAR2 :可变长度的字符类型,最多存储 4000 个字节

(3)LONG : 大文本类型。 最大可以存储 2 个 G

2.数值型

NUMBER : 数值类型

例如:NUMBER(5) 最大可以存的数为 99999

NUMBER(5,2) 最大可以存的数为 999.99

3.日期型

(1)DATE:日期时间型,精确到秒

(2)TIMESTAMP:精确到秒的小数点后 9 位

4.二进制型(大数据类型)

(1)CLOB : 存储字符,最大可以存 4 个 G

(2)BLOB:存储图像、声音、 视频等二进制数据,最多可以存 4 个 G

实例:

创建业主表

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| create table t_owners ( id number primary key, name varchar2(30), addressid number, housenumber varchar2(30), watermeter varchar2(30), adddate date, ownertypeid number ); |

其它表的创建见资料"自来水收费系统建表语句.sql "

    1. 修改表
  1. 增加字段语法:

|-------------------------------------------------------------------------|
| ALTER TABLE 表名称 ADD(列名 1 类型 [DEFAULT 默认值],列名 1 类型 [DEFAULT 默认值]...) |

为业主表增加两个字段,语句:

|----------------------------------------------------------------------------|
| -- 追加字段 ALTER TABLE t_owners ADD ( REMARK VARCHAR2(20), OUTDATE DATE ) |

  1. 修改字段语法:

|----------------------------------------------------------------------------|
| ALTER TABLE 表名称 MODIFY(列名 1 类型 [DEFAULT 默认值],列名 1 类型 [DEFAULT 默认值]...) |

修改两个字段的类型,语句:

|---------------------------------------------------------------------------------|
| -- 修改字段 ALTER TABLE t_owners MODIFY ( REMARK CHAR(20), OUTDATE TIMESTAMP ); |

  1. 修改字段名语法:

|------------------------------------------|
| ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名 |

语句:

|---------------------------------------------------------|
| ALTER TABLE t_owners RENAME COLUMN OUTDATE TO EXITDATE; |

  1. 删除字段名

|--------------------------------------------------------------------------------------|
| --删除一个字段 ALTER TABLE 表名称 DROP COLUMN 列名 --删除多个字段 ALTER TABLE 表名称 DROP (列名 1,列名 2...) |

语句:

|-------------------------------------------------|
| --删除字段 ALTER TABLE t_owners DROP COLUMN REMARK; |

    1. 删除表

语法:

|----------------|
| DROP TABLE 表名称 |

  • 数据增删改
    1. 插入数据

语法:

|---------------------------------------------------------|
| INSERT INTO 表名[(列名 1,列名 2 ,...)] VALUES(值 1,值 2 ,...) |

执行 INSERT 后一定要再执行 commit 提交事务

向业主表插入数据:

|---------------------------------------------------------------------------|
| insert into T_OWNERS VALUES (1,'张三丰',1,'2-2','5678',sysdate, 1, sysdate); |

语句中的 sysdate 是系统变量用于获取当前日期,点击齿轮的图标后,再点击下

图的绿色图标,此图标为 commit

我们再次录入一条数据,语句如下:

|----------------------------------------------------------------------------------------|
| INSERT INTO t_owners VALUES (4, '赵大侃', 1, '2-3', '9876', SYSDATE, 1, SYSDATE); commit; |

    1. 修改数据

语法:

|--------------------------------------------------|
| UPDATE 表名 SET 列名 1=值 1,列名 2=值 2 ,....WHERE 修改条件; |

执行 UPDATE 后一定要再执行 commit 提交事务

需求:将 ID 为 1 的业主的登记日期更改为三天前的日期

|---------------------------------------------------|
| update T_OWNERS set adddate=adddate-3 where id=1; |

    1. 删除数据

语法 1 :

|----------------------------|
| DELETE FROM 表名 WHERE 删除条件; |

执行 DELETE 后一定要再执行 commit 提交事务

需求:删除业主 ID 为 2 的业主信息

|-------------------------------------------------------------------------------------------|
| |------------------------------------------| | delete from t_owners where id=4; commit; | |

语法 2:

|--------------------|
| TRUNCATE TABLE 表名称 |

比较 truncat 与 delete 实现数据删除?

  1. delete 删除的数据可以 rollback

  2. delete 删除可能产生碎片,并且不释放空间

  3. truncate 是先摧毁表结构,再重构表结构

相关推荐
荒川之神4 小时前
ORACLE _11G_R2_ASM 常用命令
数据库·oracle
IT培训中心-竺老师4 小时前
Oracle 23AI创建示例库
数据库·oracle
time never ceases4 小时前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle
成富10 小时前
文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
数据库·人工智能·sql·spring·oracle
荒川之神12 小时前
ORACLE 闪回技术简介
数据库·oracle
Mephisto.java13 小时前
【大数据学习 | kafka高级部分】kafka的优化参数整理
大数据·sql·oracle·kafka·json·database
BearHan16 小时前
Sqlsugar调用Oracle的存储过程
oracle·存储过程·orm
superman超哥16 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba
Mephisto.java17 小时前
【大数据学习 | kafka高级部分】kafka的kraft集群
大数据·sql·oracle·kafka·json·hbase
Mephisto.java18 小时前
【大数据学习 | kafka高级部分】kafka的文件存储原理
大数据·sql·oracle·kafka·json