列属性

空属性
null和not null
列描述
comment ,没有实际含义,是专门用来描述字段的。
默认值
default ,某一数据会经常性出现某个具体的值,因此可以在开始的时候就指定好,而在需要真实数据的时候,用户可以选择性的使用默认值。
主键
primary key,表中最重要的键,每一张表只能有一个字段(复合主键 ,可以是多个字段)使用此属性,用来唯一约束字段里面的数据,不能重复。
添加主键的方法有三种:

  1. 在创建表的时候,直接在字段后面,添加primary key 关键字。
  2. 在创建表的时候,在所有的字段之后,使用primary key(主键字段列表)来创建主键(要是有多个字段作为主键,则称之为复合主键)
  3. 当表创建完之后,额外追加主键,可以直接追加主键,也可以通过修改表字段的属性来追加主键。
    使用方式: alter table students add primary key(id);
    主键约束:即主键对应的字符中的数据不允许重复,如果重复,则数据操作(主要是增和改)失败。
    更新和删除主键:对于主键,没有办法直接更新,主键必须先删除,然后才能更新。
    删除主键基本语法: alter table +表名+drop primary key;
    自动增长
    auto_increment :当对应的字段,不给值,或者是默认值,或者是null的时候,就会自动的被系统触发,系统会从当前字段中取已有的最大值再进行+1操作,得到新的字段值。
    唯一键
    唯一键:每张表往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此唯一键就是用来解决表中多个字段需要具有唯一性的问题。
    唯一键的本质和主键差不多,但是唯一键默认的允许字段为空,而且可以多个字段为空,因此空字段不参与唯一性的比较。
    添加唯一键的三种方法:
  • 在创建表的时候,字段后面直接添加unique或者unique key关键字
  • 在所有字段之后,增加unique key(字段列表),可以设置复合唯一键。
  • 创建表之后,添加唯一键,SQL语句添加唯一键例子:alter table students add unique key (number);
    删除唯一键:alter table +表名+drop index +索引名字;

索引

意义

  • 提升查询数据的效率;
  • 约束数据的有效性;
    MySQL 中提供了多种索引,包括:

主键索引primary key
唯一键索引unique key
全文索引fulltext index
普通索引index

关系

一对一
一对一,即一张表的一条记录只能与另外一张表的一条记录相对应,反之亦然。
比如身份证和公民的关系,一个公民只能有一个身份证,一个身份证也只能对应一个公民
一对多/多对一
一对多,即一张表中的记录可以对应另外一张表中的多条记录,但是反过来,另外一张表中的一条记录只能对应第一张表中的一条记录。
比如 国家和城市的关系,一个国家可以有很多的城市,但是一个城市只属于一个国家;
多对多
多对多,即一张表中的记录可以对应另外一张表中的多条记录,反过来,另外一张表中的一条记录也可以对应第一张表中的多条记录。
比如学生和老师的关系,一个老师可以教很多的学生,但是一个学生也可以被很多的老师教过;

范式

范式是一种分层结构的规范,共 6 层,分别为1NF、2NF、3NF、4NF、5NF和6NF,每一层都比上一层严格,若要满足下一层范式,其前提是先满足上一层范式。其中,1NF是最底层的范式,6NF为最高层的范式,也最严格。
但是在一般情况下,只需要满足前三种范式即可。
注意:范式在数据库设计中是由指导意义的,但不是强制规范。
1NF
第一范式要求字段的数据要具有原子性,不可再分;就是不能出现复合的字段。
比如一个学校表,开学时间和结束时间在一起,这样就不满足第一范式;
2NF
第二范式是要解决表设计中不允许出现部分依赖。
部分依赖:数据表在设计过程中,如果有复合主键,并且表中的有些字段不是由整个主键来确定的,而是依赖主键的部分问题,就叫做部分依赖;
3NF
第三范式,满足第一范式和第二范式,然后满足表设计中出现的传递依赖的问题;
传递依赖:每张表中的所有字段都应该直接依赖主键(逻辑主键,代表是业务主键),如果表设计中存在一个字段,并不直接依赖主键,而是通过某个非主键字段依赖,最终实现主键依赖(把这种不是直接依赖主键,而是依赖非主键字段的依赖关系,称之为传递依赖)