MySQL(10)-----多表创建及描述表关系(一对多的分析和实现)
1.前言
在开发中,针对一对多的关系,一方称之为主表或一表,多方称之为多表或从表。
为了表示一对多的关系,一般会在多表的一方添加一个字段,字段名称自定义(建议:主表的名称_id)
字段类型一般和主表的主键的类型保持一致,该字段称之为外键。
【外键约束不是必须的,可以通过Java程序来控制】
2. 一对多
用户表和订单表
----用户表
create table user(
id int primary key auto_increatement,
username varchar(20)
);
----订单表
create table orders(
id int primary key auto_increatement,
totaleprice double,
user_id int
);
----为了保证数据的有效性和完整性,在多表的一方添加约束(外键约束)。
格式:
alter table 多表名称 add foreign key (外键名称) references 主表名称(主键);
alter table orders add foreign key(user_id) references user(id);
注意:添加了外键约束后有如下特点:
1.主表中不能删除从表中已引用的数据;
2.从表中不能添加主表不存在的数据;
3.外键约束常用于项目上线时。
主表:
从表:
主表--从表的对象模型:
从上图来看,可以成功的在从表中插入主表存在的数据(id),当插入主表不存在的id(id=8)这条数据时,将爆外键异常。
3. 小结
开发中处理一对多:
在从表(多表)中添加一个外键(foreign key),名称一般主表的名称,且字段类型必须和主表的主键字段类型保持一致。
为保证数据的有效性和完整性,在多表的外键上添加外键约束即可。
人的一生中,最光辉的一天并非是功成名就那天,而是从悲叹与绝望中产生对人生的挑战,以勇敢迈向意志那天。愿你就像早晨八九点钟的太阳,活力十足,永远年轻。
MySQL(10)-----多表创建及描述表关系(一对多的分析和实现)相关推荐
- mysql按照时间自动创建分区表_mysql 表分区、按时间函数分区、删除分区、自动添加表分区...
mysql 表分区的几种方式: RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区. LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进 ...
- 【mysql学习】2.创建数据库和表,学会使用 select,delete,update ,insert,where等指令
首先先来简单说明下mysql的结构,存储数据我们是在数据库中完成的,也就是database.在database中又有很多表,这个表里面就存有我们想要存储的数据.对于存储数据的表我们一般称为xxx表,比 ...
- mysql 用sql语句创建数据库和表
1.使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql ...
- cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
1.相关指令 1.按下键盘上的windows+R键输入cmd,或在搜索框直接输入cmd 2.进入mysql: 在命令行输入mysql -uroot -p,然后输入你的mysql密码,成功后进入mysq ...
- 哈希表创建哈希表(Hash Table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构.typedef enum{ HASH_OK-icoding-数据结构-C
哈希表创建 typedef enum{HASH_OK,HASH_ERROR,HASH_ADDED,HASH_REPLACED_VALUE,HASH_ALREADY_ADDED,HASH_DELETED ...
- oracle给一个表创建序列,oracle表中怎么创建序列
oracle序列的创建: create sequence seq_newsId increment by 1 start with 1 maxvalue 999999999; 获得oracle序列的S ...
- 单链表的整表创建以及整表删除
一条链表是由很多个结点元素构成,所以,我们想要创建一个链表,只需要循环创建结点就可以完成这个任务了.按道理讲,我们可以只创建带有数据的结点就可以了,不过,为了更方便的操控链表以及更方便的创建结点,我们 ...
- MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键
第10章_创建和管理表 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步.只有正确地 ...
- mysql用命令行创建表_mysql命令行创建表
命令来查看表中的数据的变化: mysql>select*from students; 7.用文本方式将数据装入一个数据库表: 创建一个文本文件"student.sql",每行 ...
- ClickHouse 创建数据库/建表/视图/字典 SQL
1.1. ClickHouse SQL之数据定义语言 DDL 本节介绍 ClickHouse 中进行数据库.表结构的定义和管理. 1.1.1. 概述 在SQL中,数据定义语言( DDL ) 用来创建 ...
最新文章
- 集合-ArrayList
- 朴素贝叶斯网络进行邮件分类
- flex布局怎么设置子元素大小_48张小图带你领略Flex 布局之美
- Studio启动的时候报错 Could not install Gradle distribution from
- How to make .dmg install for Mac
- 2016百度之星资格赛总结
- Lua 函数参数 默认实参
- pygame 文字输入交互_如何在pygame中创建交互式对象?
- Oracle 字符集
- eclipse下maven打包是出现如下错误com.sun.istack.internal不存在
- ubunut18.04 pycharm创建快捷方式和右键创建空白文件夹
- 深度解析国内主流离线编程软件
- 阿里云无影云桌面分配用户是什么?
- 什么叫机械硬盘_企业级机械硬盘和普通机械硬盘有什么区别
- c盘扩容提示簇被标记_电脑C盘爆满飘红?系统卡?试试这两种解决办法
- python 身份证实名认证
- 蒙特卡洛模拟最牛的地方在哪里呢?
- 反射-获取信息详细(转)
- Google实时文字翻译背后的技术
- Linux下的回收站trash