范式
第一范式(原子性,不可分割):
确保存在一个主键且没有重复的 数据组,存在一个住建这个很容易理解,但是没有重复的数据,可能就会 有异议了,那么什么 是重复的数据组呢? 举个例子:一个 学号为01的学生,他的后面有他的电话和手机号,那么这样就算是 重复的数据组,可以这么想,他的电话和手机号,都可以联系到他所以这个就是重复的数据组。也就是说主键所在的行没有 重复的列。
第二范式(完全依赖):
首先第一范式是在第二范式的基础上存在的,如果第一范式不符合,那么第二范式也不符合。第二范式要求主键中的任意列必须没有局部性相关性。第二范式是第一范式的基础上解决多对多的实体关系,即在表中的每一行数据只能完成一个任务,同时每一个非主键属性都要完全依赖于主键属性,也就是说非主键属性要由主键推导出来,消除部分依赖的情况。举例:一个 炸鸡点在各个地区都有分店,每一个地区都有自己的编号,如果要找其中一家的分店,要根据地区编号找到这个分店。
第三范式(无传递性):
符合第二范式,非主键都依赖于主键。在第二范式的基础上,摆脱非主键列的传递依赖,比如一个表中有三列A、B、C,存在着A决定B,且B决定C的情况,那么这个表就不属于第三范式,因为A可以通过传递依赖决定C。举例:在提高班一个人可能有 好几个师傅,但是根据你可以推出 你的师傅A,还可以根据你推出你的师傅B,这样有一个传递的过程。
select后面表示筛选的内容,from后面表示筛选内容来自的位置,where后面表示筛选的条件。
第一章
Decimal数据类型的灵活性在于它允许声明需要存储的数字的数目。
Decimal(38,12)表示分配38个空间,小数点后面保留12个数字的空间。
创建表
CREATE TABLE name_of_table
(name _of colume colume_datatype
)
更改现有表
ALTER TABLE name_of _table 允许添加并删除一个现有表中的列
ADD name_of _field data_type 添加新的列
DROP COLUMN name _of _field删除
删除现有表
DROP TABLE name_of _table
插入新数据:
INSERT INTO table_name (column_names) VALUES (data_values)
更新数据:
UPDATA table_name
SET column _name=value
WHERE condition
逻辑运算符:and or,and两边的必须都为真,or 一个表达式为真或两个表达式都为真
删除数据
DELETE FORM Memberdatails;
like运算符:当搜索一个字符字段时,like允许使用通配符。
通配符:% 匹配一个或者多个字符
_匹配一个字符
Order by 排序,升序是默认的排序方式,降序在末尾添加DESC关键字
Oracle和IBM中,存在两种串连文本数据或基于文本的列的方式。在使用串连符号,使用两条垂线(||)字符,另一种是使用CONCAT()函数。
视图
视图是一个虚拟表。在一个数据库中,如果需要抽出几个表中的数据,抽出来的东西放在视图里面,这个就是视图的作用,他不是一个真是的表。
在SQL中,视图(View)是一种虚拟的表,由一个或多个基本表的行和列组成。它是从一个或多个表中派生的,可以像表一样查询和使用。视图可以简化复杂的查询操作,提供数据的逻辑组织和安全性控制。下面是一个简单的示例代码和一个示例图,用于说明在SQL中如何创建和使用视图。
代码示例
CREATE VIEW customer_view AS
SELECT customer_id, first_name, last_name, email
FROM customers
WHERE status = 'active';
在上面的示例代码中,我们创建了一个名为customer_view的视图。该视图从customers表中选择了customer_id、first_name、last_name和email列,并且只包含status为'active'的行。
示例图: 下面是一个示例图,说明了视图在SQL中的概念和作用。
在上面的示例图中,customers表是一个基本表,包含了多个列。我们创建了一个名为customer_view的视图,它从customers表中选择了特定的列,并且只包含status为'active'的行。通过查询customer_view视图,可以获取到满足条件的数据。
总结:
在SQL中,视图是一个虚拟的表,由一个或多个基本表的行和列组成。它可以像表一样查询和使用,可以简化复杂的查询操作,并提供数据的逻辑组织和安全性控制。通过使用CREATE VIEW语句,可以创建视图。视图的定义基于一个或多个基本表,并可以包含选择、过滤和计算等操作。通过查询视图,可以获取到满足条件的数据。视图在SQL中起到了组织和管理数据的作用,提供了更高层次的抽象和灵活性。
数据库范式是用来设计和规范关系型数据库中表结构的一种方法。范式的目标是消除冗余数据、确保数据的一致性和完整性,并提高数据库的性能。以下是关于数据库范式的总结,包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BC范式(BCNF):
-
第一范式(1NF):
- 数据表中的每个字段都应该是原子的,不可再分。
- 每行数据具有唯一的标识符,如主键。
- 重复的列应该被移动到单独的表中,以避免数据冗余。
-
第二范式(2NF):
- 数据表必须满足第一范式。
- 表中的非主键字段必须完全依赖于主键。
- 如果存在部分依赖关系,应将相关字段移动到新的表中,以消除冗余和数据更新异常。
-
第三范式(3NF):
- 数据表必须满足第二范式。
- 表中的非主键字段之间不能有传递依赖关系。
- 如果存在传递依赖关系,应将相关字段移动到新的表中,以消除冗余和数据更新异常。
-
BC范式(BCNF):
- 数据表必须满足第三范式。
- 表中的每个函数依赖关系必须是从候选键到非主键字段的。
- 如果存在非主键字段决定了其他非主键字段的情况,应将相关字段移动到新的表中,以避免数据冗余和更新异常。
总结: 数据库范式是一种设计原则,用于规范化关系型数据库的表结构。通过遵循范式规则,可以减少数据冗余,提高数据一致性和完整性,降低数据更新异常的风险,并提高数据库的性能。不同的范式提供了特定的规范化级别,根据具体的需求和数据特点,可以选择适当的范式级别来设计数据库。