学生表和课程表可以多对多

一个学生可以学多门课程

一门课程可以有多个学生: 多对多

***

一个学生对应一个班级

一个班级对应多个学生: 一对多

***

一个老师对应多个学生

多个学生对应一个老师:一对多

***

一个老师教一门课

一门课对应一个老师: 一对一

1. 一对多(foreign key):
学生表要关联班级表,多个学生属于一个班级. 班级是被关联的表.
create table class(
id int primary key auto_increment,
caption  char(20)
);

insert into class(caption) values('三年二班'),('一年三班'),('三年一班');

create table student (
id int primary key into_increment,
name varchar(20),
sex enum('male','famale') default 'male',
class_id int,
foreign key(class_id) references class(id)
);

insert into sudent(name,class_id) values ('钢弹',1),('铁锤',1),('山炮',2);

#对这个班级来说,一门课程只有一个老师,一个老师只会教一门课程. 所以是一对一的关系

create table teacher(
id int primary key auto_increment,
name varchar(20)
on delete cascade
on update cascade
);

insert into teacher(name) value('ff'),('ff1'),('ff2');

create table course (
id int primary key auto_increment,
name varchar(20),
teacher_id int unique,
foreign key(teacher_id) references teacher(id)
);

#一个学生可以学多门课程,一门课程可有有多个学生, 他们就是多对多的关系.
create table student2course (
id int primary key auto_increment,
student_id int,
course_id int,
foreign key(student_id) references student(id)
on delete cascade
on update cascade,
foreign key(course_id) references course(id)
on delete cascade
on update cascade,
score int
);

insert into student2course (student_id,course_id,score) values(1,1,60),(1,2,59),(2,2,100);

user 和 admin的一对一关系

create teable user(

id int premary key auto_increment,

name varchar(10)

on delete cascade

on update cascade# 只管理被关联的表

);

create table admin(

id int priment key auto_increment,

password varchar(10),

user_id int unique,

foreign key(user_id) references user(id)

);

..

..

..

..

..

..

..

..

..

学生表关联客户表, 学生一定是客户,客户不一定是学生.
create table customer(
id int primary key auto_increment,
name char(10),
qq int
);

create table  stu(
id int primary key auto_increment,
name varchar(10),
cid int unique,
foreign key(cid) references customer(id)
);

多对多

create table book(
id int primary key auto_increment,
name varchar(20) not null
);

create table author (
id int primary key auto_increment,
name varchar(20),
price float(5)
);

create table book2author(
id int primary key auto_increment,
book_id int,
author_id int,
foreign key(book_id) references book(id)
on delete cascade
on update cascade,
foreign key(author_id) references author(id)
on delete cascade
on update cascade,
unique(book_id,author_id)
);

用户表可以属于一个组, 用户可以 foreign 组

多个组可以由一个用户管理

这俩就是多对多, 找一张单独的表 存他们关联的字段. 保证关联字段联合唯一.

另外例子

**

unique (1,2) ##意思就是联合唯一

select查询语句

1.简单查询

select * from 表;

select name,salary from employee

2.where 条件

from employee where salary >1000;

3.group by (分组) !!!重要

select * from employee group by sex; #by 后面的字段必须是可以能区分的.

select depart_id,group_concat(name) from employee group by depart_id;

group_concat (合并多个数组)

count(id) # 这个 id 的个数

select depart_id,count(id) from employee group by depart_id;

max(salary)

min(salary)

sum(salary)

avg(salary)

MySQL一对一:一对多:多对多: 实例!!!!的更多相关文章

  1. MySQL一对一:一对多:多对多

    学生表和课程表可以多对多 一个学生可以学多门课程 一门课程可以有多个学生: 多对多 *** 一个学生对应一个班级 一个班级对应多个学生: 一对多 *** 一个老师对应多个学生 多个学生对应一个老师:一 ...

  2. Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作

    Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: ​ ​ ​  ​ ​ 由于如果只使用一张表存储所有的数据,就会操作数 ...

  3. JPA级联(一对一 一对多 多对多)注解【实际项目中摘取的】并非自己实际应用

    下面把项目中的用户类中有个:一对一  一对多  多对多的注解对应关系列取出来用于学习      说明:项目运行正常 问题类:一对多.一对一.多对多 ============一对多 一方的设置 @One ...

  4. mybatis 一对一 一对多 多对多

    一对一 一对多 多对多

  5. JPA 一对一 一对多 多对一 多对多配置

    1 JPA概述 1.1 JPA是什么 JPA (Java Persistence API) Java持久化API.是一套Sun公司 Java官方制定的ORM 方案,是规范,是标准 ,sun公司自己并没 ...

  6. day 69-70 一对一 一对多 多对一联表查询

    day 69 orm操作之表关系,多对多,多对一 多对一/一对多, 多对多{类中的定义方法} day69 1. 昨日内容回顾 1. 单表增删改查 2. 单表查询API 返回QuerySet对象的: 1 ...

  7. SQLAlchemy_定义(一对一/一对多/多对多)关系

    目录 Basic Relationship Patterns One To Many One To One Many To Many Basic Relationship Patterns 基本关系模 ...

  8. 使用NHibernate(7)-- 一对一 && 一对多 && 多对多

    1, 一对一. 对于数据量比较大的时候,考虑查询的性能,肯能会把一个对象的属性分到两个表中存放:比如用户和用户资料,经常使用的一般是Id和用户名,用户资料(学校,籍贯等)是不经常被查询的,所以就会分成 ...

  9. 初学者易上手的SSH-hibernate04 一对一 一对多 多对多

    这章我们就来学习下hibernate的关系关联,即一对一(one-to-one),一对多(one-to-many),多对多(many-to-many).这章也将是hibernate的最后一章了,用于初 ...

随机推荐

  1. 32位linux(centos)下mongoDB的安装

    下载mongoDB wget http://downloads.mongodb.org/linux/mongodb-linux-i686-2.4.9.tgz 如果上面地址不对可以去官网自己下载http ...

  2. Linux yum安装和源码安装

    转载注明出处:原文地址 Linux Yum 在线安装 在线:Yum配置地址:/etc/yum.repos.d/CentOS-Base.repo 离线:光盘搭建Yum源 挂载光盘 使在线Yum源失效:m ...

  3. Markdown语法入门

    本文内容参考与这里,本篇文档,用Markdown语法写成. 概述 宗旨 Markdown 的目标是实现「易读易写」. 可读性,无论如何,都是最重要的.一份使用 Markdown 格式撰写的文件应该可以 ...

  4. js 继承的简单易懂小例子

    js 继承 今天主要说原型链继承.构造继承.组合继承三种常用继承方式,分享一下我的理解. 原型链继承例子1 //原型继承function A(name){ this.name = name;}func ...

  5. loadrunner 录制TCP协议脚本操作

    测试TCP协议的项目,涉及到登陆.发送实时数据.指令.登出等,直接写报文工作量太大,所以需要录制报文. 操作方法如下: 1.启动服务端程序 2.使用winsocket协议 3.选择应用程序 4.录制选 ...

  6. Java-----关于线程池的使用

    关于线程的相关概念不在此阐述,请百度或谷歌之 对于学习线程来说,我认为从代码开始学习比较好,前提是有一定的技术的积累,否则请关闭不用再看了~ 线程池四种实现方式. ①可缓存线程池,如果线程池长度超过处 ...

  7. POI颜色设置

    package com.java.connect.poi; import java.io.FileOutputStream; import java.io.IOException; import or ...

  8. ElasticSearch和ElasticSearch Head环境搭建和数据模拟

    首先elasticsearch-6.0.0\bin目录下运行elasticsearch服务 修改elasticsearch-6.0.0\elasticsearch.yml文件 在文件最后加入下面代码, ...

  9. ShuffleNet总结

    在2017年末,Face++发了一篇论文ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devic ...

  10. 「mysql优化专题」90%程序员面试都用得上的索引优化手册(5)

    目录(技术文) 多关于索引,分为以下几点来讲解: 一.索引的概述(什么是索引,索引的优缺点) 二.索引的基本使用(创建索引) 三.索引的基本原理(面试重点) 四.索引的数据结构(B树,hash) 五. ...