当前位置: 首页 > news >正文

MySQL增删查改(进阶1)

一、数据库约束

约束:按照一定条件进行规范的做事;

表定义的时候,某些字段保存的数据需要按照一定的约束条件;

1.null约束

  • 字段null:该字段可以为空;not null:该字段不能为空
  • 不指定的话就是null

id int not null;

2.unique:唯一约束

表示某个字段,不能重复(实际可以使用多个字段来建立unique唯一约束)

null不进行unique唯一校验;

sn int unique;

当sn重复时便会报错

3.default:默认值约束

表示某个字段设置了default及默认值,插入的时候该列不插入,就会插入默认值。

显示的插入数据即使是null,默认值也不会生效

name varchar(20) default 'unkown';

插入的字段不使用name,才会插入默认值:

4.primary key:主键约束

主键一般用于某张表标识唯一的一条数据

  • primary key =not null unique

仅仅unique约束的字段,还可以保存多条null的数据,也不能标识唯一的数据

主键字段不插入或者插入重复的都会报错

 一张表一般都需要设计主键

如果使用整型主键还可以结合auto_increment,表示从1开始,++自增

 自增不是以最大值加1的方式,而是mysql记录了这个值来递增。

 再插入数据,id就可能不连续

5.foreign key:外键约束

用于设计表与表之间的关系

表1(主表:主键)-----表2(从表:外键):就可以建立表1和表2一对一或者一对多的关系

二、表的设计

数据库设计表关系

主表的主键关联从表的外键(建立外键,不一定非要使用主键来关联,只是常用主键和外键关联)

create table 主表(

  id int primary key auto_increment,

...

);

create table 从表(

  id int primary key auto_increment,

...

  主表_id int,

   foreign key (主表_id) references 主表(id)

);

上面两个表中 蓝色部分建立关系

foreign key (主表_id) references 主表id)--->

主表_id:从表的外键字段名

主表:主表的表名;

id:主表的关联字段名(一般使用主键)

1.一对一的关系

比如:人对身份证

id:主键

name:姓名

amount:存款

username:账号

password:密码

身份证

id:主键

身份证号:*******

住址:*******

......

user_id:外键

建立人的主键与身份证外键的联系

从现实看,其实可以设计成一张表,但是人这张表查询比较频繁,如果把身份证相关的字段也放在一起,那么比较频繁的又不获取身份证信息的查询效率就比较低。

设计为一对一关系的两张表目的是:

  1. 数据库表设计其实就是建模(建立一种对象模型)
  2. 解耦:模型之间的解耦
  3. 效率:不经常使用的数据,单独存储,效率会比较高

2.一对多的关系

班级表

班级id

班级名称

...

学生表

学生 id:主键

学生姓名

学号

班级id:外键

班级id就是班级表和学生表之间的关联

一对多其实是有方向的,包含:

(1)班级到学生:一对多,一个班级多个学生

(2)学生到班级,一对一,一个学生一个班级

3.多对多的关系

表设计的时候(这个多对多关系,在两张主表中没有外键体现):

(1)两张主表建立多对多关系

(2)使用一张单独的中间表来表示两张主表的多对多关系

学生和课程再某个业务发生后就可能产生关系:

考试:一个学生考多门课程,一门课程有多个学生考试

设计上使用中间表:

(1)两个外键:分别关联两张主表的主键

(2)还可能设计一些业务的字段,比如考试成绩

学生表和课程表是多对多的关系(逻辑上的多对多关系),主表没有关系的体系;

中间表(体现实际的多对多关系),两个外键其实就表现出多对多的关系;

插入数据:

 在MySQL中执行后:

 表结构上只有两个一对多关系;数据上,体现出两个一对多关系,及逻辑上的多对多关系;

  • 一个学生考多个试--->学生表:中间表=1:n
  • 一个课程有多个考试成绩--->课程表:中间表=1:m
  • 中间表(考试成绩表)--->学生:课程=n:m

三、新增

插入操作:insert into 表 select...from 表 where... order by ... limit;

使用场景:

(1)复制表

(2)提前准备一些统计的数据(统计的sql一般关联很多表,条件可能也很复杂,执行效率可能不高),很多系统就提前运行任务,将统计的数据准备在单独的一张表中

 把查询结果集返回的所有数据,按查询出来的字段顺序,插入到insert表给的字段。

相关文章:

MySQL增删查改(进阶1)

一、数据库约束 约束:按照一定条件进行规范的做事; 表定义的时候,某些字段保存的数据需要按照一定的约束条件; 1.null约束 字段null:该字段可以为空;not null:该字段不能为空不指定的话就是…...

RabbitMQ-发布订阅模式和路由模式

接上文 RabbitMQ-工作队列 1 发布订阅模式 将之前的配置类内容都替换掉 Bean("fanoutExchange")public Exchange exchange(){//注意这里是fanoutExchangereturn ExchangeBuilder.fanoutExchange("amq.fanout").build();}Bean("yydsQueue1")publ…...

RabbitMQ-主题模式

接上文 RabbitMQ-发布订阅模式和路由模式 1 主题模式 #通配符 代表0个或多个。*通配符 代表 1个或多个 进行测试,修改配置文件 Configuration public class RabbitConfiguration {Bean("topicExchange") //这里使用预置的Topic类型交换机public Exchan…...

阅读文献小技巧

在科研中,文献的阅读是非常重要的一环。对于汇报论文的文献阅读,更是需要有一定的技巧。下面列出一些阅读汇报论文文献的技巧。 1.明确阅读目的和任务。在阅读每篇文献之前,需要明确阅读该文献的目的和任务,例如是否需要了解该领域的最新进展、寻找相关数据或案例等。是为…...

简易的贪吃蛇小游戏(以后或许会更新)C++/C语言

第一版&#xff1a; #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <windows.h>#define WIDTH 20 #define HEIGHT 20int gameOver; int score; int x, y; // 蛇头的坐标 int fruitX, fruitY; // 食物的坐标 int tailX[100], t…...

23云计算全国职业技能大赛容器云-容器编排

erp 2.2.1 容器化部署 MariaDB [0.5 分]2.2.2 容器化部署 Redis [0.5 分]2.2.3 容器化部署 Nginx [0.5 分]2.2.4 容器化部署 ERP[0.5 分]2.2.5 编排部署 ERP管理系统[1 分] 2.2.1 容器化部署 MariaDB [0.5 分] 编写 Dockerfile 文件构建 mysql 镜像&#xff0c;要求基于 centos…...

哨兵(Sentinel-1、2)数据下载

哨兵&#xff08;Sentinel-1、2&#xff09;数据下载 一、登陆欧空局网站 二、检索 先下载2号为光学数据 分为S2A和S2B&#xff0c;产品种类有1C和2A&#xff0c;区别就是2A是做好大气校正的影像&#xff0c;当然数量也会少一些&#xff0c;云量检索条件中记得要按格式&#x…...

开启AI大模型时代|「Transformer论文精读」

论文地址: https://arxiv.org/pdf/1706.03762v5.pdf 代码地址: https://github.com/tensorflow/tensor2tensor.git 首发&#xff1a;微信公众号「魔方AI空间」&#xff0c;欢迎关注&#xff5e; 大家好&#xff0c;我是魔方君~~ 近年来&#xff0c;人工智能技术发展迅猛&#…...

【小沐学前端】Windows下搭建WordPress(nginx1.25、PHP8.2、WordPress6.3、MySQL5.7)

文章目录 1、简介1.1 Nginx1.2 PHP1.3 WordPress1.4 MySQL 2、下载2.1 Nginx2.2 PHP2.3 WordPress2.4 MySQL 3、搭建环境3.1 Nginx3.2 PHP3.3 WordPress3.4 MySQL 4、配置WordPress4.1 选择语言4.2 配置数据库4.3 登录界面4.4 常规设置4.5 写作操作 结语 1、简介 WordPress是基…...

centos8 Error: Failed to download metadata for repo ‘appstream‘

2020 年 12 月 8 号&#xff0c;CentOS 官方宣布了停止维护 CentOS Linux 的计划&#xff0c;并推出了 CentOS Stream 项目&#xff0c;CentOS Linux 8 作为 RHEL 8 的复刻版本&#xff0c;生命周期缩短&#xff0c;于 2021 年 12 月 31 日停止更新并停止维护&#xff08;EOL&a…...

键盘上F1至F12键的作用

多年来&#xff0c;我们习惯了最上排的12个按键&#xff0c;从F1到F12&#xff0c;它们被称为“快速功能键”&#xff0c;可以让你更轻松地操作电脑&#xff1b;但是&#xff0c;很多人可能从未使用过它们&#xff0c;也从来不知道它们的用途。那么今天&#xff0c;就向大家科普…...

2023年湘潭大学OJ作业2 2023年下学期《C语言》作业0x01-数学计算 XTU OJ 1080,1081,1082,1083,1084

第一题 #include<stdio.h> #include<math.h>int main() {double a3.2,b4.7;aa*a,bb*b;double ressqrt(ab);printf("%g\n",res);return 0; } 注意math.h头文件的使用&#xff0c;还有sqrt是双精度的 第二题 #include<stdio.h> #include<math…...

C/C++ 进程间通信system V IPC对象超详细讲解(系统性学习day9)

目录 前言 一、system V IPC对象图解 1.流程图解&#xff1a; ​编辑 2.查看linux内核中的ipc对象&#xff1a; 二、消息队列 1.消息队列的原理 2.消息队列相关的API 2.1 获取或创建消息队列&#xff08;msgget&#xff09; 实例代码如下&#xff1a; 2.2 发送消息到消…...

python—如何提取word中指定内容

假设有一个Word&#xff0c;该Word中存在 “联系人” 关键字&#xff0c;如何将该Word中的联系人所对应的内容提取出来呢&#xff1f; 该Word内容如下所示&#xff1a; 要在给定的Word文档中提取出与"联系人"关键字对应的内容&#xff0c;可以使用Python的py…...

分享几个通用个人简历模板|行业通用

Home(https://cvjury.com/) 专业设计的简历模板。 在竞争激烈的就业市场中脱颖而出的有效策略。 侧重于向招聘人员传达独特的价值主张。 帮助创建引人注目的简历、求职信和LinkedIn资料。 面向毕业生和学生的个性化简历解决方案。 添加图片注释&#xff0c;不超过 140 字&…...

如何正确操作封箱机

前文跟大家分享过封箱机错误操作三案例&#xff0c;那么封箱机到底如何才能正确操作呢&#xff1f;今天就和您分享一下如何正确操作封箱机。 1、确定正确的电源电压进行接入。目前国内封箱机均采用220v 50hz电源电压&#xff0c;但也有一些定制型设备可能使用380v电源&#xff…...

mysql面试题7:MySQL事务原理是什么?MySQL事务的隔离级别有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL事务原理是什么? MySQL事务的原理是基于ACID(原子性、一致性、隔离性、持久性)特性来实现的,具体原理如下: Atomicity(原子性):事务…...

vue 项目打包性能分析插件 webpack-bundle-analyzer

webpack-bundle-analyzer 是 webpack 的插件&#xff0c;需要配合 webpack 和 webpack-cli 一起使用。这个插件可以读取输出文件夹&#xff08;通常是 dist&#xff09;中的 stats.json 文件&#xff0c;把该文件可视化展现&#xff0c;生成代码分析报告&#xff0c;可以直观地…...

C++ day2

1->x.mind 2->...

【Kafka专题】Kafka集群架构设计原理详解

目录 前言前置知识课程内容一、Kafka的Zookeeper元数据梳理1.1 zookeeper整体数据1.2 Controller Broker选举机制1.3 Leader Partition选举机制1.4 Leader Partition自动平衡机制*1.5 Partition故障恢复机制1.6 HW一致性保障-Epoch更新机制1.7 总结 学习总结感谢 前言 Kafka的…...

Docker 镜像的缓存特性

Author&#xff1a;rab 目录 前言一、构建缓存二、Pull 缓存总结 前言 首先我们要清楚&#xff0c;Docker 的镜像结构是分层的&#xff0c;镜像本身是只读的&#xff08;不管任何一层&#xff09;&#xff0c;当我们基于某镜像运行一个容器时&#xff0c;会有一个新的可写层被…...

Javascript 笔记:object

一部分object可以见&#xff1a;JavaScript 笔记 初识JavaScript&#xff08;变量&#xff09;_UQI-LIUWJ的博客-CSDN博客 1 in操作符 2 hasOwnProperty 3 获取一个object所拥有的所有property 不去原型链上找 4 定义data property...

【vue3】可编辑el-table

<template><el-table:data"tableData"style"width: 100%"><el-table-columnprop"date"label"日期"width"180"><template #default"{row,$index}"><input type"text" v-mode…...

一个开源的安卓相机:OpenCamera

原网址 Open Camera download | SourceForge.net 我也上传了一个 https://github.com/quantum6/Android-OpenCamera...

分类预测 | MATLAB实现POA-CNN鹈鹕算法优化卷积神经网络多特征分类预测

分类预测 | MATLAB实现POA-CNN鹈鹕算法优化卷积神经网络多特征分类预测 目录 分类预测 | MATLAB实现POA-CNN鹈鹕算法优化卷积神经网络多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现POA-CNN鹈鹕算法优化卷积神经网络多特征分类预测&#xff0…...

学习网络编程No.7【应用层之序列化和反序列化】

引言&#xff1a; 北京时间&#xff1a;2023/9/14/19:13&#xff0c;下午刚刚更完文章&#xff0c;是一篇很久很久以前的文章&#xff0c;由于各种原因&#xff0c;留到了今天更新&#xff0c;非常惭愧呀&#xff01;目前在上学校开的一门网络课程&#xff0c;学校的课听不了一…...

小谈设计模式(10)—原型模式

小谈设计模式&#xff08;10&#xff09;—原型模式 专栏介绍专栏地址专栏介绍 原型模式角色分类抽象原型&#xff08;Prototype&#xff09;具体原型&#xff08;Concrete Prototype&#xff09;客户端&#xff08;Client&#xff09;原型管理器&#xff08;Prototype Manager…...

用《斗破苍穹》的视角打开C#3 标签与反射(人物创建与斗技使用)

随着剧情的发展&#xff0c;主线人物登场得越来越多&#xff0c;时不时跳出一个大佬&#xff0c;对我张牙舞爪地攻击。眼花缭乱的斗技让我不厌其烦&#xff0c;一个不小心&#xff0c;我就记不清楚在哪里遇上过什么人&#xff0c;他会什么斗技了。这时候&#xff0c;我就特别希…...

c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(下))

上篇文章介绍了一些常用的字符串函数&#xff0c;大家可以跳转过去浏览一下&#xff1a;c语言进阶部分详解&#xff08;详细解析字符串常用函数&#xff0c;并进行模拟实现&#xff08;上&#xff09;&#xff09;_总之就是非常唔姆的博客-CSDN博客 今天接着来介绍一些&#x…...

一文看懂光模块的工作原理

你们好&#xff0c;我的网工朋友 光模块有很多类别&#xff0c;是我们经常要用到的PHY层器件。虽然封装&#xff0c;速率&#xff0c;传输距离有所不同&#xff0c;但是其内部组成基本是一致的。 以太网交换机常用的光模块有SFP&#xff0c;GBIC&#xff0c;XFP&#xff0c;X…...

黄石建设工程信息网/暴风seo论坛

1. 无地形的贴地 2. 有地形的贴地 1. 无地形的“贴地” Cesium在创建Viewer视景器对象时,当我们将terrainProvier属性指定为EllipsoidTerrainProviderd对象时,那么就对应无地形的三维场景这种情况了, const viewer = new Cesium(targetID,{...,terrainProvider: new Cesiu…...

网站关键词优化报价/怎么开展网络营销推广

1、mongodb安装好后第一次进入是不需要密码的&#xff0c;也没有任何用户&#xff0c;通过shell命令可直接进入&#xff0c;cd到mongodb目录下的bin文件夹&#xff0c;执行命令./mongo即可运行如下&#xff1a;[rootnamenode mongodb]# ./bin/mongo MongoDB shell version: 1.8…...

建筑工程网 装修/关键词查询优化

剑指第二版第7题重建二叉树 这算是一道老题目了,通过前续遍历和中序遍历创建一个二叉树,我记得还有一道反序列二叉树的题,只给了三种dfs中的一种,区别还是很大的,没有什么可以说的了,找规律就可以了. class Solution {HashMap<Integer, Integer> map new HashMap<&…...

无锡网站推广公司/app制作公司

转载于:https://www.cnblogs.com/nkwy2012/p/7975808.html...

东莞保安公司投诉电话/seo标签怎么优化

之前因为懒&#xff0c;没有针对otter做更多的解释和说明&#xff0c;在使用过程中&#xff0c;也发现了一些问题&#xff0c;此次补上一个完整的文档&#xff0c;方便大家使用。 Otter是基于cannal开源的&#xff0c;canal又是基于mysql binlog的产品。我们就从binlog说起 bin…...

用什么做网站/陕西新站seo

MSQ是一种统计学方法&#xff0c;用于评估调查问卷的信度和效度。信度指的是调查问卷在不同时间或者不同环境下的一致性&#xff0c;效度指的是调查问卷对于衡量目标变量的准确性和有效性。 通常&#xff0c;在使用MSQ之前&#xff0c;需要设计问卷&#xff0c;并收集一定数量的…...