关系型数据库总结(mysql,oracle,pgsql--)

数据库三大范式是什么?

数据库的三大范式是指在关系型数据库设计中,数据表需要满足的三种规范化级别,分别是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。
 1. 第一范式(1NF):每个数据列都是不可再分的原子值,即每个字段都是单一值,不可再分。例如,一个订单表中,订单号、订单日期、客户名称等都应该是单一值,而不是一个组合值。
 2. 第二范式(2NF):在满足第一范式的基础上,非主键列必须完全依赖于主键,而不是仅依赖于主键的一部分。例如,一个订单表中,订单号、商品编号、商品名称、商品单价等字段应该在不重复的情况下分别存在一个表中,而不是将商品信息重复存储在每个订单中。
 3. 第三范式(3NF):在满足第二范式的基础上,非主键列之间不能存在传递依赖关系。例如,一个订单表中,订单号、客户名称、客户地址等字段应该在不重复的情况下分别存在一个表中,而不是将客户信息重复存储在每个订单中。因为客户地址依赖于客户名称,而不是依赖于订单号。
 通过满足三大范式的规范,可以避免数据冗余、数据不一致等问题,提高数据的可靠性和一致性。

数据库三大范式是关系型数据库设计中的重要原则,用于规范化数据结构,提高数据的一致性和完整性。下面是使用数据表展示三大范式的示例:
 第一范式(1NF):
假设我们有一个存储学生信息的数据库,包含以下字段:学生ID、姓名、年龄、课程1、课程2、课程3。
 | 学生ID | 姓名 | 年龄 | 课程1 | 课程2 | 课程3 |
| ------ | ---- | ---- | ----- | ----- | ----- |
| 1      | 张三 | 20   | 数学  | 英语  | 物理  |
| 2      | 李四 | 22   | 英语  | 物理  | 体育  |
 这个表格不符合1NF,因为课程字段包含了多个值。为了满足1NF,我们可以将课程字段拆分为单独的表格。
 学生表:
 | 学生ID | 姓名 | 年龄 |
| ------ | ---- | ---- |
| 1      | 张三 | 20   |
| 2      | 李四 | 22   |
 课程表:
 | 学生ID | 课程   |
| ------ | ------ |
| 1      | 数学   |
| 1      | 英语   |
| 1      | 物理   |
| 2      | 英语   |
| 2      | 物理   |
| 2      | 体育   |
 这样,每个表格中的字段都是原子的,不再包含多个值。
 第二范式(2NF):
假设我们有一个存储订单信息的数据库,包含以下字段:订单ID、产品ID、产品名称、产品类别、产品价格。
 | 订单ID | 产品ID | 产品名称 | 产品类别 | 产品价格 |
| ------ | ------ | -------- | -------- | -------- |
| 1      | 1      | 手机     | 电子产品 | 1000     |
| 2      | 2      | 电视     | 家电     | 2000     |
| 3      | 3      | 冰箱     | 家电     | 3000     |
 这个表格不符合2NF,因为产品类别和产品价格依赖于产品ID,而不是整个订单ID。为了满足2NF,我们可以将其拆分为两个表格。
 订单表:
 | 订单ID | 产品ID |
| ------ | ------ |
| 1      | 1      |
| 2      | 2      |
| 3      | 3      |
 产品表:
 | 产品ID | 产品名称 | 产品类别 |
| ------ | -------- | -------- |
| 1      | 手机     | 电子产品 |
| 2      | 电视     | 家电     |
| 3      | 冰箱     | 家电     |
 这样,产品类别和产品价格与产品ID相关联,实现了2NF。
 第三范式(3NF):
假设我们有一个存储员工信息的数据库,包含以下字段:员工ID、员工姓名、部门ID、部门名称、部门位置。
 | 员工ID | 员工姓名 | 部门ID | 部门名称 | 部门位置 |
| ------ | -------- | ------ | -------- | -------- |
| 1      | 张三     | 1      | 技术部   | 10楼     |
| 2      | 李四     | 2      | 销售部   | 5楼      |
| 3      | 王五     | 1      | 技术部   | 10楼     |
 这个表格不符合3NF,因为部门名称和部门位置依赖于部门ID,而不是整个员工ID。为了满足3NF,我们可以将其拆分为两个表格。
 员工表:
 | 员工ID | 员工姓名 | 部门ID |
| ------ | -------- | ------ |
| 1      | 张三     | 1      |
| 2      | 李四     | 2      |
| 3      | 王五     | 1      |
 部门表:
 | 部门ID | 部门名称 | 部门位置 |
| ------ | -------- | -------- |
| 1      | 技术部   | 10楼     |
| 2      | 销售部   | 5楼      |
 这样,部门名称和部门位置与部门ID相关联,实现了3NF。
 希望以上示例能够清晰地展示数据库三大范式的概念和实际应用。

数据库有哪些数据类型

MySQL有许多数据类型,以下是一些常见的数据类型:
 1. 整数类型:
   - TINYINT:1字节,范围为-128到127或0到255。
   - SMALLINT:2字节,范围为-32,768到32,767或0到65,535。
   - INT:4字节,范围为-2,147,483,648到2,147,483,647或0到4,294,967,295。
   - BIGINT:8字节,范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807或0到18,446,744,073,709,551,615。
 2. 浮点数类型:
   - FLOAT:4字节,单精度浮点数。
   - DOUBLE:8字节,双精度浮点数。
 3. 定点数类型:
   - DECIMAL:可变长度,用于存储精确的小数值。
 4. 字符串类型:
   - CHAR:固定长度的字符串,最多可以存储255个字符。
   - VARCHAR:可变长度的字符串,最多可以存储65535个字符。
   - TEXT:可变长度的文本字符串,最多可以存储65535个字符。
 5. 日期和时间类型:
   - DATE:日期,格式为'YYYY-MM-DD'。
   - TIME:时间,格式为'HH:MM:SS'。
   - DATETIME:日期和时间,格式为'YYYY-MM-DD HH:MM:SS'。
   - TIMESTAMP:时间戳,存储从1970年1月1日以来的秒数。
 还有其他一些数据类型,如枚举、集合、二进制等,但以上是一些常见的数据类型。

操作数据库的一些语法

常用语法:SQL语言 - SQL语法基础 | Java 全栈知识体系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值