列属性
列属性又称之为字段属性,在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自动增长
Null属性
NULL属性:代表字段为空

如果对应的值为YES表示该字段可以为NULL
注意:
1、
2、 Mysql的记录长度为65535个字节,如果一个表中有字段允许为NULL,那么系统就会设计保留一个字节来存储NULL,最终有效存储长度为65534个字节。
默认值
Default:默认值,当字段被设计的时候,如果允许默认条件下,用户不进行数据的插入,那么就可以使用事先准备好的数据来填充:通常填充的是NULL

测试:不给当前字段提供数据值

Default关键字的另外一层使用:显示的告知字段使用默认值:在进行数据插入的时候,对字段值直接使用default

列描述
列描述:comment,是专门用于给开发人员进行维护的一个注释说明
基本语法:comment ‘字段描述’;

查看Comment:必须通过查看表创建语句

主键
顾名思义:主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性
创建主键
随表创建
系统提供了两种增加主键的方式
1、 方案1:直接在需要当做主键的字段之后,增加primary key属性来确定主键
2、 方案2:在所有字段之后增加primary key选项:primary key(字段信息)

表后增加
基本语法:alter table 表名 add primary key(字段);

查看主键
方案1:查看表结构

方案2:查看表的创建语句

删除主键
基本语法:alter table 表名 drop primary key;

复合主键
案例:有一张学生选修课表:一个学生可以选修多个选修课,一个选修课也可以由多个学生来选:但是一个学生在一个选修课中只有一个成绩。

主键约束
主键一旦增加,那么对对应的字段有数据要求
1、
2、

主键分类
主键分类采用的是主键所对应的字段的业务意义分类
业务主键:主键所在的字段,具有业务意义(学生ID,课程ID)
逻辑主键:自然增长的整型(应用广泛)
自动增长
自动增长:auto_increment,当给定某个字段该属性之后,该列的数据在没有提供确定数据的时候,系统会根据之前已经存在的数据进行自动增加后,填充数据。
通常自动增长用于逻辑主键。
原理
自动增长的原理:
1、
2、
3、
4、
使用自动增长
基本语法:在字段之后增加一个属性auto_increment

插入数据:触发自动增长,不能给定具体值

修改自动增长
1、

2、
Alter table 表名 auto_increment = 值;

删除自动增长
删除自增长:就是在字段属性之后不再保留auto_increment,当用户修改自增长所在字段时,如果没有看到auto_increment属性,系统会自动清除该自增长

初始设置
在系统中,有一组变量用来维护自增长的初始值和步长
Show variables like ‘auto_increment%’;

细节问题
1、
2、

3、

唯一键
唯一键:unique key,用来保证对应的字段中的数据唯一的。
主键也可以用来保证字段数据唯一性,但是一张表只有一个主键。
1、
2、 唯一键允许字段数据为NULL,NULL可以有多个(NULL不参与比较)
创建唯一键
创建唯一键与创建主键非常类似
1、 直接在表字段之后增加唯一键标识符:unique[ key]

2、 在所有的字段之后使用unique key(字段列表);

3、 在创建完表之后也可以增加唯一键
alter table 表名 add unique key(字段列表);

查看唯一键
唯一键是属性,可以通过查看表结构来实现

唯一键效果:在不为空的情况下,不允许重复

在查看表创建语句的时候,会看到与主键不同的一点:多出一个“名字”

删除唯一键
一个表中允许存在多个唯一键:假设命令为主键一样:alter table 表名 drop unique key;//错误的
Index关键字:索引,唯一键是索引一种(提升查询效率)
删除的基本语法:alter table 表名 drop index 唯一键名字;

修改唯一键:先删除后增加
复合唯一键
唯一键与主键一样可以使用多个字段来共同保证唯一性;
一般主键都是单一字段(逻辑主键),而其他需要唯一性的内容都是由唯一键来处理。
表关系
表关系:表与表之间(实体)有什么样的关系,每种关系应该如何设计表结构。
一对一
一对一:一张表中的一条记录与另外一张表中最多有一条明确的关系:通常,此设计方案保证两张表中使用同样的主键即可
学生表
学生ID(PRI) | 姓名 | 年龄 | 性别 | 籍贯 | 婚否 | 住址 |
|
|
|
|
|
|
|
表的使用过程中:常用的信息会经常去查询,而不常用的信息会偶尔才会用到。
解决方案:将两张表拆分,常见的放一张表,不常见的放一张表
常用表
学生ID(PRI) | 姓名 | 年龄 | 性别 |
|
|
|
|
不常用表
学生ID(PRI) | 籍贯 | 婚否 | 住址 |
|
|
|
|
一对多
一对多,通常也叫作多对一的关系。通常一对多的关系设计的方案,在“多”关系的表中去维护一个字段,这个字段是“一”关系的主键。
母亲表
母亲ID | 姓名 | 年龄 | 身高 |
M1 |
|
|
|
M2 |
|
|
|
孩子表
孩子ID | 姓名 | 年龄 | 身高
| 母亲ID |
K1 |
|
|
| M1 |
K2 |
|
|
| M1 |
多对多
多对多:一张表中的一条记录在另外一张表中可以匹配到多条记录,反过来也一样。
多对多的关系如果按照多对一的关系维护:就会出现一个字段中有多个其他表的主键,在访问的时候就会带来不便。
既然通过两张表自己增加字段解决不了问题,那么就通过第三张表来解决。
师生关系
1、
2、
首先得有两个实体:老师表和学生表

从中间设计一张表:维护两张表对应的联系:每一种联系都包含

多对多解决方案;增加一个中间表,让中间表与对应的其他表形成两个多对一的关系:多对一的解决方案是在“多”表中增加“一”表对应的主键字段。
















