精华内容
下载资源
问答
  • MySQL主外键设置

    2021-12-02 17:27:30
    Q:主外键的关系 pr:ALTER TABLE tb_UserAndRole ADD CONSTRAINT FK__tb_UandR_Role FOREIGN KEY (RoleID) references tb_Role(ID); pr:alert外键名,foreign key(外键字段)reference主表(主键名) pr:本表...

    Q:主外键的关系

    pr:ALTER TABLE tb_UserAndRole ADD CONSTRAINT FK__tb_UandR_Role FOREIGN KEY (RoleID) references tb_Role(ID);

    pr:alert外键名,foreign key(外键字段)reference主表(主键名)

    pr:本表作为外键插入到主表的主键上。

    pr:主外键起到限制两表的作用。外键表不能插入没在主键表信息中的信息,不能更新没在表中的信息。对于主键表,更新或删除主键信息时,如果设置了级联删除那会跟着删除外键表,如果设置no action则删除不了有外键信息的主键表信息。

    pr:如果设置了外键,就不能再插入不在主键表里的信息。不能乱插数据了。

    pr:对于数据的稳定性很有帮助,人事系统中几乎所有的表都会和主表A00作关联,所有的数据也都是由主表所来,受到主表的限制。不加外键,这个表的信息不确定性太大了,可以任意插数据。

    pr:设置了主键,主键是唯一的,则插入数据时不用再判断是否有相同的数据。

    pr:设置了级联删除的外键,则删除主键信息时,外键表相关联的数据也会被删除。

    pr:#比$作用大,#可以放置SQL注入。

    展开全文
  • MySQL-主外键设置

    2021-01-18 18:38:49
    #创建学生表CREATE TABLE student(sno VARCHAR(20) NOT NULL COMMENT’学号’,sname VARCHAR(20) NOT NULL COMMENT’学生姓名’,ssex VARCHAR(20) NOT NULL COMMENT ‘学生性别’,sbirthday DATETIME COMMENT’学生...

    #创建学生表

    CREATE TABLE student(

    sno VARCHAR(20) NOT NULL COMMENT’学号’,

    sname VARCHAR(20) NOT NULL COMMENT’学生姓名’,

    ssex VARCHAR(20) NOT NULL COMMENT ‘学生性别’,

    sbirthday DATETIME COMMENT’学生出生年月’,

    class VARCHAR(20) COMMENT’学生所在班级’,

    CONSTRAINT pk_student PRIMARY KEY (sno)

    )

    #查看表内容

    SELECT*FROM student;   //select sno,sname,ssex,sbirthday,class from student;

    #创建课程表

    CREATE TABLE course(

    cno VARCHAR(20) PRIMARY KEY NOT NULL COMMENT ‘课程号’,

    cname VARCHAR(20) NOT NULL COMMENT ‘课程名称’,

    tno VARCHAR(20) NOT NULL COMMENT ‘教工编号’,

    FOREIGN KEY (tno) REFERENCES teacher(tno)

    )

    #创建成绩表

    CREATE TABLE score(

    sno VARCHAR(20) NOT NULL COMMENT ‘学号’,

    cno VARCHAR(20) NOT NULL COMMENT ‘课程号’,

    degree DECIMAL(4,2) COMMENT ‘成绩’,

    FOREIGN KEY (sno) REFERENCES student(sno),

    FOREIGN KEY (cno) REFERENCES course(cno)

    )

    #创建教师表

    CREATE TABLE teacher(

    tno VARCHAR(20) PRIMARY KEY NOT NULL COMMENT ‘教工编号’,

    tname VARCHAR(20) NOT NULL COMMENT ‘教师姓名’,

    tsex VARCHAR(20) NOT NULL COMMENT ‘教工性别’,

    tbirthay DATETIME COMMENT ‘教工出生年月’,

    Prof VARCHAR(20) COMMENT ‘职称’,

    depart VARCHAR(20) NOT NULL COMMENT ‘教工所在部门’

    )

    #添加学生信息 (多个输入插入也可以用逗号分隔)

    insert into student VALUES(‘108’,‘曾华’,‘男’,‘1977-09-01’,‘95033’);

    insert into student VALUES(‘105’,‘匡明’,‘男’,‘1975-10-02’,‘95031’);

    insert into student VALUES(‘107’,‘王丽’,‘女’,‘1976-01-23’,‘95033’);

    insert into student VALUES(‘101’,‘李军’,‘男’,‘1976-02-20’,‘95033’);

    insert into student VALUES(‘109’,‘王芳’,‘女’,‘1975-02-10’,‘95031’);

    insert into student VALUES(‘103’,‘陆君’,‘男’,‘1974-06-03’,‘95031’);

    s#添加教师表

    insert into student teacher VALUES(‘804’,‘李诚’,‘男’,‘1958-12-02’,‘副教授’,‘计算机系’);

    insert into student teacher VALUES(‘856’,‘张旭’,‘男’,‘1969-03-12’,‘讲师’,‘电子工程系’);

    insert into student teacher VALUES(‘825’,‘王萍’,‘女’,‘1972-05-05’,‘助教’,‘计算机系’);

    insert into student teacher VALUES(‘831’,‘刘冰’,‘女’,‘1977-08-14’,‘助教’,‘电子工程系’);

    #添加课程表

    INSERT INTO course VALUES(‘3-105’,‘计算机导论’,‘825’);

    INSERT INTO course VALUES(‘3-245’,‘计算机导论’,‘804’);

    INSERT INTO course VALUES(‘6-166’,‘数字电路’,‘856’);

    INSERT INTO course VALUES(‘9-888’,‘高等数学’,‘831’);

    #添加成绩表

    INSERT INTO score VALUES(‘103’,‘3-245’,‘86’);

    INSERT INTO score VALUES(‘105’,‘3-245’,‘75’);

    INSERT INTO score VALUES(‘109’,‘3-245’,‘68’);

    INSERT INTO score VALUES(‘103’,‘3-105’,‘92’);

    INSERT INTO score VALUES(‘105’,‘3-105’,‘88’);

    INSERT INTO score VALUES(‘109’,‘3-105’,‘76’);

    INSERT INTO score VALUES(‘102’,‘3-105’,‘64’);

    INSERT INTO score VALUES(‘105’,‘3-105’,‘91’);

    INSERT INTO score VALUES(‘109’,‘3-105’,‘78’);

    INSERT INTO score VALUES(‘103’,‘6-166’,‘85’);

    INSERT INTO score VALUES(‘105’,‘6-166’,‘79’);

    INSERT INTO score VALUES(‘109’,‘6-166’,‘81’);

    展开全文
  • 匿名用户1级2017-10-19 回答1....外键的配置1)先创建一个表,代码如下:#创建表student,并添加各种约束create table student(id int primary key , #主键约束name varchar(20) , #唯一约束age int NOT...

    匿名用户

    1级

    2017-10-19 回答

    1.外键的作用,主要有两个:

    一个是让数据库自己通过外键来保证数据的完整性和一致性

    一个就是能够增加ER图的可读性

    2.外键的配置

    1)先创建一个主表,代码如下:

    #创建表student,并添加各种约束

    create table student

    (

    id int primary key , #主键约束

    name varchar(20) , #唯一约束

    age int NOT NULL, #非空约束

    sex varchar(2) ,

    address varchar(20) default '重庆' #默认约束

    ) ;

    再通过一个外键,创建一个分数表,这样的话,就可以方便查询。代码如下:

    #创建分数表

    create table score

    (

    id int primary key ,

    sid int ,

    china int ,

    history int,

    english int,

    constraint FK_sid foreign key(sid) references student(id) #通过外键创建链接

    ) ;

    创建外键的方法有很多,其中最常见创建外键的格式是:constraint FK_*** foreign key(**) references 链接的外表

    删除外键:

    alter table drop foreign key '外键名'.

    注意:

    只有在定义外键时,用constraint 外键名 foreign key .... 方便进行外键的删除

    主键是唯一标示这一行的,就好像你的身份证号一样,每个人只有一个,也是唯一能证明你是你的东西。外键是别人执行你的东西。也就是说如果一个人想和你有点关系怎么办,那就要关联起来,怎么关联起来,就通过外键啊

    定义主键和外键主要是为了维护关系数据库的完整性,总结一下:

    一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

    外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

    展开全文
  • 要求将满足某个条件的表和相关联的几个子表的数据全部删除,其实这个要求很简单,如果子表在创建外键的时候指定了ON DELETE CA条件:p(父表)没有ON DELETE CASCADEc(子表)mysql> delete a,b from p a,c b where...

    要求将满足某个条件的主表和相关联的几个子表的数据全部删除,其实这个要求很简单,如果子表在创建外键的时候指定了ON DELETE CA

    条件:p(父表)没有ON DELETE CASCADEc(子表)

    mysql> delete a,b from p a,c b where a.id=b.id;

    ERROR 1451 (23000):Cannot delete or update a parent row: a foreign key constraint fails (`hhl`.`c`, CONSTRAINT `FK_P_ID` FOREIGN KEY (`id`) REFERENCES `p` (`id`))

    mysql> show profiles ;

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

    | Query_ID | Duration | Query |

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

    | 1 | 0.00875600 | delete a,b from p a,c b where a.id=b.id |

    | 2 | 0.01294200 | delete a,b from p a,c b where a.id=b.id |

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

    mysql> show profile for query 2 ;

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

    | Status | Duration |

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

    | starting | 0.000314 |

    | checking permissions | 0.000026 |

    | checking permissions | 0.000014 |

    | checking permissions | 0.000009 |

    | checking permissions | 0.000010 |

    | init | 0.000033 |

    | Opening tables | 0.000082 |

    | System lock | 0.000047 |

    | init | 0.000050 |

    | deleting from main table | 0.000016 |

    | optimizing | 0.000019 |

    | statistics | 0.000056 |

    | preparing | 0.000042 |

    | executing | 0.000054 |

    | Sending data | 0.005026 |

    | end | 0.000050 |

    | query end | 0.003456 |

    | closing tables | 0.000143 |

    | freeing items | 0.003430 |

    | logging slow query | 0.000047 |

    | cleaning up | 0.000021 |

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

    21 rows in set (0.00 sec)

    看出上面没有删除子表的操作。

    mysql>delete a,b from c a,p b where a.id=b.id;

    Query OK, 6 rows affected (0.04 sec)

    from 后面 子表在前,,删除成功!!

    mysql> show profile for query 3 ;

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

    | Status | Duration |

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

    | starting | 0.000307 |

    | checking permissions | 0.000019 |

    | checking permissions | 0.000017 |

    | checking permissions | 0.000009 |

    | checking permissions | 0.000010 |

    | init | 0.000021 |

    | Opening tables | 0.000091 |

    | System lock | 0.000036 |

    | init | 0.000047 |

    | deleting from main table | 0.000016 |

    | optimizing | 0.000125 |

    | statistics | 0.000084 |

    | preparing | 0.000042 |

    | executing | 0.000013 |

    | Sending data | 0.000572 |

    |deleting from reference tables | 0.000103 |

    | end | 0.000015 |

    | Waiting for query cache lock | 0.000009 |

    | end | 0.000010 |

    | Waiting for query cache lock | 0.000008 |

    | end | 0.000160 |

    | end | 0.000022 |

    | query end | 0.030033 |

    | closing tables | 0.000081 |

    | freeing items | 0.001465 |

    | logging slow query | 0.000052 |

    | cleaning up | 0.000011 |

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

    27 rows in set (0.00 sec)

    另一种方式: 先删除最外层的子表,一层一层向里删除,最后删除父表。

    logo.gif

    f68f2add0b68e4f9810432fce46917b7.png

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • 键的分类2.1 主键2.2 主键约束2.3 外键2.4 外键约束2.5 总结3. 添加键的方法3.1 创建主键3.2 创建外键3.3 增删主键3.4 增删外键4. 设计键的原则5. 常见的表键应用(主键和外键的级联操作)1.前言上一次,我总结了...
  • mysql外键约束的写法:“CREATE TABLE 表名(FOREIGN KEY 字段名 REFERENCES 表名 主键列)”。(推荐教程:mysql视频教程)mysql主键约束主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束...
  • MYSQL主外键关系

    2021-02-02 04:22:22
    该楼层疑似违规已被系统折叠隐藏此楼查看此楼1,主外键的定义主关键字(primary key ): 是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。外关键字(foreign key): 是用于建立或加强两个表数据之间的...
  • 外键:定义:如果表A的关键字是表B中的字段,则该字段称为表B的外键,表A称为表,表B称为从表。作用:外键是用来实现参照完整性的,不同的外键约束方式将可以是两张表紧密的结合起来。比如修改或者删除的级联...
  • 2017-10-28 回答13.1.2. alter table语法alter [ignore] table tbl_namealter_specification [, alter_specification] ...alter_specification:add [column] column_definition [first | after col_name ]| add ...
  • 第一招、mysql服务的启动和停止net stop mysqlnet start mysql第二招、登陆mysql语法如下: mysql -u用户名 -p用户密码键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,...
  • 2012-08-31 回答mysql外键设置详解(1) 外键的使用:外键的作用,主要有两个:一个是让数据库自己通过外键来保证数据的完整性和一致性一个就是能够增加er图的可读性有些人认为外键的建立会给开发时操作数据库带来很大的...
  • MySQL主键外键设定方法

    千次阅读 2021-03-15 21:53:27
    数据库 mysql 建立外键的前提:本表的列必须与外键类型相同(外键必须是外表主键)。外键作用: 使两张表形成关联,外键只能引用外表中的列的值!指定主键关键字: foreign key(列名)引用外键关键字: references ...
  • MySQL外键约束是用来在两个表之间建立链接的,其中一个表发生变化,另外一个表也发生变化。从这个特点来看,它主要是为了保证表数据的一致性和完整性的。对于两个通过外键关联的表,相关联字段中主键所在的表是...
  • MySQL怎么设置外键约束?

    千次阅读 2021-01-18 19:07:52
    MySQL 外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键的值必须等于另一个...
  • MySQL是开源免费的数据库软件,是一款很优秀的软件,作为我们的学生或者科研人员在开发软件的时候,最好用也是最省钱的。所以MySQL学好是至关重要的!SQL语言包含4个部分:※数据定义语言(DDL),例如:CREATE、DROP...
  • MYSQL添加外键

    2021-01-25 11:32:28
    给商品表(从表)添加一个外键ALTER TABLE product ADD CONSTRAINT FK_cno FOREIGN KEY(cno) REFERENCES category(cid 从表);sql语句的执行顺序是:from-->WHERE-->GROUP BY -->HAVING --- >ORDER BY --&...
  • 匿名用户1级2018-06-03 回答13.1.2. ALTER TABLE语法 ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ... alter_specification: ADD [COLUMN] column_definition [FIRST | AFTER col_n...
  • 一个用户可有拥有多个订单,一个订单只能属于一个用户,一对多,在tb_order中使用外键user_id关联tb_user的id。当删除、更新tb_user中的主键时,与之关联的tb_order要受到影响,比如#tb_user中的一条记录1chyabcd#tb...
  • 数据库sql语句如何设置外键

    千次阅读 2021-02-08 05:48:03
    数据库sql语句设置外键的方法:1、添加外键约束【alter table 从表 add foreign key(外键字段) references 表(主键字段)】;2、删除外键约束【alter table 表名 drop foreig】。本文操作环境:Windows7系统,...
  • 如果表A的关键字是表B中的字段,则该字段称为表B的外键,表A称为表(父表),表B称为从表(子表)。外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将...
  • 前置,表一user;+----------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+----------+-------------+------+-----+---------+---------...
  • 大家MySQL主从同步的时候最头痛的莫过于 code 1452的状态码,这个原因是你的主从数据不一致导致主外键错误,解决也很简单,但是有些朋友没有深入了解MySQL的话 会对主外键陌生,导致无法正确的再从上面插入主数据,...
  • USEdb1;2 CREATE TABLEclass(3... MySQL练习-主外键多表查询 标签:varchar http date 建表 表数据 相同 物理 var 语文 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,380
精华内容 26,552
关键字:

mysql主外键怎么设置

mysql 订阅