##多表之间的关系

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----多表操作的更多相关文章

  1. MySQL 数据表操作

    MySQL 数据表操作 创建MySQL数据表需要以下信息: -表名: -表字段名: -定义每个表字段: 一.创建数据表 1)mysql> create  table  table_name (c ...

  2. Database学习 - mysql 数据库 表操作

    mysql 数据库 表操作 创建数据表 基本语法格式: 创建数据表: create table 表名( 字段名 datatype 约束, 字段名 datatype 约束, ...... ) 修改表名 ...

  3. mysql 数据表操作 目录

    mysql 数据表操作 存储引擎介绍 mysql 使用存储引擎 mysql 数据表的增删改查 mysql 数据类型 mysql 约束条件

  4. 数据库 MySQL 之 表操作、存储引擎

    数据库 MySQL 之 表操作.存储引擎 浏览目录 创建(复制) 删除 修改 查询 存储引擎介绍 一.创建(复制) 1.语法: 1 2 3 4 5 CREATE TABLE 表名(     字段名1 ...

  5. Mysql 库表操作初识

    Mysql 库表操作初识 终端登录mysql 这里只演示win下, cmd 终端. 至于怎么在win下, linux, mac安装, 感觉这是一个入门级的百度搜索问题, 安装都搞不定, 确实有点尴尬, ...

  6. mysql连表操作是先连表还是先查询条件

    mysql连表操作是先连表还是先查询条件 一.总结 一句话总结: 连表操作时:先根据查询条件和查询字段确定驱动表,确定驱动表之后就可以开始连表操作了,然后再在缓存结果中根据查询条件找符合条件的数据 1 ...

  7. Mysql常用表操作 | 单表查询

    160905 常用表操作 1. mysql -u root -p 回车 输入密码   2. 显示数据库列表 show databases     3. 进入某数据库 use database data ...

  8. mysql数据表操作&库操作

    首先登陆mysql:mysql -uroot -proot -P3306 -h127.0.0.1 查看所有的库:show databases; 进入一个库:use database; 显示所在的库:s ...

  9. Python之MySQL库表操作

    一:库操作 1.1 增 # 语法 # create database 库名 default charset utf8; create database db1 default charset utf8 ...

  10. MySQL数据库——表操作

    I.表操作 一.创建表 基本语法如下: create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=utf8: ...

随机推荐

  1. React中key的讲解

    通过阅读React的文档我们知道React这个框架的核心思想是,将页面分割成一个个组件,一个组件还可能嵌套更小的组件,每个组件有自己的数据(属性/状态);当某个组件的数据发生变化时,更新该组件部分的视 ...

  2. VM安装Linux Centos7.0虚拟机

    一.准备工作 1.安装VMware 官网https://www.vmware.com/cn.html 2.准备centos7的镜像文件 官网下载链接:http://isoredirect.centos ...

  3. Solr查询配置及优化【eDisMax查询解析器】

    一.简介 Lucene查询解析器语法支持创建任意复杂的布尔查询,但还有一些缺点,它不是用户查询处理的理想解决方案.这里面最大的问题是Lucene查询解析器的语法要求严格,一旦破坏就会抛出异常.指望用户 ...

  4. cmake引用包初探

    应要求使用的是 mediastreamer2 库.以前开发是在tools下注册了一个新的tool,现在应该另行建立一个项目. 好像 CMake 写的项目叫package??? 项目名字是 mstest ...

  5. volatile和synchronized到底啥区别?多图文讲解告诉你

    你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...

  6. php-fpm启动失败处理

    报错信息: No pool defined. at least one pool section must be specified in config file [11-Mar-2019 23:57 ...

  7. Slog64_项目上线之ArthurSlog个人网站上线3

    ArthurSlog SLog-64 Year·1 Guangzhou·China September 9th 2018 ArthurSlog Page GitHub NPM Package Page ...

  8. vue项目按需加载的3种方式

    本文重要是路由打包优化: 原理:利用webpack对代码进行分割是懒加载的前提,懒加载就是异步调用组件,需要时候才下载. 1.vue异步组件技术 vue-router配置路由,使用vue的异步组件技术 ...

  9. LeetCode 81.Search in Rotated Sorted Array II(M)

    题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...

  10. 『配置』服务器搭建 Office Online Server2016 实现文档预览 番外 错误篇

    安装一个或多个角色.角色服务或功能失败.找不到源文件.请再次尝试在新的“添加角色和功能”向导会话中安装角色.角色服务或功能,然后在向导的“确认”页中单击“指定备用源路径”以指定安装所需的源文件的有效位 ...