术语&概念:

E(Entity)-R(Relationship) 模型(实体-联系模型):

  1. 实体 客观存在且可以相互区别的事物
  2. 属性 描述实体的特性
  3. 联系 实体间的对应关系
  1. 层次模型:用树形结构表示实体及其之间的联系
  2. 网状模型:网状结构表示实体间的联系
  3. 关系模型:采用二维表表示

关系代数部分运算

  1. 投影:从关系模式中选定若干属性组成新的关系
  2. 选择:从关系中找出满足给定条件的元组
  3. 连接:从两个关系的笛卡尔积中选择满足给定属性间一定条件的元组

关系模型:

关系:二维表 二维表名i.e.关系名

属性:二维表中的称为属性 二维表有n列称为n元关系。—值域:属性的取值范围

元组:二维表中的称为元组—分量:元组中每一个属性值称为元组的一个分量

关系模式:二维表的结构(或二维表的表框架),相当于文件结构或记录结构

关系模型:所有的关系模式、属性名和关键字的汇总

关系数据库:对应于一个关系模型的所有关系的集合


重要:

  1. 候选关键字:如果一个属性集合的值能唯一标识一个关系的元组(而其子集不能)而又不含多余的属性则称~;每一个关系中可有多个
  2. 主关键字:若有多个候选关键字,选择一个作为主关键字(有且只有一个)。
  3. 主属性:包含在任一候选关键字中的属性(一个或多个)
  4. 非主属性:不包含在任一候选关键字中的属性
  5. 外部关键字:一个属性集不是所在关系的关键字,但是是其他关系的
  6. 参照关系:在关系数据库中通过外部关键字使两个关系关联,箭头指向:被参照(父)

关系数据理论–规范化&模式分解

关系模式R:

用U表示R的属性全集,U=(A1,A2······An);

用F表示R的函数依赖集 关系模式R(U,F)

·部分函数依赖:X→Y,若X’是X的真子集,有X’→Y,则Y部分函数依赖于X

**eg:**学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号);

· 完全函数依赖:设X’是X的真子集,X→Y 但是对于每一个X’都有 X’!→Y,则Y完全函数依赖于X。

eg:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级)

·函数决定&函数依赖:给定一个X值,会有一个Y值和他对应:X函数决定Y

关系模型的完整性约束

不讨论函数依赖可能存在的问题:

数据冗余、数据更新、数据插入、数据删除

模式分解:将一个关系模式分解成多个

关系模型的完整性约束

数据完整性

​ 要想了解这三类完整性约束,先要了解什么是数据完整性。

    数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。数据完整性因此而提出。    数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。即数据完整性是指数据库中存储的数据是有意义的或正确的,和现实世界相符。它是应防止数据库中存在不符合语义规定的数据,和防止因错误信息的输入输出造成无效操作或错误信息而提出的。    数据完整性分为三类:实体完整性(Entity Integrity)、参照完整性(Referential Integrity)、用户自定义完整性(User-definedIntegrity)。    数据库采用多种方法来保证数据完整性,包括外键、约束、规则和触发器。系统很好地处理了这几者的关系,并针对不同的具体情况用不同的方法进行,相互交叉使用,相补缺点。    关系模型允许定义三类完整性约束;实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,体现了具体领域中的语义约束。

一、实体完整性

​ 实体完整性要求每个数据表都必须有主键,而作为主键的所有字段,其属性必须是独一及非空值。

    实体完整性要保证关系中的每个元组都是可识别的和惟一的,指关系数据库中所有的表都必须有主键,    而且表中不允许存在无主键值的记录和主键值相同的记录。因为实体必须可区分。    实际上,当在表中定义了主键时,数据库管理系统会自动保证数据的实体完整性,即保证不允许存在主键值为空的记录以及主键值重复的记录。

二、参照完整性

​ 参照完整性也称为引用完整性。参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

    现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系与关系之间的引用。    而参照完整性就是描述实体之间的联系的。参照完整性一般是指多个实体或关系之间的关联关系。    例如,若基本关系 R 的外键为 F,它与基本关系 S 的主键 K 相对应(基本关系 R 和 S 不一定是不同的关系),则对于 R 中的每个元组在 F 上的值必须为:(1)空值,F 的每个属性值均为空值。(2)S 中某个元组中的主键值。    即参照的关系中的属性值必须能够在被参照关系找到或者取空值,否则不符合数据库的语义。    在实际操作时如更新、删除、插入一个表中的数据,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确,不正确则拒绝操作。

三、用户定义完整性

​ 用户定义完整性也成为域完整性或语义完整性。用户自定义完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

    实际上就是指明关系中属性的取值范围,防止属性的值与应用语义矛盾。    关系模型应提供定义和检验这类完整性的机制,以便用统一的系统方法处理它们,而不要由应用程序承担这一功能    主要包括非空约束、唯一约束、检查约束、主键约束、外键约束。

————————————————
版权声明:本文为CSDN博主「Aries66666」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44290077/article/details/118604181

SQL语言

数据库 SQL 语言基本语法

SQL (Structured Query Language) 是用于管理关系型数据库系统中的数据的标准化语言。它可以执行数据操作、数据查询、数据定义、数据控制等多种功能,可以用于各种类型的关系数据库,如 MySQL、Oracle、SQL Server 等。以下是 SQL 语言的基本语法。

数据库连接

连接数据库是使用 SQL 语言进行任何操作之前的必要步骤。以下是连接到数据库的基本语法:

1
2
3
4
5
6
7
8
sqlCopy code-- 连接到 MySQL 数据库
mysql -u username -p password

-- 连接到 SQL Server 数据库
sqlcmd -S servername -U username -P password

-- 连接到 Oracle 数据库
sqlplus username/password@connect_string

数据库创建

创建数据库是存储和管理数据的第一步。以下是创建数据库的基本语法:

1
2
3
4
5
6
7
8
sqlCopy code-- 创建 MySQL 数据库
CREATE DATABASE database_name;

-- 创建 SQL Server 数据库
CREATE DATABASE database_name;

-- 创建 Oracle 数据库
CREATE DATABASE database_name;

表的创建

创建表是存储数据的核心步骤。以下是创建表的基本语法:

1
2
3
4
5
6
7
sqlCopy code-- 创建表
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);

例如,下面的语句将创建一个名为 customers 的表,其中包含 idnameageemail 四个列:

1
2
3
4
5
6
sqlCopy codeCREATE TABLE customers (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
email VARCHAR(100) NOT NULL
);

数据插入

插入数据是将数据添加到表中的方法。以下是插入数据的基本语法:

1
2
3
4
5
6
7
8
9
sqlCopy code-- 插入单条数据
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

-- 插入多条数据
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...),
(value4, value5, value6, ...),
(value7, value8, value9, ...);

例如,下面的语句将向 customers 表中插入一条数据:

1
2
sqlCopy codeINSERT INTO customers (id, name, age, email)
VALUES (1, 'Tom', 30, 'tom@example.com');

数据查询

查询数据是从表中检索数据的方法。以下是查询数据的基本语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sqlCopy code-- 查询所有数据
SELECT * FROM table_name;

-- 查询特定列的数据
SELECT column1, column2, ... FROM table_name;

-- 条件查询
SELECT * FROM table_name WHERE condition;

-- 排序查询
SELECT * FROM table_name ORDER BY column ASC/DESC;

-- 分组查询
SELECT column1, COUNT(column2) FROM table_name GROUP BY column1;

例如,下面的语句将从 customers 表中查询所有数据:

1
2
sqlCopy code
SELECT * FROM customers;

数据更新

更新数据是修改表中现有数据的方法。以下是更新数据的基本语法:

1
2
3
4
5
6
sqlCopy code-- 更新单个记录
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

-- 批量更新记录
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition1;
UPDATE table_name SET column1 = value3, column2 = value4, ... WHERE condition2;

例如,下面的语句将更新 customers 表中 id 为 1 的记录的 age 字段为 32:

1
2
sqlCopy code
UPDATE customers SET age = 32 WHERE id = 1;

数据删除

删除数据是从表中删除数据的方法。以下是删除数据的基本语法:

1
2
3
4
5
sqlCopy code-- 删除单个记录
DELETE FROM table_name WHERE condition;

-- 删除整个表
DROP TABLE table_name;

例如,下面的语句将删除 customers 表中 id 为 1 的记录:

1
2
sqlCopy code
DELETE FROM customers WHERE id = 1;

数据备份和恢复

备份和恢复数据是数据库管理的重要方面。以下是备份和恢复数据的基本语法:

1
2
3
4
5
sqlCopy code-- 备份数据库
mysqldump -u username -p password database_name > backup_file.sql

-- 恢复数据库
mysql -u username -p password database_name < backup_file.sql

例如,下面的语句将备份 customers 数据库并将其保存到名为 backup.sql 的文件中:

1
2
sqlCopy code
mysqldump -u username -p password customers > backup.sql

总结

SQL 语言是关系型数据库管理系统中必不可少的一部分,它提供了各种功能来操作和管理数据库中的数据。本文介绍了 SQL 语言的基本语法和实例,包括数据库连接、数据库创建、表的创建、数据插入、数据查询、数据更新、数据删除以及数据备份和恢复等方面的内容。