数据库MYSQL笔记2—字段


目录

  • 数据库MYSQL笔记2—字段
  • 1. 主键primary key
  • 1.1. 创建方法
  • 1.2. 主键约束
  • 1.3. 更新主键 & 删除主键
  • 1.4. 使用逻辑主键
  • 2. 增自增长
  • 3. 唯一键unique key
  • 3.1. 主键比较:
  • 3.2. 更新主键 & 删除主键
  • 4.foreign key(不推荐)
  • 4.1. 增加:与主键一样
  • 4.2. 修改外键&删除外键
  • 4.3. 外键作用
  • 4.4. 外键条件


1. 主键primary key

  • MySQL字段约束有四种,主键约束,非空约束,唯一约束,外键约束,而主键设置属于字段的约束之一

1.1. 创建方法

  • 1、建表的时候加primary key约束 (可多个主键)
  • 2、修改表字段的时候修改字段属性为primary key
  • 3、追加字段列表 alter table add primary key(主键列)

1.2. 主键约束

  • 1、唯一性
  • 2、因数字检索速度飞快,建议主键使用数值型,设置自动增长。

1.3. 更新主键 & 删除主键

#没有办法更新主键: 主键必须先删除,才能增加.

Alter table 表名 drop primary key;

1.4. 使用逻辑主键

  • 在实际大部分的时候是使用逻辑主键(逻辑字段与业务无关)

2. 增自增长

Create table sale_info(
salesId int primary key auto_increment comment ‘逻辑主键: 自增长’, -- 逻辑主键
order_date date  ,
price varchar(10) not null 
)

特点

  • 前提是本身是一个索引(key一栏有值)
  • 必须是数字(整型)
  • 最多只能有一个自增长
  • 插入行信息时,会自动按顺序出发自增长序号
  • 修改字段属性时候可以删除自增长

3. 唯一键unique key

3.1. 主键比较:

  • 相同点:数据不能重复:
  • 区别:唯一键默认的允许自动为空,而且可以多个为空(空字段不参与唯一性比较)

3.2. 更新主键 & 删除主键

1、与主键一样先删除后新增(但唯一键可以有多个: 可以不删除).
2、删除唯一键
Alter table 表名 drop unique key; -- 错误: 唯一键有多个
Alter table 表名 drop index 索引名字; -- 唯一键默认的使用字段名作为索引名字

4.foreign key(不推荐)

  • 外键: foreign key, 外面的键(键不在自己表中):
    如果一张表中有一个字段(非主键)指向另外一张表的主键,那么将该字段称之为外键.

4.1. 增加:与主键一样

1、新增时增加:Create table 表名(
		,,, foreign key(外键字段) references 外部表(主键字段))
2、修改时增加:
alter table add foreign key(外键字段) references 外部表(主键字段)

4.2. 修改外键&删除外键

  • 外键不可修改,只能先删除后新增. 删除外键语法 Alter table 表名 drop foreign key 外键名;
  • 一张表中可以有多个外键,但是名字不能相同

4.3. 外键作用

  • 外键默认的作用有两点: 一个对父表,一个对子表(外键字段所在的表)
  • 对子表约束: 子表数据进行写操作(增和改)的时候, 如果对应的外键字段在父表找不到对应的匹配: 那么操作会失败.(约束子表数据操作)

4.4. 外键条件

  • 1.外键要存在: 首先必须保证表的存储引擎是innodb(默认的存储引擎): 如果不是innodb存储引擎,那么外键可以创建成功,但是没有约束效果.
    2.外键字段的字段类型(列类型)必须与父表的主键类型完全一致.
    3.一张表中的外键名字不能重复. 4,增加外键的字段(数据已经存在),必须保证数据与父表主键要求对应.