MySQL约束及修改数据表


一,约束以及修改数据表


约束的作用?1.约束保证数据的完整性、一致性;2.约束分为表级约束、列级约束;3.约束类型包括:NOT NULL(非空约束)、PRIMARY KEY(主键约束)、UNIQUE KEY(唯一约束)、DEFAULT(默认约束)、FOREIGN KEY(外键约束);


列级约束:只针对某一个字段;表级约束:针对两个或两个以上的字段;


1.外键约束的要求解析


外键约束作用:1.保持数据一致性、完整性;2.实现一对一或一对多关系;(这是也把MySQL称之为“关系型”数据库的一个根本性原因)


外键约束的要求:1.MySQL约束及修改数据表;2.MySQL约束及修改数据表;3.


MySQL约束及修改数据表MySQL约束及修改数据表;4.外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将自动创建索引;


子表:具有外键列的表;父表:字表所参照的表;外键列:加过外键关键词的列;参照列:外键列所参照的列;


查看数据表的属性命令:SHOW CREATE TABLE tb_name,从下图中可以看到,数据表provinces的存储引擎为:InnoDB


MySQL约束及修改数据表


下图展示子表(users)、父表(provinces)具体的创建过程,其中子表中的pid为外键列,父表中的id为参照列,英文reference的意思为“参照”


MySQL约束及修改数据表 MySQL约束及修改数据表


查看数据表的索引命令:SHOW INDEXES FROM tb_name,命令结尾加‘G’,可以将命令执行结果以网格的形式展示,从下图中可以看到,id字段上已经创建了索引,这是因为创建主键的时候会自动创建索引而子表users中存在两个索引,pid字段上存在索引这也证明了‘‘如果外键列不存在索引的话,MySQL将自动创建索引”MySQL约束及修改数据表  MySQL约束及修改数据表 MySQL约束及修改数据表


2.外键约束的参照操作


MySQL约束及修改数据表MySQL约束及修改数据表MySQL约束及修改数据表MySQL约束及修改数据表MySQL约束及修改数据表


注意:插入记录时,必须先在父表中插入记录,才能在子表中插入记录


MySQL约束及修改数据表 MySQL约束及修改数据表


MySQL约束及修改数据表 MySQL约束及修改数据表 MySQL约束及修改数据表


删除记录命令:DELETE FROM tb_name WHERE 【字段名】=【字段值】,从上图中可以看出,创建子表users1时在字段“pid”中加入关键字“ON DELETE CASCADE”;从父表中的“id”字段删除'3',子表users1中的“pid”字段值为‘3’的记录自动被删除;


注意:关于外键约束,在实际的开发过程中,很少使用“物理”的外键约束,一般都使用“逻辑”的外键约束,因为“物理”的外键约束只有InnoDB一种存储引擎支持,Mysiam引擎则不支持;反过来说,如果想创建的数据表的存储引擎为Mysiam,是不可能使用外键约束的,所以说在实际的开发过程中,不去定义“物理”的外键约束,所谓的“逻辑”外键指的就是:在定义两张表的结构的时候,按照存在着某种结构的方式去定义,但是不去使用“FOREIGN KEY”。


3.表级约束与列级约束


表级约束:对一个数据列建立的约束;列级约束:对多个数据列建立的约束;在实际开发中,列级约束用的较多。


列级约束既可以在列定义时声明,也可以在列定义后声明;表级约束只能在列定义后声明


注意:主键约束、唯一约束、外键约束可以存在表级约束和列级约束,DEFAULT约束、NOT NULL约束只能存在列级约束。


4.修改数据表--添加/删除列


4.1,添加单列命令:MySQL约束及修改数据表 MySQL约束及修改数据表;其中,如果不使用【FIRST|AFTER col_name】,新添加的列默认在列表中的最下面;使用FIRST,新添加的列默认在列表中的最上面;使用AFTER col_name,添加在某一列之后。


MySQL约束及修改数据表 MySQL约束及修改数据表


4.2,添加多列命令:MySQL约束及修改数据表MySQL约束及修改数据表 添加的多列只能添加到列表中的最下面


4.3,删除列命令:MySQL约束及修改数据表,也可以一次命令删除多列:ALTER TABLE tbl_name DROP col_name,DROP col_name在删除列的同时再新增列也是可以的,命令中用','隔开,如:ALTER TABLE tbl_name DROP col_nameADD col_name col_definition;


MySQL约束及修改数据表


5.修改数据表--添加约束


5.1,添加主键约束: MySQL约束及修改数据表MySQL约束及修改数据表


MySQL约束及修改数据表 MySQL约束及修改数据表 MySQL约束及修改数据表


5.2,添加唯一约束:MySQL约束及修改数据表MySQL约束及修改数据表MySQL约束及修改数据表


MySQL约束及修改数据表 MySQL约束及修改数据表          MySQL约束及修改数据表


MySQL约束及修改数据表 MySQL约束及修改数据表 MySQL约束及修改数据表


5.3,添加外键约束:MySQL约束及修改数据表MySQL约束及修改数据表MySQL约束及修改数据表


5.4,添加/删除默认约束: MySQL约束及修改数据表MySQL约束及修改数据表


MySQL约束及修改数据表 MySQL约束及修改数据表 MySQL约束及修改数据表


6.修改数据表--删除约束


6.1,删除主键约束:MySQL约束及修改数据表,因为任何一张数据表只有一个主键,所以不需要指定主键的名称


6.2,删除唯一约束:MySQL约束及修改数据表,index_name:索引名


查看索引名命令:SHOW INDEX FROM tbl_nameG;


6.3,删除外键约束:MySQL约束及修改数据表


查看外键约束名称可用命令:SHOW CREATE TABLE tbl_name;


MySQL约束及修改数据表


7.修改数据表--修改列定义和更名数据表


7.1,修改列定义:MySQL约束及修改数据表MySQL约束及修改数据表


MySQL约束及修改数据表


MySQL约束及修改数据表


7.2,修改列名称:MySQL约束及修改数据表MySQL约束及修改数据表


CHANGE关键字既可以修改列名称,也可以修改列定义,所以CHANGE比MODIFY更常用;


MySQL约束及修改数据表


7.3,数据表更名:MySQL约束及修改数据表MySQL约束及修改数据表


注音:尽量少使用数据列、数据表的更名,因为表名或列名曾经被引用的情况下,可能会导致某些视图或存储过程无法工作的情况;


知识点汇总


MySQL约束及修改数据表



0 个评论

要回复文章请先登录注册