衡水做wap网站价格,企业网上银行登录入口,免费商城app,上海封闭饿死多少人1、数据库的定义
数据库#xff08;DataBase#xff0c;DB#xff09;简单来说就是数据的集合数据库管理系统#xff08;Database Management System#xff0c;DBMS#xff09;是一种操纵和管理数据库的大型软件#xff0c;通常用于建立、使用和维护数据库。数据库系统…1、数据库的定义
数据库DataBaseDB简单来说就是数据的集合数据库管理系统Database Management SystemDBMS是一种操纵和管理数据库的大型软件通常用于建立、使用和维护数据库。数据库系统Database SystemDBS是指基于数据库的计算机应用系统通常由数据库、数据库管理系统、软件、数据库管理员、用户组成
2、数据库中的一些基本概念
元组元组tuple是关系数据库中的基本概念关系是一张表表中的每行即数据库中的每条记录就是一个元组每列就是一个属性。 在二维表里元组也称为行。码码就是能唯一标识实体的属性对应表中的列。候选码若关系中的某一属性或属性组的值能唯一的标识一个元组而其任何、子集都不能再标识则称该属性组为候选码。例如在学生实体中“学号”是能唯一的区分学生实体的同时又假设“姓名”、“班级”的属性组合足以区分学生实体那么{学号}和{姓名班级}都是候选码。主码 : 主码也叫主键。主码是从候选码中选出来的。 一个实体集中只能有一个主码但可以有多个候选码。外码 : 外码也叫外键。如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。外键用来和其他表建立联系用外键是另一表的主键外键是可以有重复的可以是空值。一个表可以有多个外键。主属性候选码中出现过的属性称为主属性。比如关系 工人工号身份证号姓名性别部门. 显然工号和身份证号都能够唯一标示这个关系所以都是候选码。工号、身份证号这两个属性就是主属性。如果主码是一个属性组那么属性组中的属性都是主属性。非主属性 不包含在任何一个候选码中的属性称为非主属性。比如在关系——学生学号姓名年龄性别班级中主码是“学号”那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性。 3、数据库中三范式
第一范式1NF属性不可再分第二范式2NF在1NF的基础上消除了非主属性对码的部分函数依赖第三范式3NF在2NF的基础上消除了非主属性对码的传递函数依赖
1 函数依赖Functional Dependency
函数依赖是关系数据库中属性之间的一种约束关系。假设有一个关系模式R(U) 其中U是属性集合如果对于U 的一个子集X 和另一个子集Y满足以下条件对于R的任意两个元组t和s只要 t[X] s[X]就必然有t[Y] s[Y]那么称Y函数依赖于X记作。
- 举例在学生关系表中假设属性集合为 {学号, 姓名, 年龄, 性别}如果每个学号唯一对应一个学生的所有信息那么可以表示为学号 - 姓名, 年龄, 性别。
2部分函数依赖Partial Functional Dependency
如果在关系模式R(U) 中存在函数依赖并且存在X的一个真子集X 使得成立那么称Y对X是部分函数依赖。
- 举例假设有一个关系模式R(学号, 课程号, 成绩)其中 (学号, 课程号)是候选键。如果(学号, 课程号) - 成绩但同时课程号-成绩也成立那么成绩 对 (学号, 课程号) 是部分函数依赖。
部分函数依赖会导致数据冗余和更新异常因此在数据库设计中应尽量避免。
3 完全函数依赖Full Functional Dependency
如果在关系模式R(U)中存在函数依赖并且对于X的任意真子集X 都不成立那么称Y对X是完全函数依赖。
- 举例在关系模式R(学号, 姓名, 年龄)中假设学号-姓名, 年龄。因为姓名和年龄不能被学号的任何真子集决定所以姓名和年龄对学号是完全函数依赖。
完全函数依赖是数据库设计中期望的依赖关系因为它可以减少数据冗余和更新异常。
4 传递函数依赖Transitive Functional Dependency
在关系模式R(U)中如果存在函数依赖和并且Y不是X 的子集同时X 不能直接决定Z那么称Z对X是传递函数依赖。
- 举例假设有一个关系模式R(学号, 班级, 班主任)其中学号-班级和班级 \rightarrow 班主任但学号不能直接决定班主任那么班主任对学号是传递函数依赖。
传递函数依赖也会导致数据冗余和更新异常因此在数据库设计中通常需要通过规范化如第三范式来消除传递函数依赖。
4、数据库语言
1. 数据库定义语言DDLData Definition Language
数据库定义语言用于定义和管理数据库的结构包括创建、修改、删除数据库中的各种对象如表、视图、索引、约束等。DDL操作直接影响数据库的模式schema。 常见的DDL语句
1. CREATE创建- 创建数据库CREATE DATABASE database_name;- 创建表CREATE TABLE table_name (column1 datatype, column2 datatype, ...);- 创建索引CREATE INDEX index_name ON table_name (column);- 创建视图CREATE VIEW view_name AS SELECT columns FROM table_name WHERE condition;2. ALTER修改- 修改表结构例如添加或删除列ALTER TABLE table_name ADD COLUMN column_name datatype;ALTER TABLE table_name DROP COLUMN column_name;- 修改列的数据类型ALTER TABLE table_name MODIFY COLUMN column_name new_datatype;3. DROP删除- 删除数据库DROP DATABASE database_name;- 删除表DROP TABLE table_name;- 删除索引DROP INDEX index_name;- 删除视图DROP VIEW view_name;4. TRUNCATE清空- 清空表中的所有数据但保留表结构TRUNCATE TABLE table_name;
特点 - DDL操作通常会导致数据库结构的永久性变化。 - DDL语句在执行时通常会隐式提交事务不可回滚。
2. 数据库操作语言DMLData Manipulation Language
数据库操作语言用于操作数据库中的数据包括插入、更新、删除数据。DML操作直接影响数据库中的数据实例但不改变数据库的结构。常见的DML语句
1. INSERT插入- 向表中插入数据INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);2. UPDATE更新- 修改表中的数据UPDATE table_name SET column1 value1, column2 value2 WHERE condition;3. DELETE删除- 删除表中的数据DELETE FROM table_name WHERE condition;4. MERGE合并- 在某些数据库系统中MERGE语句用于根据条件插入或更新数据MERGE INTO target_table tUSING source_table sON (t.id s.id)WHEN MATCHED THENUPDATE SET t.column s.columnWHEN NOT MATCHED THENINSERT (column1, column2)VALUES (s.column1, s.column2);特点 - DML操作可以被事务控制如提交或回滚。 - DML是数据库中最常用的语言用于日常的数据操作。
3. 数据库查询语言DQLData Query Language
数据库查询语言是DML的一个子集专门用于从数据库中检索数据。DQL的核心是SELECT语句它是数据库中最常用的操作之一。
常见的DQL语句
1. SELECT查询- 基本查询SELECT column1, column2, ...FROM table_nameWHERE condition;- 查询所有列SELECT * FROM table_name;- 带条件的查询SELECT column1, column2FROM table_nameWHERE column1 value AND column2 value;- 聚合查询SELECT COUNT(*), AVG(column), SUM(column), MAX(column), MIN(column)FROM table_nameWHERE conditionGROUP BY column;- 多表连接查询SELECT t1.column1, t2.column2FROM table1 t1JOIN table2 t2 ON t1.id t2.idWHERE condition;
特点 - DQL的核心是SELECT语句用于从数据库中检索数据。 - 查询操作不会修改数据库中的数据只是返回结果集。 - 查询语言支持复杂的逻辑如条件过滤、分组、排序、连接等。 到这里我们就介绍完数据库的相关理论知识从整体上把握了数据库接下来介绍MySQL
记得给个小心心♥~