例如:一个人只能有一个身份证号,一个身份证号只属于一个人
示例代码
-- 创建数据库,并指定 utf8 字符集
CREATE DATABASE IF NOT EXISTS school CHARACTER SET utf8;
-- 使用数据库
USE school;
-- 创建人类表
CREATE TABLE person(
p_id INT PRIMARY KEY AUTO_INCREMENT, -- 人类表 id
p_name VARCHAR(40) NOT NULL, -- 姓名字段
p_address VARCHAR(200) -- 地址字段
);
-- 创建身份证号表
CREATE TABLE idcard(
c_id INT PRIMARY KEY AUTO_INCREMENT, -- 身份证号表 id
c_number VARCHAR(18) -- 身份证号字段
);
-- 插入数据
INSERT INTO person VALUES(1 , '张三' ,'河南');
INSERT INTO person VALUES(2 , '李四' ,'北京');
INSERT INTO person VALUES(3 , '王五' ,'上海');
INSERT INTO idcard VALUES(1 , '11111');
INSERT INTO idcard VALUES(2 , '22222');
INSERT INTO idcard VALUES(3 , '33333');
-- 给人类表添加外键
ALTER TABLE person ADD CONSTRAINT p_idcard FOREIGN KEY (p_id) REFERENCES idcard(c_id);
一对一关系图
例如:一门课程只能属于一个老师,一个老师可以有多门课程
示例代码
-- 创建课程表
CREATE TABLE course(
c_id INT PRIMARY KEY AUTO_INCREMENT, -- 课程表 id
c_name VARCHAR(100), -- 课程名称
ct_id INT -- 教师外键
);
-- 创建教师表
CREATE TABLE teacher(
t_id INT PRIMARY KEY AUTO_INCREMENT, -- 教师编号
t_name VARCHAR(40) -- 教师姓名
);
-- 插入数据
INSERT INTO course VALUES( 101, '语文',1);
INSERT INTO course VALUES( 102, '数学',3);
INSERT INTO course VALUES( 103, '英语',5);
INSERT INTO course VALUES( 104, '政治',2);
INSERT INTO course VALUES( 105, '历史',1);
INSERT INTO course VALUES( 106, '地理',4);
INSERT INTO teacher VALUES(1 , '张老师');
INSERT INTO teacher VALUES(2 , '李老师');
INSERT INTO teacher VALUES(3 , '王老师');
INSERT INTO teacher VALUES(4 , '黄老师');
INSERT INTO teacher VALUES(5 , '马老师');
-- 给课程表添加外键
ALTER TABLE course ADD CONSTRAINT c_teacher FOREIGN KEY (ct_id) REFERENCES teacher(t_id);
一对多、多对一关系图
例如:一门课程可以有多个学生,一个学生也可以有多门课程
中间表的创建规则
示例代码
-- 创建学生表
CREATE TABLE student(
s_id INT PRIMARY KEY AUTO_INCREMENT, -- 学生表 id
s_name VARCHAR(40) NOT NULL -- 学生姓名字段
);
-- 创建中间表
CREATE TABLE student_course(
cc_id INT, -- 课程表外键
ss_id INT -- 学生表外键
);
-- 插入数据
INSERT INTO student_course VALUES(101 , 1);
INSERT INTO student_course VALUES(101 , 2);
INSERT INTO student_course VALUES(101 , 3);
INSERT INTO student_course VALUES(102 , 3);
INSERT INTO student_course VALUES(105 , 3);
INSERT INTO student_course VALUES(104 , 2);
INSERT INTO student VALUES(1,'张三');
INSERT INTO student VALUES(2,'李四');
INSERT INTO student VALUES(3,'王五');
-- 添加外键
ALTER TABLE student_course ADD CONSTRAINT c_sc FOREIGN KEY(cc_id) REFERENCES course(c_id);
ALTER TABLE student_course ADD CONSTRAINT s_sc FOREIGN KEY(ss_id) REFERENCES student(s_id);
多对多关系图
接下来,请看文章:多表查询!