精华内容
下载资源
问答
  • 满意答案Yvg57996022013.12.21采纳率:57%等级:13已帮助:9441人-- 创建测试主. ID 是主键.CREATE TABLE test_main (id INT,value VARCHAR(10),PRIMARY KEY(id));-- 创建测试子.CREATE TABLE test_sub (id INT,...

    满意答案

    dcebd7a0de6265b6ccae5ead692f1eab.png

    Yvg5799602

    2013.12.21

    dcebd7a0de6265b6ccae5ead692f1eab.png

    采纳率:57%    等级:13

    已帮助:9441人

    -- 创建测试主表. ID 是主键.

    CREATE TABLE test_main (

    id INT,

    value VARCHAR(10),

    PRIMARY KEY(id)

    );

    -- 创建测试子表.

    CREATE TABLE test_sub (

    id INT,

    main_id INT,

    value VARCHAR(10),

    PRIMARY KEY(id)

    );

    默认外键约束方式

    ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main;

    DELETE CASCADE 方式

    -- 创建外键(使用 ON DELETE CASCADE 选项,删除主表的时候,同时删除子表)

    ALTER TABLE test_sub

    ADD CONSTRAINT main_id_cons

    FOREIGN KEY (main_id) REFERENCES test_main ON DELETE CASCADE;

    UPDATE CASCADE方式

    -- 创建外键(使用 ON UPDATE CASCADE 选项,更新主表的主键时候,同时更新子表外键)

    ALTER TABLE test_sub

    ADD CONSTRAINT main_id_cons

    FOREIGN KEY (main_id) REFERENCES test_main ON UPDATE CASCADE;

    SET NULL方式

    -- 创建外键(使用 ON DELETE SET NULL 选项,删除主表的时候,同时将子表的 main_id 设置为 NULL)

    ALTER TABLE test_sub

    ADD CONSTRAINT main_id_cons

    FOREIGN KEY (main_id) REFERENCES test_main ON DELETE SET NULL;

    17分享举报

    展开全文
  • 首先,目前在产品环境可用的MySQL版本(指4.0.x和4.1.x)中,只有InnoDB引擎才允许使用外键,所以,我们的数据必须使用InnoDB引擎。下面,我们先创建以下测试用数据库:CODE:[Copy to clipboard]CREATE TABLE `...

    首先,目前在产品环境可用的MySQL

    版本(指4.0.x

    和4.1.x

    )中,只有InnoDB

    引擎才允许使用外键,所以,我们的数据表必须使用InnoDB

    引擎。

    下面,我们先创建以下测试用数据库表:CODE:[Copy to clipboard]CREATE TABLE `roottb` (

    `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,

    `data` VARCHAR(100) NOT NULL DEFAULT '',

    PRIMARY KEY (`id`)

    ) TYPE=InnoDB;

    CREATE TABLE `subtb` (

    `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,

    `rootid` INT(11) UNSIGNED NOT NULL DEFAULT '0',

    `data` VARCHAR(100) NOT NULL DEFAULT '',

    PRIMARY KEY (`id`),

    INDEX (`rootid`),

    FOREIGN KEY (`rootid`) REFERENCES roottb(`id`) ON DELETE CASCADE

    ) TYPE=InnoDB;

    注意:1

    、必须使用InnoDB

    引擎;2

    、外键必须建立索引(INDEX

    );3

    、外键绑定关系这里使用了“ ON DELETE CASCADE”

    ,意思是如果外键对应数据被删除,将关联数据完全删除,更多信息请参考MySQL

    手册中关于InnoDB

    的文档;

    好,接着我们再来插入测试数据:CODE:[Copy to clipboard]INSERT INTO `roottb` (`id`,`data`)

    VALUES ('1', 'test root line 1'),

    ('2', 'test root line 2'),

    ('3', 'test root line 3');

    INSERT INTO `subtb` (`id`,`rootid`,`data`)

    VALUES ('1', '1', 'test sub line 1 for root 1'),

    ('2', '1', 'test sub line 2 for root 1'),

    ('3', '1', 'test sub line 3 for root 1'),

    ('4', '2', 'test sub line 1 for root 2'),

    ('5', '2', 'test sub line 2 for root 2'),

    ('6', '2', 'test sub line 3 for root 2'),

    ('7', '3', 'test sub line 1 for root 3'),

    ('8', '3', 'test sub line 2 for root 3'),

    ('9', '3', 'test sub line 3 for root 3');

    我们先看一下当前数据表的状态:CODE:[Copy to clipboard]mysql>; show tables;

    +----------------+

    | Tables_in_test |

    +----------------+

    | roottb |

    | subtb |

    +----------------+

    2 rows in set (0.00 sec)

    mysql>; select * from `roottb`;

    +----+------------------+

    | id | data |

    +----+------------------+

    | 1 | test root line 1 |

    | 2 | test root line 2 |

    | 3 | test root line 3 |

    +----+------------------+

    3 rows in set (0.05 sec)

    mysql>; select * from `subtb`;

    +----+--------+----------------------------+

    | id | rootid | data |

    +----+--------+----------------------------+

    | 1 | 1 | test sub line 1 for root 1 |

    | 2 | 1 | test sub line 2 for root 1 |

    | 3 | 1 | test sub line 3 for root 1 |

    | 4 | 2 | test sub line 1 for root 2 |

    | 5 | 2 | test sub line 2 for root 2 |

    | 6 | 2 | test sub line 3 for root 2 |

    | 7 | 3 | test sub line 1 for root 3 |

    | 8 | 3 | test sub line 2 for root 3 |

    | 9 | 3 | test sub line 3 for root 3 |

    +----+--------+----------------------------+

    9 rows in set (0.01 sec)

    嗯,一切都正常,好,下面我们要试验我们的级联删除功能了。

    我们将只删除roottb

    表中id

    为2

    的数据记录,看看subtb

    表中rootid

    为2

    的相关子纪录是否会自动删除:CODE:[Copy to clipboard]mysql>; delete from `roottb` where `id`='2';

    Query OK, 1 row affected (0.03 sec)

    mysql>; select * from `roottb`;

    +----+------------------+

    | id | data |

    +----+------------------+

    | 1 | test root line 1 |

    | 3 | test root line 3 |

    +----+------------------+

    2 rows in set (0.00 sec)

    mysql>; select * from `subtb`;

    +----+--------+----------------------------+

    | id | rootid | data |

    +----+--------+----------------------------+

    | 1 | 1 | test sub line 1 for root 1 |

    | 2 | 1 | test sub line 2 for root 1 |

    | 3 | 1 | test sub line 3 for root 1 |

    | 7 | 3 | test sub line 1 for root 3 |

    | 8 | 3 | test sub line 2 for root 3 |

    | 9 | 3 | test sub line 3 for root 3 |

    +----+--------+----------------------------+

    6 rows in set (0.01 sec)

    嗯,看subtb

    表中对应数据确实自动删除了,测试成功。

    结论:在MySQL

    中利用外键实现级联删除成功!

    展开全文
  • --sql语句创建表的同时添加外键约束CREATE TABLE tb_UserAndRole --用户角色表(ID INT PRIMARY KEY IDENTITY(1,1),UserID INT NOT NULL,--用户IDRoleID INT NOT NULL,--角色IDforeign key(UserID) references tb_...

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    --sql语句创建表的同时添加外键约束

    CREATE TABLE tb_UserAndRole --用户角色表

    (

    ID INT PRIMARY KEY IDENTITY(1,1),

    UserID INT NOT NULL,--用户ID

    RoleID INT NOT NULL,--角色ID

    foreign key(UserID) references tb_Users(ID)--tb_Users表的ID作为tb_UserAndRole表的外键

    )

    --2、添加外键约束(关联字段要用括号括起来)

    -- ALTER TABLE 从表

    -- ADD CONSTRAINT 约束名 FOREIGN KEY (关联字段) references 主表(关联字段);

    --例如:

    ALTER TABLE tb_UserAndRole

    ADD CONSTRAINT FK__tb_UandR_Role FOREIGN KEY (RoleID) references tb_Role(ID);

    展开全文
  • sql语句创建外键关联

    千次阅读 2021-01-29 10:26:47
    sql语句 : USE school; CREATE TABLE student( id INT(10) NOT NULL PRIMARY KEY, NAME VARCHAR(30) DEFAULT NULL, tid INT(10) DEFAULT NULL, KEY `fktid` (`tid`), CONSTRAINT `fktid` FOREIGN KEY(`tid`) ...

    以创建学生教师表为例: 学生 id 关联教师 tid

    学生表: student
    学生表
    教师表: teacher
    在这里插入图片描述

    sql语句 :

    USE school;
    
    CREATE TABLE student(
    id INT(10) NOT NULL PRIMARY KEY,
    NAME VARCHAR(30) DEFAULT NULL,
    tid INT(10) DEFAULT NULL,
    KEY `fktid` (`tid`),
    CONSTRAINT `fktid` FOREIGN KEY(`tid`) REFERENCES `teacher` (`id`)
    )ENGINE=INNODB DEFAULT CHARSET=utf8
    
    INSERT INTO student VALUES(1,'小明',1);
    INSERT INTO student VALUES(2,'小红',1);
    INSERT INTO student VALUES(3,'小刚',1);
    INSERT INTO student VALUES(4,'小王',1);
    INSERT INTO student VALUES(5,'小智',1);
    
    SELECT * FROM student;
    
    CREATE TABLE teacher (
    id INT(10) PRIMARY KEY NOT NULL,
    NAME VARCHAR (30) DEFAULT NULL
    )ENGINE=INNODB DEFAULT CHARSET=utf8
    
    
    INSERT INTO teacher VALUES(1,'陈老师');
    SELECT * FROM teacher;
    

    重点: 外键关联语句,会手写才可以!

    KEY `fktid` (`tid`),
    CONSTRAINT `fktid` FOREIGN KEY(`tid`) REFERENCES `teacher` (`id`)
    
    展开全文
  • 展开全部1、创建主键,test_class,并建立class_id字段为主键;create table test_class(class_id number, class_name varchar2(20));-- Create/Recreate indexesalter table TEST_CLASSadd constraint P_CLASS_ID...
  • 创建数据时设置外键约束4. 删除外键约束5. 小结 外键SQL语句的编写 学习目标 能够写出删除外键约束的SQL语句 1. 外键约束作用 外键约束:对外键字段的值进行更新和插入时会和引用中字段的数据进行验证,...
  • sql设置外键(设置外键sql语句)2020-07-24 11:44:03共8个回答sql怎么设置外键创建数据库时就是有主键的创建了主键,但是之间的关系没有联系,要建数据库关系图只有主键没有外键时不行的。建外键的前提是此外键...
  • 创建外键表sql语句

    千次阅读 2012-09-12 10:48:43
    create table tablename ( id int(11) not null, name varchar(256) not null, school_id int(11) not null, primary key(id), foreign key(school_id) references school(id) ...其中school为表名
  • sql创建外键

    千次阅读 2015-09-15 08:39:59
    创建外键约束有两种情形,一是在建立的时候就创建,另...通过SQL语句创建外键表 create table UserInfo( UserID int identity(1,1) primary key, --递增主键 UserAccounts varchar(20), UserName varchar(20), U
  • Sql Server创建外键失败

    2019-10-05 07:27:34
    已成功保存“PPR_BasicInformation”“PPR_PS”- 无法创建关系“FK_PPR_PS_PPR_BasicInformation”。 ALTER TABLE 语句与 FOREIGN KEY 约束"FK_PPR_PS_PPR_BasicInformation"冲突。该冲突发生于数据库"Test",...
  • 本文示例使用Birt自带的Sample数据源,用到的数据基于图1所示的实体...其中customers的customernumber字段作为外键出现在orders中,而orders的ordernumber字段做为外键出现在orderdetails中。 create TABLE...
  • sql语句创建表的同时添加外键约束

    千次阅读 2020-11-22 21:13:00
    sql语句创建表的同时添加外键约束 建立一个商店的数据库store,记录顾客及其购物情况,由下面三个表组成: 商品(商品号,商品名,单价,商品类别,供应商); 顾客(顾客号,姓名,住址); 订单(顾客号,商品...
  • mysql 创建 sql语句 带主键和外键

    万次阅读 2010-08-26 11:01:00
    本文示例使用 Birt ...其中 customers 的 customernumber 字段作为外键出现在 orders 中,而 orders 的 ordernumber 字段做为外键出现在 orderdetails 中。 <br />create TABLE Customers(custome
  • 定义数据假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。用来保存整机产品信息的叫做 pc;用来保存配件供货信息的叫做 parts。在 pc 中有一个字段,用来描述这款电脑所使用的CPU型号;在 ...
  • 根据情况需要将创建外键表的sql语句生成在创建表sql语句中,如下设置: 转载于:https://www.cnblogs.com/abel-he/p/8301548.html
  • 外键 ...为了演示外键创建一个学生分数studentscore 的从. mysql> CREATE table studentscore(id int unsigned primary key auto_increment,course varchar(20),score char(255),stud...
  • SQL的主键和外键的作用 SQL的主键和外键约束   SQL的主键和外键的作用:  外键取值规则:空值或参照的主键值。 (1)插入非空值时,如果主键中没有这个值,则不能插入。 (2)更新时,不能改为主键中...
  • mysql 之 sql 语句 之 多表外键

    千次阅读 2017-11-21 22:32:20
    我们通过主的主键和从外键描述主外建的关系,呈现就是一对多的关系。 例如: 1.创建一个主(动物) 设置(Aid)为主键 create table Animal( Aid int(32) primary key auto_increment, Aname varchar(32) ); 2...
  • 定义数据假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。用来保存整机产品信息的叫做 pc;用来保存配件供货信息的叫做 parts。在 pc 中有一个字段,用来描述这款电脑所使用的CPU型号;在 ...
  • 或者/**/2、创建数据库create database 数据库名称(不允许以数字开头,不允许以符号开头,不要起汉语名字)3、如何选中这个数据库use 数据库名4、创建表 - 创建字段 - 主键约束、唯一约束create table 表名( 列名 ...
  • SQL 创建表是通过SQL CREATE TABLE 语句来实现,该语句是DDLSQL语句。CREATE TABLE语句用于创建用于存储数据的表。在创建表时,可以为列定义主键、惟一键和外键等完整性约束。完整性约束可以在列级或表级定义。对于...
  • 1. 创建表的同时添加外键 create table score( score int(3), st_id int(16), cs_id int(16), primary key(st_id,cs_id), FOREIGN KEY (st_id) REFERENCES student(id), FOREIGN KEY (cs_id) REFERENCES classes(id)...
  • 建立外键约束可以对sql语句的增删改有约束作用。外键取值规则:空值或参照的主键值。(1)插入非空值时,如果主键表中没有这个值,则不能插入。...举例如下:创建表并插入语句CREATE TABLE t_group(id INT PRIM...
  • 外键SQL语句的编写

    2021-03-26 13:12:21
    1. 外键约束作用 外键约束:对外键字段的值进行更新和插入时会和引用中字段的数据进行验证,数据如果不合法则更新和插入会...3. 在创建数据时设置外键约束 -- 创建学校 create table school( id int not ..
  • 数据库中外键SQL语句的编写 1. 外键约束作用 外键约束:对外键字段的值进行更新和插入时会和引用中字段的数据进行验证,数据如果不合法则更新和插入会失败,保证数据的有效性 2. 对于已经存在的字段添加外键约束...
  • 创建数据库 1 USE master; 2 GO 3 --日记数据库 4 create database DiaryBase 5 on 6 ( 7 name=DiaryBase_Dat,--逻辑名称 8 FILENAME='c:\DiaryBase.log', 9 size=10MB, 10 maxsize=5...
  • 简单的创建数据库的 SQL语句: use master go if exists(select * from sysdatabases where name='Test') begin select '该数据库已存在' drop database Test --如果该数据库已经存在,那么就删除它 end else ...
  • 为mysql数据建立主外键需要注意以下几点:需要建立主外键关系的两个的存储引擎必须是InnoDB。外键列和参照列必须...一、SQL语句创建数据并设置主外键关系create table demo.ChineseCharInfo(ID int not nul...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 743
精华内容 297
关键字:

sql创建表外键语句