一、约束分为表级约束和列级约束,保证数据的完整性和一致性
二、约束类型有:
NOT NULL(非空约束)
PRIMARY KEY(主键约束)
UNIQUE KEY(唯一约束)
DEFAULT(默认约束)
FOREIGN KEY(外键约束)
三、表级约束(对两个及以上的字段起作用)
表级约束只能够在列定义之后使用
四、列级约束(对一个字段起作用)
列级约束既可以在列定义之前使用,也可也在列定义之后使用。
NOT NULL和DEFAULT只存在列级约束,不存在表级约束。
PRIMARY KEY,UNIQUE KEY, FOREIGN KEY既有表级约束也存在列级约束
五、外键约束
1、保持数据的一致性和完整性
2、可以描述一对一,一对多的关系
3、使用外键约束的几个要求:
a、父表和子表使用相同的存储引擎,并且不能够使用临时表;
b、数据表的存储引擎只能是INNODB,;
c、外键列和参照列必须具有相似的数据类型,其中数字的长度和是否有符号必须相同,要是字符的话,长度可以不一样
d、外键列和参照列必须创建索引,如果外键列不存在索引的话,mysql会自动帮其创建索引,而参照列不会自动的创建索引;
4、SHOW INDEXES FROM tb_name\G;表示展示一张表的索引,并且以网格的形式表示;
5、有外键的时候,必须先在父表里面插入记录,然后才能够在字表里面插入记录;
6、外键约束的参照操作:
a、CASCADE:在父表删除更新操作的时候,子表也会做相对应的操作。
FOREIGN KEY (pid) REFERENCES provice (id) ON DELETE CASCADE
b、SET NULL在父表删除更新行,并设置子表外键为NULL;此时必须要保证子表列为NOT NULL;
c、RESTRICT:拒绝从父表对数据进行更新删除操作
d、NOT ACTION,SQL关键字,在MYSQL里面与RESTRICT一样;
7、当有外键约束的时候,此时不能够直接删除父表,在子表记录没有删除的情况之下;插入数据与删除数据的顺序是相反的,先在父表里面查入数据,然后在字表里面插入数据;
8、一般情况之下,不会建立物理外键约束,而是创建一个逻辑外键,因为物理外键,只能够在INNODB引擎之下才能够使用,而在另外一种存储引擎MYISA引擎之下不能够使用,只是创建一种逻辑上的关系,使两张表看起来有外键的存在。
六、数据表的添加
1、添加一列
ALTER TABLE db_name ADD col_name defined;
ALTER TABLE person1 ADD age TINYINT USIGNED NOT NULL DEFAULT “10”;
2、添加多列
不能够指明具体的位置
3、添加键
ALTER TABLE p1 ADD col_name TINYINT UNSIGNED PRIMARY KEY;//添加主键约束
ALTER TABLE p1 ADD col_name TINYINT UNSIGNED UNIQUE KEY;//添加唯一约束
ALTER TABLE p1 ADD FORENGN KEY (col_name) REFERENCES user2 (col_name);//添加外键约束
ALTER TABLE p1 ALTER col_name SET DEFAULT 10;//修改默认约束
七、数据表的删除
1、删除列:ALTER TABLE db_name DROP col_name;
2、删除主键约束、唯一约束、外键约束
ALTER TABLE p1 DROP PRIMARY KEY;//删除主键
ALTER TABLE p1 DROP FOREIGN KEY foreign_name;//删除外键
ALTER TABLE p1 DROP INDEX index_name;//删除唯一约束
可以同时删除两列数据 ALTER TABLE db_name DROP col_name01,DROP col_name02;
八、数据表的修改
1、修改列定义
ALTER TABLE p1 MODIFY col_name col_defined;
2、修改列名称
ALTER TABLE p1 CHANGE old_col_name new_col_name defined;
3、数据表的更名
ALTER TABLE p1 RENAME newNAME;
RENAME TABLE oldname TO newName;
MySQL学习笔记(四)
最新推荐文章于 2025-08-07 06:48:10 发布