Mysql 一: 数据库基础知识

一、数据库简介

历史和来源 :

1.人类在进化的过程中,创造了数字、文字、符号等来进行数据的记录,

但是承受着认知能力和创造能力的提升,数据量越来越大,对于数据的记录

和准确查找,成为了一个重大难题

2.计算机诞生后,数据开始在计算机中存储并计算,并设计出了数据库系统

作用(数据库系统解决的问题):

1.【持久化存储】(一块硬盘,具体 在哪需要研究)

2.【优化读写】(不是和硬盘进行简单的 I/O 操作,而是优化了的 ,

每个数据库的不同点在于读写处理不同,算法不同,导致读写速度不同)

3.【保证数据的有效性】(比如以前录身份证号需要纯手工 录入,可能在翻看不同省

份信息时出现冲突,把已经存在的数据再次录入,使用数据库就可以直接查询,避免冲突)

现状 :

当前使用的数据库,主要分为两类

1.文档型,如sqlite,就是一个文件,【通过对文件的复制】【完成数据库的复制】

(用于移动端,比如电视、智能家电等 ,嵌入式用得多。)

2.服务型,如mysql、postgre,数据【存储在一个物理文件中】,但是

【需要使用终端以tcp/ip协议连接】,【进行数据库的读写操作】

(在一台机器上安装服务端(耗电量与占有的内存会 比较大),然后进行配置,

在需要访问数据库的机器上安装客户端,通过这个客户端去访问服务端,

客户端发送命令,服务端接收并执行命令,最终产生结果。)

二、 E-R模型

  • E 表示entry,实体(比如一个人的身高、体重等属性)
  • R 表示relationship,关系(一个人与其他人的关系,

比如你百度奥巴马,会给你个奥巴马老婆的链接,

这个关系即不是描述奥巴马属性的数据,

也不是描述奥巴马老婆属性的数据,而是描述他们之间的关系的数据,

是属于两个实体之间的数据)

  • 【一个实体】转换为数据库中的【一个表】
  • 【关系】描述【两个实体之间的对应规则】,包括
    • 一对一 (一个孩子只有一个爹)
    • 一对多(一个爹可以有多个孩子)
    • 多对多(你有多个兄弟姐妹,相对的你的兄弟姐妹也有多个兄弟姐妹)
  • 关系转换为数据库表中的一个列 *在关系型数据库中一行就是一个对象

总结 :

当你需要去设计数据库的时候,就要先去设计 E-R 模型,先设计 N 个实体,

再设计N个实体之间的关系(设计这个关系比较难,需要根据产品的设计具体实现)。

三、 三范式(三个规范)

经过研究和对使用中问题的总结,对于设计数据库提出了一些规范,这些规范被称为范式

    • 第一范式(1NF):列不可拆分(比如我设计了学生表,里面有个属性 “姓名” ,虽然 姓 和 名 是两个信息,但是对于学生信息来说,放到一起就行了。所以 在这里不能拆)
    • 第二范式(2NF):唯一标识(每张表 都要有一个属性

用于区分其他条记录,找到对应的 这条记录,比如 id,

这个标识只要有一个就行了 )

    • 第三范式(3NF):引用主键(涉及到 “关系”,我们 在【引用关系】的时候,只能

【通过表里面的】 【主键】 【进行引用】)

说明:后一个范式,都是在前一个范式的基础上建立的

四、数据完整性

在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,

为表添加一些强制性的验证,包括数据字段的类型、约束

五、 字段类型

  • 在mysql中包含的数据类型很多,这里主要列出来常用的几种
  • 数字:int(整数),decimal(小数,两个参数:总共多少为 ,小数 多少位)

decimal(5, 2) 这个字段表示总共可以有 5 位, 其中 小数可以有两位

1.2 可以存进去。 1000.21 不存进去

  • 字符串:char,varchar,text(text存储大文本,无限长度)
  • 日期:datetime(即包含日期又包含时间)
  • 布尔:bit(可以存性别、状态等,开销小,可以 根据需要去使用更多的位)

六、 约束

  • 主键primary key (不能重复 、唯一标识,根据主键找数据速度非常快)
  • 非空not null (如果没有该数据就会报错)
  • 惟一unique(这个值不能重复,重复就报错,

一张表可以有多个唯一unique,但是只能有一个主键)

  • 默认default(如果不写就采用默认值)
  • 外键foreign key

猜你喜欢

转载自blog.csdn.net/qq_26128879/article/details/82594920