MySQL外键约束常见操作方法示例

本文实例叙述了MySQL外键约束附近操作方法。分享给大家供我们参谋,具体如下:

NOT NULL:非空,该字段的值必填

表构成

  1. 查阅数据库表创造的sql语句

    show create table vip

  2. 翻开外键的自律名

    CREATE TABLE vip ( id int(11) NOT NULL AUTO_INCREMENT, address varchar(255) DEFAULT NULL, code varchar(255) DEFAULT NULL, mobile varchar(255) DEFAULT NULL, name varchar(255) DEFAULT NULL, score int(11) DEFAULT NULL, id_code varchar(255) DEFAULT NULL, user_id int(11) DEFAULT NULL, PRIMARY KEY (id), KEY FK1C81D1738DA76 (user_id), CONSTRAINT FK1C81D1738DA76 FOREIGN KEY (user_id) REFERENCES user (id)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

  3. 消逝外键限定

    alter table vip drop foreign key FK1C81D1738DA76

  4. 去除却键

    alter table vip drop user_id

  5. 增添外键约束

    ALTER TABLE tfeedbackmessageADD CONSTRAINT FK_i1q2cf5pxfr8r69cfci3yyari FOREIGN KEY (HANDLERID) REFERENCES toperationuser (FID) ON DELETE CASCADE ON UPDATE RESTRICT;

UNIQUE:唯后生可畏,该字段的值不得重复

mysql> show tables;

科学普及操作小结:

DEFAULT:默许,该字段的值不用手动插入有暗许值

+———————-+
| Tables_in_WebComplie |
+———————-+
| Compile |

查看表的字段音讯:desc 表名;

P奥迪Q7IMA奥迪Q5Y KEY:主键,该字段的值不得重复而且非空 unique+not null

| Content |
| User      |
+———————-+

查看表的有所新闻:show create table 表名;

FOREIGN KEY:外键,该字段的值援引了其它的表的字段

 

丰富主键约束:alter table 表名 add constraint 主键 primary key
表名(主键字段State of Qatar;

1、区别:

Compile表结构

增多外键节制:alter table 从表 add constraint 外键 foreign key
从表(外键字段卡塔尔(قطر‎ references 主表(主键字段卡塔尔;

①、二个表至多有二个主键,但能够有四个唯大器晚成

mysql> show create table Compile;

去除主键限制:alter table 表名 drop primary key;

②、主键不容许为空,唯风流倜傥可感到空

| Compile | CREATE TABLE `Compile` (
`compileID` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(128) NOT NULL,
`boardName` varchar(128) NOT NULL,
`panelName` varchar(128) NOT NULL,
`contentID` int(11) NOT NULL,
`complieDate` datetime NOT NULL,
`binPath` varchar(128) NOT NULL,
`compileState` tinyint(1) NOT NULL,
PRIMARY KEY (`compileID`),
UNIQUE KEY `UQ_Compile_CompileID` (`compileID`),
KEY `ContentID` (`contentID`),
KEY `Compile_Panel_PanelName` (`panelName`),
KEY `Compile_User_UserName` (`userName`),
CONSTRAINT `Compile_User_UserName` FOREIGN KEY (`userName`)
REFERENCES `User` (`userName`),
CONSTRAINT `Compile_ibfk_2` FOREIGN KEY (`contentID`) REFERENCES
`Content` (`contentID`),
CONSTRAINT `Compile_Panel_PanelName` FOREIGN KEY (`panelName`)
REFERENCES `Panel` (`PanelName`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=latin1 |

去除此之外键限定:alter table 表名 drop foreign key 外键;

2、相同点

删除了那个之外键“UserID”:

越多关于MySQL相关内容感兴趣的读者可查看本站专项论题:《MySQL日志操作才干大全》、《MySQL事务操作才能汇总》、《MySQL存款和储蓄进程才干大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大聚集》

都存有唯生机勃勃性

mysql> alter table Compile drop foreign key Compile_User_UserName;
 //注意删除的是外键限定“Compile_User_UserName”,即外键UserID

企望本文所述对大家MySQL数据库计有所扶助。

都帮忙组合键,但不引入

扩充外键:

1、用于约束八个表的涉嫌,从表的字段值援用了主表的某字段值

mysql> alter table Compile add constraint Compile_User_UserName
foreign key(userName) references User(userName);

2、外键列和主表的被援引列供给类型一致,意义雷同,名称无必要

 

3、主表的被引用列供给是二个key

4、插入数据,先插入主表

5、删除数据,先删除从表

能够透过以下三种艺术来删除主表的笔录

#情势少年老成:级联删除

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY REFERENCES
major ON DELETE CASCADE;

#办法二:级联置空

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY REFERENCES
major ON DELETE SET NULL;

create table 表名(

字段名 字段类型 not null,#非空

字段名 字段类型 primary key,#主键

字段名 字段类型 unique,#唯一

字段名 字段类型 default 值,#默认

constraint 约束名 foreign key references 主表

);

注意:

列级节制: 除了外键别的类型都匡助,无法起节制名;

表级限制:除了非空和暗中同意其余种类都扶持,能够起约束名,但对主键无效。

列级节制能够在贰个字段上平添多个,中间用空格隔断,没有各样供给

增多非空

alter table 表名 modify column 字段名 字段类型 not null;

除去非空

alter table 表名 modify column 字段名 字段类型 ;

增加默许

alter table 表名 modify column 字段名 字段类型 default 值;