列属性的完整性 关于主键(primary key)

  定义:主键可以是多个字段,它是不可重复且不可为空的,唯一标识了数据库表中的一组数据,可以作为多张表中的联系要素,可在 CREATE TABLE 或 ALTER TABLE 语句中定义。

  alter table 表名 add primary key (字段); (赋予某个字段主键属性)

  alter table 表名 add id int primary key; (增添一个主键字段)

  复合主键

  就是一张表中有多个主键

  [唯一键]2

  定义:一个表中可以有多个唯一键,只保证该表中某个字段数据的唯一性,可以为空,可在 CREATE TABLE 或 ALTER TABLE 语句中定义。(与主键类似)

  例:

  alter table 表名 drop index 字段; (删除某个字段的唯一键属性)

  注:主键和唯一键的区别

  主键不可为空,可以与其他表有联系

  唯一键可为空,作用范围仅限该表

  复合唯一键

  就是一张表中有多个唯一键

  [外键]4

  与其他表关联的字段,可在 CREATE TABLE 或 ALTER TABLE 语句中定义。

  create table 表名

  。。。

  。。。

  foreign key(字段) references 关联表名(关联字段名) on delete set null on update cascade

  )engine=innodb; (注:设置外键 并设置删除数据时为置空操作,更新数据时为级联操作)

  alter table 表名 add foreign key (本表中一个字段) references 关联表名(关联字段)

  注:在一些并发项目中,是杜绝用外键的

  删除外键

  show create table 表名; (获取外键名)

  alter table 表名 drop foreign key 外键名;

  外键的数据操作

  置空

  主表删除对应数据,从表对应数据置空(null),一般用于外键删除数据。

  级联

  主表删除或更新数据,从表对应的数据也会删除或更新,一般用于外键更新数据。

  外键创建失败原因

  1、字段类型与大小不一致

  2、索引类型不一致

  3、其中一个表或两个表为MylSAM引擎(必须都为InnoDB引擎)

  4、为外键设置了默认值

  5、你可能设置了on delete set null, 但是相关的键的字段又设置成了nots null 值。你可能通过修改cascade 的属性值或者把字段属性设置成allow null来搞定这个bug.

  6、Charset 和 Collate 选项在表级和字段级上不一致。

  7、在这个关系里面,其中的一个字段是一个混合键值中的一个,它没有自己独立的索引,这时,你必须为它创建一个独立的索引。

  注释

  单行用‘#’,多行‘/ /’

  sql内注释: comment

  设计数据库要点

  1.要有主键

  2.注意使用正确的数据类型

  3.设置字段是否为空(not null)

  4.必要时设置default默认(例:缺考、暂时未知)

  5.考虑该表字段与外部的联系

  数据库设计思维 codd第一范式

  确保每列原子性(不可再分)

  codd第二范式

  非键字段必须依赖键字段(表中不该有的字段不能有)

  codd第三范式

  消除传递依赖

  数据的备份与恢复 备份

  mysqldump -uroot -p 备份的数据库 >备份数据库的文件的路径

  恢复

  mysql -uroot -p 空数据库

最后修改:2024 年 08 月 04 日
如果觉得我的文章对你有用,请随意赞赏