mysql中个人名用什么类型_MySQL基础知识(二)

 2024-01-13 04:02:12  阅读 0

并且,很多情况下会使用程序中的时间戳来代替,并且稍后保存到数据库时将字段类型设置为。这样可以节省存储空间,提高数据读取速度。

03.约束规则主键key:区分表中每一行数据唯一性的标志,以及数据物理存储的顺序

not null:该字段不允许填写空值,如果允许填写空值,则不直接填写not null。

:该字段中的值不允许重复

默认值:当不填写该值时,将使用默认值。 若填写,以填写的值为准。

外键key:用于连接两个表之间的关系,约束关系字段。 为关系字段填写值时,会查询关联表是否存在该值,如果存在则填写成功;如果存在则填写成功。 如果不存在则填充失败并抛出异常。

注意:虽然外键约束可以保证数据的有效性,但是在对数据进行增删改查(增、修改、删除、读查询)时,会降低数据库的性能,所以不建议使用。 那么如何保证数据的有效性呢? 可以在逻辑层进行判断控制【用代码控制】

04.数据库设计关系数据库建议基于ER模型,我们需要根据产品经理的设计方案提取模型和关系,并制定表结构。 这是该项目的第一步。

在开发中,设计数据库的软件有很多,常用的有power、db等,这些软件可以直观的看到实体以及实体之间的关系。

设计数据库可以由专门的数据库设计者或开发团队的成员来完成。 通常由项目经理带领团队成员完成。

这个阶段不需要独立完成数据库设计,但是要注意积累一些这方面的经验。

05.实体实体是我们根据开发需要想要以表的形式保存到数据库的东西。实体的名称最终会成为表名

实体将具有属性。 实体的属性是描述事物的内容。 实体的属性最终将作为字段存在于表中。

实体之间将存在关系。 这种关系一般就是按照三个范式抽取出来的主键和外键。

06.三范式范式理论【总结经验后,我们提出了一些理论来规范我们的数据库设计】数据必须是不可分割的

数据不能冗余()

数据不能重复。 对于重复的数据,新建一个表来存储。

经过对使用中问题的研究和总结,提出了数据库设计的一些规范。 这些规范称为范例(Forms)。

目前可追溯的范式有8种。 一般来说,需要遵循 3 个范式。

2、第一范式(1NF):它强调列的原子性,即列不能再分为其他列。 考虑这样一个表:

1.【联系人】(姓名、性别、电话)

2、如果在实际场景中,一个联系人有一个家庭电话号码和一个工作电话号码,那么这个表结构设计并没有达到1NF。

数据库字段名类型_数据库里字段类型_数据库name字段类型

3、为了符合1NF,我们只需要拆分一栏(电话)即可,即:【联系人】(姓名、性别、家庭电话、公司电话)

4.1NF很容易区分,但2NF和3NF很容易混淆。

3、第二范式(2NF):首先是1NF,它也包含两部分。 首先,表必须有主键; 其次,不包含在主键中的列必须完全依赖于主键,而不能仅依赖于主键的部分。 考虑订单详细列表:

1.【】(,,,,,)

2. 一张订单可以订购多种产品,因此单件不足以作为主键。 主键应该是 (,)

3.另外,(折扣)、(数量)完全依赖于主键(,)

4. 然而,仅取决于

5.所以该表不符合2NF。不符合2NF的设计容易产生冗余数据

6、可以将[]表拆分为[](,,,)和[](,,),消除原订单表中的多个重复

4、第三范式(3NF):首先,它是2NF。 另外,非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列A依赖于非主键列B,且非主键列A依赖于非主键列B。 B 列取决于主键。 考虑一个订单表。

1.【顺序】(,,,,,)主键是()

2.其中、、、、、等非主键列完全依赖于主键(),因此符合2NF

3.但问题是,它直接依赖于(非主键列),而不是直接依赖于主键。 它依赖于主键通过传输,因此不符合3NF。

4. 通过将[Order]拆分为[Order](,,)和[](,,,)来实现3NF

5、第二范式(2NF)和第三范式(3NF)的概念很容易混淆。 区分它们的要点是:

2NF:非主键列是完全依赖于主键,还是部分依赖于主键

3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列?

07.逻辑删除不想物理删除重要数据。 一旦删除,数据将无法恢复。

删除计划:集合列,类型为bit,代表逻辑删除,默认值为0

不重要的数据可以物理删除

数据的重要性要根据实际开发来确定

08.消除重复行。 在以下列之前使用它可以消除重复的行。

第 1 列,...FROM 表名;

# 例子:

从 ;

09. WHERE条件的高级运算符

1)。 null判断注意事项:NULL和''是不同的

查询未填写身高的学生

* 从哪里为空; 不为空

查询填写身高的学生

* 来自 WHERE 不为空; 查询填写身高的男生

* FROM WHERE 不为空且=1;

2)。 优先级从高到低依次为:括号、非、比较运算符、逻辑运算符

并且是在or之前计算的。 如果同时出现,想先计算或,则需要与()结合使用

10、连接查询当查询结果的列来自多个表时,需要将多个表连接成一个大数据集,然后选择合适的列返回

mysql支持三种类型的连接查询,分别是:

内连接查询:查询的结果是两个表匹配的数据

右连接查询:查询结果是两个表匹配到的数据,右表特有的数据,左表不存在的数据用NULL填充

左连接查询:查询结果是两个表匹配到的数据,左表特有的数据,右表不存在的数据用NULL填充

* 来自表 1

内\左\右连接 表 2

ON 表 1. 列 = 表 2. 列

6、示例01:使用内连接查询班级表和学生表

* 从

内部联接

ON .=.id;

7、示例02:使用左连接查询班级表和学生表

* 来自 AS

左连接 AS c

ON s.=c.id;

8、示例03:使用右连接查询班级表和学生表

* 来自 AS

右连接 AS c

开 s。 = c.id;

9、示例04:查询学生姓名和班级名称

s.name,c.name 来自 AS s

内连接 AS c

开 s。 = c.id;

11. 子查询

1)。 子查询在一条语句中嵌入了另一条语句,因此嵌入的语句称为子查询语句。

2)。 主查询的主查询对象,第一条语句

3)。 主查询和子查询之间的关系。 子查询嵌入在主查询中。

子查询是主查询的辅助,既可以作为条件,也可以作为数据源。

子查询是一条可以独立存在的语句,是一个完整的语句。

4). 例子

查找年龄高于平均年龄的学生

* 来自哪里年龄>(平均(年龄)来自);

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码