- 数据库技术学习内容与学习方法
学习内容:
- Oracle 数据库
目前最好的关系型数据库。
基本的 C R U D 命令。
SQL 语句。select(R),update(U),delete(D),insert(C) - MySQL 数据库
中小型项目非常好用的关系型数据库。
灵活,小巧。 - 扩展软件开发流程中数据库设计原则
ER 图 —》根据需求分析数据库结构。
三范式 —》 学会使用范式来规范表结构。 - JDBC
在 Java 中连接数据库的技术。
在 Java 代码中想操作数据库中的数据。就必须使用到 JDBC 技术。
工具类的封装。DAO-Service 的分层。
一定要遵守编码规范。
学习难点:
- 数据库高级查询:子查询,多表连接查询,自连接查询。
- 分级查询与聚合函数。
- 分层时事务处理,异常处理,资源释放。必须按规范编写。
- 数据库,数据库管理系统,数据库可视化工具
数据库(DataBase):
数据库:一个保存数据的仓库。
在计算机中只有硬盘能长期保存数据。
数据库主是保存到硬盘的数据。都是以文件的形式保存。
数据库管理系统(DataBase Manager System):
我们平时叫数据库,说的其实是DBMS。
数据库管理系统就是一个软件系统。我们使用这个软件系统来管理保存数据的文件。
我们通过向管理系统 发送命令 的方式,让管理系统 帮我们去管理保存数据的文件。
通过DBMS可更方便的进行数据库的查询,过滤,保存,更新。
数据库可视化工具:
这是一个与数据库管理系统无关的软件。
使用数据库可视化工具可以以界面的方式来管理数据。
操作 Oracle 数据库的可视化工具:
操作 MySQL 数据库的可视化工具:
- Oracle 数据库管理系统
Oracle 数据库版本:
XE 简化版,是一个可以实现 CRUD 的一个版本。
企业版 和 标准版。
SID :
我们使用 Oracle 数据库时。每一个库都是一个实例。实例的唯一标识 称为 SID。
在 Oracle 数据库中每一个新工程,是分别创建不同的用户来实现区分。新工程与原有老工程,使用的库是同一个。
Oracle 数据库一般只有一个库。其他都是创建不同的用户来实现对应不同的工程。
企业版:SID:orcl
简化版:SID:XE
sys 和 system:
这是两个 Oracle 数据库中的管理员账号(DBA)。
Sys 有最高的管理权限。
但是平时我们不使用 sys 和 ssytem。
Scott 账号:
Oracle 数据库中的一个案例账号。
XE版本中没有scott账号。
- 使用可视化工具
创建连接:
第一步:使用 sys 或 system 创建连接
创建新用户:
在 Oracle 数据库中,当有一个新的工程需要开发时,不是创建一个新的数据库。而是创建新用户来使用。
还要为用户绑定角色 :
CONNECT 和 RESOURCE 。
connect:负责连接,用户可以连接到我们的数据库中来。
resource:数据处理,可以对数据表进行CRUD命令。
Oracle 数据的权限管理:
权限:用户可以对表或其他对象,进行操作的每一个动作。
角色:是一系列权限的集合。
- 数据表(table)
关系型数据库:
Oracle 数据库号称 关系-对象型数据库。
其实就是在关系型数据库基础上,使用了些对象的概念。
关系:一个关系其实就是一个二维表格。由行和列组成。
表的结构由列确定:
创建数据表:
表中的列有:列名,数据类型,长度大小,非空约束,默认值约束,PK主键约束。
创建数据表就是为表设置列的过程。
列中:数据类型 和 约束。
- 数据类型
可变长字符串类型 varchar2:
一个可以根据输入的字符串大小自动变短的数据类型。
Varchar2(20) 表示最长可以保存 20 个字符长度的字符串类型。
但是当输入的字符串长度不够20时,可以自动将大小缩短到合适的长度。
数据类型:
Integer / int
Float / number(10,2)
number(10,2) 表示可以保留 10 位有效数字,其中小数位是 2 位。
日期时间类:
Date 日期
Timestamp 时间戳
- 完整性约束
完整性约束。是在数据库中为了保证数据 正确性的。
完整性约束的分类:
完整性约束一共有四种:
- 实体完整性约束
- 域完整性约束
- 引用完整性约束
- 自定义完整性约束
实体完整性约束:
实体:表中的每一行。
实体完整性约束只有一个:主键约束(PK)。
----必须保证每一个实体的唯一性。
----使用主键约束的列(字段),具有唯一和非空两项属性。
域完整性约束:
域:表中的列。
域完整性就是用来维护这一列数据的正确性。
域完整性约束:数据类型,长度大小,非空,唯一,检查,默认值。
引用完整性约束:
引用:两张表之间的关系。
引用完整性的约束只有一种:外键约束(FK)。
自定义完整性约束:
自定义完整性约是使用存储过程来实现的。
存储过程。在现在的开发中,明确表明不再使用的技术。
- 创建数据表
每张表都应该有一个主键字段。
主键字段的条件是实体之间唯一。
- 创建外键约束
外键约束 完成引用完整性的约束条件。
引用完整性一定是二张表。
班级表 class_no5 主键表 主键是class_id
学员表 student_no5 外键表 外键是stu_class_id
需要 stu_class_id 字段 的值 受 class_id 的约束。
应该为 stu_class_id 字段加外键约束条件。
- 三范式
使用三范式来规范我们数据表的结构。
目的是为了减少数据表中的数据冗余。
数据冗余 表示 数据重复。
有数据冗余时,就很容易造成数据不一致。
-第一范式(1NF):保证域的原子性
列不可再拆分,如果有违反的地方,就需要进行拆分列。
例如:地址,姓名。
----地址可以拆分省,市,区,街道,详细地址。
----姓名可以拆分姓,名。
-第二范式(2NF):表中的所有非主键字段都依赖于表中的主键字段
取消部分依赖,如果有违反的地方,就需要进行拆分表。
拆分表 把与主键无关的字段从本表中拆分出去。
-第三范式(3NF):表中的所有非主键字段都直接依赖于表中的主键字段
取消传递依赖,如果有违反的地方,就需要进行拆分表。
折分出去的表,与本表还有关系。
例如:学号,姓名,班级名,教员名
----但是教员是直接依赖于班级。拆分出来二张表。
----学号(PK),姓名,学员班级号(FK,引用班级号)
----班级号(PK),班级名,教员名