码迷,mamicode.com
首页 > 数据库 > 详细

mysql 中多表 总结

时间:2017-04-12 17:31:19      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:primary   alter   关系   class   add   北海道   数据类型   总结   成绩   

1.多表的创建语法

  alter table 从表名  add constraint 外键名 foreign key (从表类名) references 主表名(主表列);

  准备数据:

CREATE DATABASE one2many;
USE one2many;
#创建学生表
CREATE TABLE stu (
	stuid VARCHAR(32) PRIMARY KEY,
	NAME VARCHAR(32),
	number INT ,
	adress VARCHAR(32)
);
INSERT INTO stu VALUES (‘s001‘,‘huluwa‘,123456,‘葫芦山‘);
INSERT INTO stu VALUES (‘s002‘,‘automan‘,654321,‘北海道‘);

#创建成绩表
CREATE TABLE score(
	scoid VARCHAR(32),
	chinese INT,
	math INT,
	english INT,
	studentid VARCHAR(32)  #在成绩表中添加一列,存放学生表中学生ID
);
INSERT INTO score VALUES(‘sc1‘,100,90,90,‘s001‘);
INSERT INTO score VALUES(‘sc2‘,90,80,90,‘s002‘);
INSERT INTO score VALUES(‘sc3‘,90,70,70,‘s001‘);
INSERT INTO score VALUES(‘sc4‘,100,95,95,‘s002‘);

     在上述两个表中,score表中的seudentid类存储了stu表中学生的信息,可以通过成绩在score表中查询到studentid后,在stu表中通过studentid的值查到该成绩对应的学生的信息,但此时两个表并没有添加外键关系,可以随意从表可以随意添加符合数据类型的值(这个值在主表中没有对应的信息).主表可以随意删除学生信息,删除后从表将查询不到,但是对应的考试成绩还存在,简单说就是主表可以随意删除数据,从表可以随意添加数据,这是不符合业务逻辑的

  添加主键约束

ALTER TABLE score ADD CONSTRAINT stu_score FOREIGN KEY (studentid) REFERENCES stu(stuid);

    此时主表随意删除数据(从表中未删除)或从表随意添加数据(主表中没有对应的值)时就会报错.------a foreign key constraint fails

2.多表的查询

  1.

 

mysql 中多表 总结

标签:primary   alter   关系   class   add   北海道   数据类型   总结   成绩   

原文地址:http://www.cnblogs.com/cocosili/p/6700276.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!