ef mysql 外键 一对一_MySQL 外键 一对一 一对多 多对多 复制

#外键

## 1,学习外键首先要明白表与表之间的关系

​ 首先要换位思考 在考虑了这边 还要考虑另一边

​ 然后在下定论### 判断表关系的语法

#### 图书与出版社

​ 一本书可不可以有多个出版社 不可以

​ 一个出版社可不可以出版多本书 可以

​ 这就是一对多关系#### 图书与作者

​ 一本书可不可以有多个作者 可以

​ 一个作者可不可以写多本书 可以

​ 多对多的关系### 作者与作者信息

​ 一个作者可不可以有多个个人信息 不可以

​ 一个作者的个人信息能不能有多个作者 不可以

​ 要么两个是一对一,要么没关系

primary key 主键约束,该约束的意思就是,该字段的值非空且不能重复

关键字 references 建立表与表之间的关系

foreign key 外键约束,意思就是该字段与另外一张表有联系.好比儿子必定有爸爸,要是有人想把爸爸K掉,儿子就肯定不干了!反之没儿子的人如果要被K,就没人管啦## 2,一对多

​#foreign key会带来什么效果

​1,在创建表的时候,先创建 被关联的表不带有foreign key

​ 创建完在创建带有foreign key

```python

create table dep(

id int primary key auto_increment,

dep_name char(10),

dep_comment char(60)

);

create table emp(

id int primary key auto_increment,

name char(15),

gender enum('male','female') not null default 'male',

dep_id int,

foreign key (dep_id) references dep(id) 给这个dep_ip传入的id必须是

另一个表的id 而 referencnces 就是链接起另一张表 dep 里面一般都放的是令一张表的主键 且在给dep_id 传值的时候必须是另一张表有的id 如果没有就报错

on update cascade

on delete cascade

);

insert into dep (dep_name,dep_comment) values

('教学部','辅导学生,教授python'),

('外交','中国形象大屎'),

('技术部门','技术能力有限部门');

insert into emp (name,gender,dep_id) values

('jason','male',1),

('egon','male',2),

('taken','female',3);

```## 3,多对多

```python#图书表与作者表之间的关系

"""仍然站在两张表的角度:

1.站在图书表:一本书可不可以有多个作者,可以!那就是书多对一作者

2.站在作者表:一个作者可不可以写多本书,可以!那就是作者多对一书

双方都能一条数据对应对方多条记录,这种关系就是多对多!"""

#先来想如何创建表?图书表需要有一个外键关联作者,作者也需要有一个外键字段关联图书。问题来了,先创建谁都不合适!如何解决?#建立第三张表,该表中有一个字段fk左表的id,还有一个字段是fk右表的id

create table author (

id int primary key auto_increment,

name char(10));

create table book(

id int primary key auto_increment,

bname char(10),

price int);

insert into author (name) values

('egon'),

('jason'),

('yangxin'),

('alex');

insert into book (bname,price) values

('php从入门到消失',1000),

('葵花宝典',553),

('小泽玛利亚大战苍井空',200009),

('小泽精选',20000),

('小仓精选',2222);

create table author2book(

id int primary key auto_increment,

author_id int,

book_id int,

foreign key (author_id) references author(id)

on update cascade

on delete cascade,

foreign key (book_id) references author(id)

on update cascade

on delete cascade);

insert into author2book(author_id,book_id) values

(1,2),

(2,3),

(3,4),

(1,4),

(4,2);

```## 4,一对一

用户名 和用户信息

```python

左边的表记录唯一对应右边的一条记录,反之也一样

create table username(

id int primary key auto_increment,

name char(10) notnull,

age intnotnull);

insert into username(name,age) values

('jason',98),

('yangxin',18),

('wukai',10);

create table card(

id int primary key auto_increment,

identity int unique,#该字段唯一

username_id int unique,#该字段唯一

foreign key (card_id) references username(id)

on delete cascade

on update cascade);

insert into card(identity,username_id) values

('170020',1),

('125435',2),

('146547',3);

```## 5修改表

```python#mysql对大小写不敏感!!!

语法:1. 修改表名

ALTER TABLE 表名

RENAME 新表名;2. 增加字段

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…],                           ADD 字段名 数据类型 [完整性约束条件…];

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…]  FIRST;       ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…]  AFTER 字段名;3. 删除字段

ALTER TABLE 表名

DROP 字段名;4. 修改字段  #modify只能改字段数据类型完整约束,不能改字段名,但是change可以!

ALTER TABLE 表名

MODIFY 字段名 数据类型 [完整性约束条件…];

ALTER TABLE 表名

CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];      ALTER TABLE 表名

CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

```## 6复制表

```python#复制表 语法 create table 表名 select *from 被复制的表名#只能复制表的结构+记录 不会复制 主键 外键 和索引

```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql中Drop删除用户的名字_mysql5.5 使用drop删除用户

在说这个问题之前我们先讨论下关于在mysql中删除用户的方法和问题:其实在以前我删除mysql中的账号的时候用delete,一直没注意其实用这个命令删除账号会有一个问题就是使用delete删除账号后,只会清除user表的,在其它表中的信息还是…

docker建多个mysql_《容器化系列二》利用Docker容器化技术安装多个mysql

前提说明安装的Linux系统版本为Centos7.x一、安装docker并测试1、安装yum相关工具包///安装yum相关工具包yum install -y yum-utils device-mapper-persistent-data lvm2//发些报错,关闭刚刚睡眠中的进程kill -9 13312//再次执行yum install -y yum-utils device-ma…

mysql 元数据获取_[MySQL] 获取元数据的步骤

[MySQL] 获取元数据的方法 MySQL提供了以下三种方法用于获取数据库对象的元数据: 1)show语句 2)从INFORMATION_SCHEMA数据库里查询相关表 3)命令行程序,如mysqlshow, mysqldump 用SHOW语句获取元数据 MySQL用show语句获取元数据是最常用的方法&#xff0…

ai如何置入_ai图片(ai怎么把图片嵌入到图形里)

怎样将Ai格式的图片转换成常用的jpg,用什么软件转换?ai后缀的图片是指通过Illustrator(简称ai )软件储存得到的图片格式 这种格式的图片是矢量的,也就是说像freehand,Coredraw那样子的图片可以随意放大但不失真的那种 .在AI中,插入…

在模糊查询中怎样事先加载页面_8种信息类型,中后台产品功能自查清单

产品经理在梳理产品需求文档时需要把每一个功能的逻辑关系、交互方式都整理全面,为了避免疏漏,与开发评审前,建议每位产品都 Check 几遍文档。本文整理了一份中后台产品功能自查清单,供大家参考,如有不全欢迎提建议~中…

mysql 8.0 手动安装教程_mysql 8.0.13手动安装教程

本文为大家分享了mysql 8.0.13手动安装教程,供大家参考,具体内容如下一、步骤解读1.下载MySQL下载地址选择 Downloads-->Community-->MySQL Community Server,然后拉到页面的最低端,点击“下载”。此时一般会提示登陆&#…

gff3转mysql_科学网-把GFF3文件导入MySQL数据库-闫双勇的博文

什么是GFF3?这个一种序列注释文件的格式,基因组注释数据常常会用这种格式来记录序列注释信息,关于这种格式的更多信息,可以在这里学习:http://www.sequenceontology.org/gff3.shtml这里简单说下,怎样把GFF3文件导入My…

mysql时间字段不走索引_MySQL使用=或=范围查询时不走索引

2020-02-27最近一个日志页面查询很慢,然后去跟踪了查询sql,发现日期字段上即使建了索引,查询还是很慢,执行语句还是使用了全表扫描,于是继续分析下去。查询语句类似:select * from logs where createtime > 2020-01…

php mysql关键技术_中高级PHP开发者应该掌握哪些技术?

1.Linux能够流畅的使用Shell脚本来完成很多自动化的工作;awk/sed/perl 也操作的不错,能够完成很多文本处理和数据统计等工作;基本能够安装大 部分非特殊的Linux程序(包括各种库、包、第三方依赖等等,比如MongoDB/Redis/Sphinx/Lun…

python 简单socket_Python 简单socket

OSI七层模型(Open System Interconnection,开放式系统互联)应用层表示层回话层传输层 tcp,udp网络层 ip,icmp数据链路层 mac地址物理层 物理网卡服务端:import socket#实例化,绑定,监听,等待,解构(标识,ip-…

wxpython有哪些基本功能_用Python中的wxPython实现最基本的浏览器功能

通常,大多数应用程序通过保持 HTML 简单来解决大多数浏览器问题 ― 或者说,根据最低共同特性来编写。然而,即便如此,也仍然存在字体和布局的问题,发行新浏览器和升级现有浏览器时,也免不了测试应用程序的痛…

python增删改查mysql_python对数据库mysql的操作(增删改查)

#codingutf-8import pymysql# #查询# def connMySQL():# try:# connpymysql.connect(‘localhost‘,‘root‘,‘admin‘)# conn.select_db(‘five‘)# except Exception as e:# return e.args# else:# curconn.cursor()# cur.execute("select * from users")# datacu…

指数函数中x的取值范围_指数函数x的取值范围是

1、指数函数x的取值范围是a>0且a不1;2、指数函数是重要的基本初等函数之一。一般地,yax函数(a为常数且以a>0,a≠1)叫做指数函数,函数的定义域是 R ;3、,在指数函数的定义表达式中,在ax前的…

java创建response对象_创建一个HttpResponse对象

创建一个HttpResponse对象HttpResponse类实现了javax.servlet.http.HttpServletResponse。跟随它的是一个叫做 HttpResponseFacade的faade类。Figure 3.3显示了HttpResponse类和它的相关类的UML图。在第2章中,你使用的是一个部分实现的HttpResponse类。例如&#xf…

java编译机制_java的编译机制

我们通常写的文件都是java文件,最后要在JVM上运行则需要将java文件编译成class(二进制文件).各厂商在实现JDK时通常会符合java语言规范的源码编译为class文件的编译器.编译器的好坏很大程度上决定了最后程序在机器上执行效率.通常使用Sun JDK(javac).javac将java源码编译成clas…

java excutorthread_JAVA 线程池ThreadPoolExcutor原理探究

概论线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程…

java 继承作用_java三大特性之继承

继承(extends):让类与类之间产生关系,子父类的关系继承的好处与弊端:好处:提高代码的复用性提高了代码的维护性让类与类之间产生关系,是多态的前提弊端:类的耦合性增加开发的原则是:1、高内聚&a…

java gui 单选_java GUI编程(swing)之三swing单选框复选框组件

swing复选框(JCheckBox) 单选框(JRadioButton)特别说明:同一组单选按钮,必须先创建一个ButtonGroup,然后把单选按钮放到ButtonGroup中package gui;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import j…

websocket连接mysql_websocket 使用 spring 的service层 ,进而调用里面的 dao层 来操作数据库 ,包括redis、mysql等通用...

1.前言描述一下今天用websocket踩得坑 ---》空指针异常!我想在websocket里面使用service 层的接口,从中获取数据库的一些信息 ,使用 Autowired 注解 接口 ,报错 空指针异常 !!!查过资料才发…

世上最简单的mysql_最简单易懂的mysql安装教程

今天安装MySQL花了蛮长时间的,感觉坑还是挺多的,写遍文章总结一下。一、安装1.解压zip包到安装目录先从MySQL官网 下载mysql最新的免安装版压缩包解压之后变成这个样子:里面的文件是这个样子下面开始了,请注意2.配置文件在安装目录…