数据库MYSQL笔记2—字段
目录
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,增加外键的字段(数据已经存在),必须保证数据与父表主键要求对应.对于外键更多的详解,见下方链接: https://blog.csdn.net/qq_34115899/article/details/81190461?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162609632516780262578676%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162609632516780262578676&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-81190461.first_rank_v2_pc_rank_v29&utm_term=mysql%E8%AF%A6%E8%A7%A3&spm=1018.2226.3001.4187