精华内容
下载资源
问答
  • mysql创建外键语句

    千次阅读 2019-07-08 14:46:00
    alter table t_book add constraint `fk` foreign key (`bookTypeId`) references t_booktype(`id`);或者在创表时直接加上 CREATE TABLE t_book(id int primary key auto_increment,bookName varchar(20),author ...
    alter table t_book add constraint `fk` foreign key (`bookTypeId`) references t_booktype(`id`);
    或者在创表时直接加上

    CREATE TABLE t_book(
    id int primary key auto_increment,
    bookName varchar(20),
    author varchar(10),
    price decimal(6,2),
    bookTypeId int,
    constraint `fk` foreign key (`bookTypeId`) references `t_bookType`(`id`)
    );

    转载于:https://www.cnblogs.com/bupt-liqi/p/11151126.html

    展开全文
  • mysql添加外键语句

    千次阅读 2020-03-04 09:46:09
    sql语句格式: 1.添加外键约束:altertable从表addconstraint外键(形如:FK_从表_主表)foreignkey(从表外键字段)references主表(主键字段); 如:alter table t_book add constraint `fk` foreign key (`...

    sql语句格式:

    1. 添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key (从表外键字段) references 主表(主键字段);

    如:alter table t_book add constraint `fk` foreign key (`bookTypeId`) references t_booktype(`id`);
    或者在创表时直接加上
    CREATE TABLE t_book(
        id int primary key auto_increment,
        bookName varchar(20),
        author varchar(10),
        price decimal(6,2),
        bookTypeId int,
        constraint `fk` foreign key (`bookTypeId`) references `t_bookType`(`id`)
    );

    2、新增列

    ALTER TABLE `trn_comment_msg`

    ADD COLUMN `content` VARCHAR(1000) NOT NULL COMMENT '消息内容' AFTER `createUserId`,

    ADD COLUMN `courseName` VARCHAR(20) NOT NULL COMMENT '课程名称' AFTER `content`;

    3、历史数据迁移

    -- trn_course_comment历史数据迁移
    update trn_comment_msg tcm
    inner join trn_course_comment tcc on tcm.comId=tcc.comId
    inner join trn_course tc on tc.courseId=tcc.courseId
    set tcm.content=tcc.content,tcm.courseName=tc.courseName
    展开全文
  • MySQL创建外键约束语句

    千次阅读 2019-10-28 11:37:51
    create table teacher ( id int ...constraint fk_teacher 是给外键约束创建个名称 foreign key (tid) 是外键表student对应外键tid列 references teacher(id) 是主键表teacher对应的主键列id
    create table teacher(
    id int(10) primary key auto_increment comment '教师表主键',
    name varchar(50) not null comment '教师姓名'
    );
    
    create table student(
    id int(10) primary key auto_increment comment '学生表主键',
    name varchar(50) not null comment '学生姓名',
    age int(10) not null comment '学生年龄',
    tid int(10) comment '教师表主键(外键)',
    constraint fk_teacher foreign key (tid) references teacher(id)
    );
    

    teacher 是主键表
    student 是外键表
    primary key 是设置主键
    auto_increment 自增
    comment 注释
    constraint fk_teacher 是给外键约束创建个名称
    foreign key (tid) 是外键表student对应外键tid列
    references teacher(id) 是主键表teacher对应的主键列id

    展开全文
  • ps:下面看下MySQL无法创建外键、查询外键的属性 MyISAM 和InnoDB 讲解  InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理...
  • 【转】mysql创建外键sql语句

    千次阅读 2012-10-18 15:00:00
    MySQL中,外键约束是被立即检查的,所以NO ACTION和RESTRICT是同样的)。 · SET DEFAULT: 这个动作被解析程序识别,但InnoDB拒绝包含ON DELETE SET DEFAULT或ON UPDATE SET DEFAULT子句的表定义。 转载于:...

    定义数据表

    假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。用来保存整机产品信息的表叫做 pc;用来保存配件供货信息的表叫做 parts。

    在 pc 表中有一个字段,用来描述这款电脑所使用的CPU型号;

    在 parts 表中相应有一个字段,描述的正是CPU的型号,我们可以把它想成是全部CPU的型号列表。

    很显然,这个厂家生产的电脑,其使用的 cpu 一定是供货信息表(parts)中存在的型号。这时,两个表中就存在一种约束关系(constraint)—— pc 表中的 cpu 型号受到 parts 表中型号的约束。

    首先我们来创建 parts 表:

    CREATE TABLE parts (
    ... 字段定义 ...,
    model VARCHAR(20) NOT NULL,
    ... 字段定义 ...
    );

    接下来是 pc 表:

    CREATE TABLE pc (
    ... 字段定义 ...,
    cpumodel VARCHAR(20) NOT NULL,
    ... 字段定义 ...
    };

    设置索引

    若要设置外键,在参照表 (referencing table,即pc表) 和被参照表 (referenced table,即parts表) 中,相对应的两个字段必须都设置索引 (index)。

    对parts表:

    ALTER TABLE parts ADD INDEX idx_model (model);
    这句话的意思是,为 parts 表增加一个索引,索引建立在 model 字段上,给这个索引起个名字叫idx_model。

    对pc表也类似:

    ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);

    事实上这两个索引可以在创建表的时候就设置。这里只是为了突出其必要性。

    定义外键

    下面为两张表之间建立前面所述的那种“约束”。因为pc的CPU型号必须参照parts表中的相应型号,所以我们将pc表的cpumodel字段设置为“外键”(FOREIGN KEY),即这个键的参照值来自于其他表。

    ALTER TABLE pc ADD CONSTRAINT fk_cpu_model 
    FOREIGN KEY (cpumodel) 
    REFERENCES parts(model);

    第一行是说要为pc表设置外键,给这个外键起一个名字叫做fk_cpu_model;第二行是说将本表的cpumodel字段设置为外键;第三行是说这个外键受到的约束来自于parts表的model字段。

    这样,我们的外键就搞好了!如果我们试着CREATE一台pc,它所使用的 cpu 的型号是 parts 表中不存在的,那么 MySQL 会禁止这台 PC 被 CREATE 出来。

    级联操作

    一切看起来都挺好的,不是吗?

    考虑以下这种情况:

    技术人员发现,一个月之前输入到 parts 表中的某个系列的 cpu (可能有很多款)的型号全都输错了一个字母,现在需要改正。我们希望的是,当 parts 表中那些 Referenced Column 有所变化时,相应表中的 Referencing Column 也能自动更正。

    可以在定义外键的时候,在最后加入这样的关键字:

    ON UPDATE CASCADE; 即在主表更新时,子表(们)产生连锁更新动作,似乎有些人喜欢把这个叫“级联”操作。:)

    如果把这语句完整的写出来,就是:

    ALTER TABLE pc ADD CONSTRAINT fk_cpu_model 
    FOREIGN KEY (cpumodel) 
    REFERENCES parts(model)
    ON UPDATE CASCADE;

    除了 CASCADE 外,还有 RESTRICT(禁止主表变更)、SET NULL(子表相应字段设置为空)等操作。

     

    InnoDB拒绝任何试着在子表创建一个外键值而不匹配在父表中的候选键值的INSERT或UPDATE操作。一个父表有一些匹配的行的子表,InnoDB对任何试图更新或删除该父表中候选键值的UPDATE或DELETE操作有所动作,这个动作取决于用FOREIGN KEY子句的ON UPDATE和ON DETETE子句指定的referential action。当用户试图从一个父表删除或更新一行之时,且在子表中有一个或多个匹配的行,InnoDB根据要采取的动作有五个选择:

    · CASCADE: 从父表删除或更新且自动删除或更新子表中匹配的行。ON DELETE CASCADE和ON UPDATE CASCADE都可用。在两个表之间,你不应定义若干在父表或子表中的同一列采取动作的ON UPDATE CASCADE子句。

    · SET NULL: 从父表删除或更新行,并设置子表中的外键列为NULL。如果外键列没有指定NOT NULL限定词,这就是唯一合法的。ON DELETE SET NULL和ON UPDATE SET NULL子句被支持。

    · NO ACTION: 在ANSI SQL-92标准中,NO ACTION意味这不采取动作,就是如果有一个相关的外键值在被参考的表里,删除或更新主要键值的企图不被允许进行(Gruber, 掌握SQL, 2000:181)。 InnoDB拒绝对父表的删除或更新操作。

    · RESTRICT: 拒绝对父表的删除或更新操作。NO ACTION和RESTRICT都一样,删除ON DELETE或ON UPDATE子句。(一些数据库系统有延期检查,并且NO ACTION是一个延期检查。在MySQL中,外键约束是被立即检查的,所以NO ACTION和RESTRICT是同样的)。

    · SET DEFAULT: 这个动作被解析程序识别,但InnoDB拒绝包含ON DELETE SET DEFAULT或ON UPDATE SET DEFAULT子句的表定义。

    转载于:https://www.cnblogs.com/lijc1990/archive/2012/10/18/2729515.html

    展开全文
  • mysql_查询外键语句

    千次阅读 2018-09-27 20:31:12
    查询外键语句 SELECT * FROM information_schema.KEY_COLUMN_USAGE where constraint_name='FK_t_category_id 其中 name 为具体的外键名称
  • MySQL 语句外键 连接

    千次阅读 2019-02-27 14:26:46
    外键 定义: 外键是指引用另一个表中的一列或多列,被引用的列具有主键约束或唯一约束。 目的: 外键用于建立和加强两个...在MySql中只有 InooDB 类型的表才支持外键。 (2)定义外键名时,不能加引号。 如 constrai...
  • 创建外键语法 ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ; 3.使用组合主键 如果一列不能唯一区分一...
  • MySQL创建外键关联报错1005

    千次阅读 2018-09-28 17:31:03
    主要原因有 ...附上建立索引以及外键语句(参考) ALTER TABLE country add INDEX index_name(emp_id) ALTER TABLE emp add INDEX index_name(c_id) ALTER TABLE emp ADD CONSTRAINT fk_em...
  • 一、SQL语句创建数据表并设置主外键关系 create table demo.ChineseCharInfo ( ID int not null auto_increment, Hanzi varchar(10) not null, primary key (ID) ) engine=innodb auto_increment=
  • 创建主表: 班级 CREATE TABLE class(cid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(15) NOT NULL) 第一种://1.在属性值后面直接添加 CREATE TABLE student(sid INT AUTO_INCREMENT, sname VARCHAR(10) NOT ...
  • MySQL 创建外键却显示的索引问题

    千次阅读 2019-04-26 13:45:14
    建立外键需要注意几点: 1,必须使用innodb表引擎 2,两个表的字符编码必须一致 3,被引用的typeid,即父表中的typeid必须是主键或者唯一建 第一次见表的时候创建外键,却创建了另外两个表的主键的索引 ...
  • mysql语句声明外键

    千次阅读 2018-11-16 11:20:04
    在Navicat 中进行mysql语句操作 示例 1 创建一张员工表: CREATE TABLE employ(id INT PRIMARY KEY,ename VARCHAR(20),deptId INT); 2 插入员工数据: INSERT INTO employ VALUES(1,'李四','软件开发部'); ...
  • 主要介绍了MySQL使用外键实现级联删除与更新的方法,详细分析了mysql数据库与表的创建、数据插入、查询以及外链的使用与级联操作相关技巧,需要的朋友可以参考下
  • mysql创建外键不起作用

    千次阅读 2017-07-05 14:33:45
    今天在mysql手动创建外键的时候,创建了好几次都失败,语法和方式方法都没问题。然后进去点开选项,居然是MyISAM 然后改为InnoDB,再次创建成功 众所周知MyISAM是不支持事务的,而InnoDB支持事务,MyISAM强调的...
  • mysql添加外键的4种方式

    万次阅读 多人点赞 2019-03-18 16:19:48
    今天开始复习,在过后的几天里开始在博客上...创建主表:班级 CREATE TABLE class(cid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(15) NOT NULL) INSERT INTOclassVALUES(NULL,'六年级一班') INSERT INTO cla...
  • mysql创建外键(Foreign Key)方法

    千次阅读 2015-08-31 14:04:32
    MySQL中,InnoDB引擎类型的表支持了外键约束,MyISAM类型暂时不支持外键。 建立外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;此外,联合...
  • 删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心。但是在开发过程中,发现Schema设计的有问题而且要删除现有的数据库中所有的表来重新创建也是常有的事情;另外在测试的时候,也有需要重新创建数据库...
  • 外键保证数据的完整性和一致性,被参照的表是主表,外键所在字段的表是子表,依赖于数据库中已存在的表的主键。外键的作用是建立子表与父表的关联关系,...3.外键列和参照列必须创建索引,如果外键列不存在索引,mys...
  • Mysql创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,查看大神的总结后列出了以下几种常见原因。 1. 两个字段的类型或者大小不严格匹配。例如,如果一个是int(10),那么外键也...
  • 最近在玩数据库的时候,偶尔会有外键创建不成功的时候,于是上网查阅资料,整合自己的理解有了以下这篇文章:mysql创建外键不成功的原因以及处理方法:第一种:外键的字段与关联的字段的类型不匹配(包括编码格式的...
  • 当我保存时提示错误“cannot add foreign key constraint”,不能成功创建外键约束。从网上搜了很多,主要有一下几种情况吧: 1)要关联的字段类型或长度不一致。 2)两个要关联的表编码不一样。 3)某个表已经有...
  • mysql数据库中主外键的设置语句

    千次阅读 2019-07-04 10:09:52
    create table tableName( k1 int auto_increment, k2 varchar(50) not null, k3… primary key(k1), foreign key(kn) reference otherTable(ok) ...//此表中外键kn参照主键表otherTable的主键ok ...
  • mysql 创建外键失败 150

    2020-03-12 12:05:20
    mysql创建外键报150错误的处理方法 这几天由于在赶项目进度,也就没有及时记录下自己的学习情况 ,在完成项目的这段时间里,碰到了很多问题,在解决问题的过程中学习了不少技巧。 这里就主要介绍一下在mysql数据库...
  • MySQL8.0-外键约束

    2021-08-13 13:18:05
    1、创建订单表(ordes) 订单表(orders) orders(id,customerId,saleId,orderDate,notes) orders表数据 订单ID 客户ID 销售员ID 订单日期 备注 10001 1 3 2015-05-15 10002 2 2 2015-05-16 10003 3 2...
  • mysql外键约束的语句

    万次阅读 2018-06-02 10:48:51
    alter table + 表名1 add constraint + 外键名字 + foreign key(列名) references 表名2()
  • mysql创建外键时遇到的错误

    千次阅读 2017-09-02 14:41:39
    mysql创建外键时,遇到这样一个错误。 mysql添加外键失败:sql 1452 Cannot add or update a child row:a foreign key constraint fails 详细信息: Cannot add or update a child row: a foreign key ...
  • 2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,...
  • mysql 设置外键关联sql语句

    千次阅读 2013-06-01 10:38:56
    CREATE TABLE IF NOT EXISTS `book_info` (  `id` bigint(20) NOT NULL AUTO_INCREMENT, ...首先定义一个外键 KEY `FK_BOOK_INFO_1` (`coupon_group_id`),然后再用alert语句改变!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,411
精华内容 31,364
关键字:

mysql创建外键语句

mysql 订阅