MySQL----多表操作
##多表之间的关系
1、一对一(了解)
* 如:人和身份证
* 分析:一个人只有一个身份证,一个身份证只能对应一个人。
2、一对多(多对一)
* 如:部门和员工
* 分析:一个部门有多个员工,一个员工只能对应一个部门。
3、多对多
* 如:学生和课程
* 分析:一个学生可以选择很多们课程,一门课程也可以被很多学生选择。
实现关系
1、一对多(多对一)
* 如:部门和员工
* 实现方式:在多的一方建立外键,指向一的一方的主键。

2、多对多
* 如:部门和员工
* 实现方式:借助第三张中间表,至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张主表的主键。

3、一对一
* 如:人和身份证
* 实现方式:可以在任意一方添加唯一外键指向另一方的主键。

案例:
/*旅游线路案例
1、分类表和线路表是1 对 多的关系
2、线路表和用户表是多对多,需要创建中间表。
*/
create table category(
cid int primary key auto_increment,
name varchar(64) not null unique
);
create table routes(
rid int primary key auto_increment,
name varchar(128) not null unique ,
price double,
cid int,
/*constraint rou_cat_fk */foreign key (cid) references category(cid)
on delete cascade on update cascade
);
create table user(
uid int primary key auto_increment,
username varchar(32) not null unique ,
password varchar(32) not null
);
create table favorite(
rid int,
date datetime,
uid int,
/*创建复合主键*/
primary key (rid,uid),
foreign key (rid) references routes(rid),
foreign key (uid) references user(uid)
);
insert into category(cid, name) VALUES (1,'国外游'),(2,'国内游');
insert into routes(rid, name, price, cid) VALUES (1,'希腊游',10000.1,1),(2,'北京游',9992.1,2);
insert into user (uid, username, password)
values (null,'ftj',''),(null,'lxy','');
insert into favorite (rid, date, uid)
values (1,'2020-02-08 23:59:59',1),(2,'2020-02-08 23:59:59',2);
select * from user where uid = (select uid from favorite where rid = 1);
MySQL----多表操作的更多相关文章
- MySQL 数据表操作
MySQL 数据表操作 创建MySQL数据表需要以下信息: -表名: -表字段名: -定义每个表字段: 一.创建数据表 1)mysql> create table table_name (c ...
- Database学习 - mysql 数据库 表操作
mysql 数据库 表操作 创建数据表 基本语法格式: 创建数据表: create table 表名( 字段名 datatype 约束, 字段名 datatype 约束, ...... ) 修改表名 ...
- mysql 数据表操作 目录
mysql 数据表操作 存储引擎介绍 mysql 使用存储引擎 mysql 数据表的增删改查 mysql 数据类型 mysql 约束条件
- 数据库 MySQL 之 表操作、存储引擎
数据库 MySQL 之 表操作.存储引擎 浏览目录 创建(复制) 删除 修改 查询 存储引擎介绍 一.创建(复制) 1.语法: 1 2 3 4 5 CREATE TABLE 表名( 字段名1 ...
- Mysql 库表操作初识
Mysql 库表操作初识 终端登录mysql 这里只演示win下, cmd 终端. 至于怎么在win下, linux, mac安装, 感觉这是一个入门级的百度搜索问题, 安装都搞不定, 确实有点尴尬, ...
- mysql连表操作是先连表还是先查询条件
mysql连表操作是先连表还是先查询条件 一.总结 一句话总结: 连表操作时:先根据查询条件和查询字段确定驱动表,确定驱动表之后就可以开始连表操作了,然后再在缓存结果中根据查询条件找符合条件的数据 1 ...
- Mysql常用表操作 | 单表查询
160905 常用表操作 1. mysql -u root -p 回车 输入密码 2. 显示数据库列表 show databases 3. 进入某数据库 use database data ...
- mysql数据表操作&库操作
首先登陆mysql:mysql -uroot -proot -P3306 -h127.0.0.1 查看所有的库:show databases; 进入一个库:use database; 显示所在的库:s ...
- Python之MySQL库表操作
一:库操作 1.1 增 # 语法 # create database 库名 default charset utf8; create database db1 default charset utf8 ...
- MySQL数据库——表操作
I.表操作 一.创建表 基本语法如下: create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=utf8: ...
随机推荐
- Dykin's blog
回归分析是一种很重要的预测建模技术.主要是研究自变量与因变量之间的因果关系.本文将会从数学角度与代码角度分析不同类型的回归.当你想预测连续型的非独立变量,或者对一系列独立变量或输入项有所反应时,就会使 ...
- Python 代码实现验证码识别
Python 代码实现验证码识别 测试开发社区 1周前 源 / j_hao104 一.探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… ...
- hexo文章编写部分语法总结以及hexo使用
一.hexo的使用 1.1 新建一篇文章 1 $ hexo new [layout] <title> 1.2. 生成静态文件 1 $ hexo generate 可简写为 1 $ hexo ...
- AndroidManifest.xml文件详解
本文为安全专家李洋的最新一篇专栏文章<AndroidManifest.xml文件详解>.AndroidManifest.xml是一个跟安全相关的配置文件,该配置文件是Android安全保障 ...
- 选题在线提交系统(html+JS+php)
前言: 作为学习委员还是有挺多的事情要忙的,比如经常统计同学们的课设题目选择结果.如果老师的要求少一点,我还可以轻松一点.但是当老师对选题有种种限制的时候,自己就估计不会那么好办了.这 ...
- 《N诺机试指南》(八)日期、字符串、排序问题
1.日期问题: 输入: 例题: 代码: #include <stdio.h> #include <bits/stdc++.h> struct node{ int year, m ...
- IDEA中Git的使用详解
原文链接:https://www.cnblogs.com/javabg/p/8567790.html 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小 ...
- 使用SpringMVC实现文件上传和下载
文件上传 第一步,加入jar包: commons-fileupload-1.3.1.jar commons-io-2.4.jar 第二步,在SpringMVC配置文件中配置CommonsMultipa ...
- 关于javascript 的reduce方法
作为一个前端菜鸟,觉得资料比较好,特地分享一下~~ reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. 你一定也和我一样看的有点 ...
- form表单提交没有跨域问题,但ajax提交存在跨域问题
浏览器的策略本质是:一个域名下面的JS,没有经过允许是不能读取另外一个域名的内容,但是浏览器不阻止你向另外一个域名发送请求. 所以form表单提交没有跨域问题,提交form表单到另外一个域名,原来页面 ...