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

MySQL数据库表的增删查改 - 进阶

一,数据库约束

1.1 约束对象

  • not  null  -  该列不能为空
  • unique  -  保证该列的每一行都不一样
  • default  -  规定没有给列赋值时的默认值(自定义)
  • primary  key  -  not  null  和  unique  的结合,会给该列添加一个索引,提高查询速度
  • foreign  key  -  保证一个表中的数据匹配另一个表的数据
  • check  -  保证列中的值符合指定的条件,对于MySQL数据库,堆check字句进行分析,但忽略check子句

1.2 null 约束

创建表时,指定某列不为空。 

1.3 unique 

保证该列的每一个值都是唯一的,即该列没有重复值。 

1.4 default

如果该列没有被赋值,那么就会赋值为 default 后面的值:

 1.5  primary   key - 主键约束

主键同时具有 not null 与 unique 的特点,还可以搭配 自增长auto_increment 来使用(插入字段不赋值时,使用最大值+1,有点类似于JAVA中的枚举)。

 注:auto_increment 只能作用于整数类型!!!!

1.6 foreign key - 外键约束

外键用于关联其他表的主键或唯一键,语法:

foreign  key  (字段名)  references  主表(列名)

表示 class_id 与 id 联系起来,添加的class_id必须存在于id中,否则添加失败,即 子表必须依赖父表 。并且不能单独删除 class 表,想删除class表必须先删除student表,因为要是先删除class表,那么student表中 class_id列就没有参考了。

1.7 check 约束

MySQL使用时不报错,但忽略该约束

二,表的设计 

  •  一对一  :类似于人与身份证号,一个人只能有一个身份证号
  • 一对多   :类似于班级与学生,一个班级可以有很多的学生
  • 多对多   :类似于学科与学生与老师

 三,新增

insert  into  表名 【列名....】 select .... 

四,查询 

4.1 聚合查询

4.1.1 聚合函数

函数说明
count (【distinct】列名)返回查询到的数据的  数量
sum (【distinct】列名)返回查询到的数据的  总和
avg (【distinct】列名)返回查询到的数据的  平均值
max (【distinct】列名)返回查询到的数据的  最大值
min (【distinct】列名)返回查询到的数据的  最小值
  • count

 注:count(*) 与 count(0) 效果一样!!!

  • sum

  • avg

  • max

  • min

注:当遇到null时,聚合函数不会理会,即不会让null进行运算!!! 

4.1.2 group  by 字句

分组查询:将表中的数据按照列进行分组,必须和聚合函数一起使用,例如:将一个班的学生分成一组。

select  column1,sum(column2),...... from table  group  by  column3...

 4.1.3 having

group by 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 where 语句,而需要用 having

 4.2 联合查询

实际开发中我们所要的数据往往来自不同的表中,所以需要多表联合查询,要了解联合查询,就要先了解笛卡尔积,简单来说就是将多个表排列组合形成一张新的表,然后再根据表之间的联系(比如之前讲的 primary key 与 foreign key 的联系)以及我们的需求筛选出我们要查找到内容。但是需要注意的是,这种操作一般能不用就不用,因为要查找的内容过于庞大,会导致服务器阻塞(当然在自己的库试试没事,毕竟没多少数据)

  • 内连接

两种写法:

select  column... from 表1  join  表2  on  条件1   and  条件2...;

select  column... from 表1 ,表2...  where  条件1   and  条件2...;

//可以使用别名

 

  • 外连接

select  column... from 表1  left/right join  表2  on  条件1   and  条件2...;

画个图看一看内连接与外连接的区别:

 

  • 自链接

顾名思义就是指同一张表连接自身进行查询

 

  • 子查询

简单来说就是 select 和 select 可以套用 

例如:

select  *  from  student  where  class_id = (select  class  from  student  where  id  in(1,2,3)); 

  • 合并查询

 在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all。使用union 和 union all 时,前后查询的结果集中,字段需要一致.

例如:

select  *  from  stduent  where  age  <  20  union / union all  select  *  from student  where id < 10;

union 可以自动去重,union all 不去重。

相关文章:

MySQL数据库表的增删查改 - 进阶

一&#xff0c;数据库约束 1.1 约束对象 not null - 该列不能为空unique - 保证该列的每一行都不一样default - 规定没有给列赋值时的默认值&#xff08;自定义&#xff09;primary key - not null 和 unique 的结合&#xff0c;会给该列添加一个索引&#xff0…...

8086汇编语言工作环境 百度网盘下载

链接&#xff1a;https://pan.baidu.com/s/1-1K7gX859xejaUK70OTgtw?pwdbfa5 提取码&#xff1a;bfa5 为了方便下载&#xff0c;找了很多资料&#xff0c;也是从其他人那边分享过来的&#xff0c;也方便其他人 文件内容&#xff1a;...

ES6 解构

解构的语法 … {} 解构的语法中&#xff0c;...&#xff08;展开运算符&#xff09;和 {}&#xff08;对象字面量&#xff09;扮演着不同的角色。 ...&#xff08;展开运算符&#xff09;&#xff1a; 在解构中&#xff0c;... 被用作展开运算符&#xff0c;用于将数组或对象中…...

React三个状态时触发的相应钩子

01.初始化状态。 这个阶段由render&#xff08;&#xff09;函数触发&#xff1b; 1.constructor(); 2.componentWillMount(); 在17版本以后改为UNSAFE_componentWillMount() reason&#xff1a;react为组件异步渲染做准备&#xff1b; 3.render(); 4.componentDidMount(); 这…...

阿里云服务器部署Drupal网站教程基于CentOS系统

阿里云百科分享如何在CentOS 7操作系统的ECS实例上搭建Drupal电子商务网站。Drupal是使用PHP语言编写的开源内容管理框架&#xff08;CMF&#xff09;&#xff0c;它由内容管理系统&#xff08;CMS&#xff09;和PHP开发框架&#xff08;Framework&#xff09;共同构成。它用于…...

【广州华锐视点】VR燃气轮机故障判断模拟演练系统

VR燃气轮机故障判断模拟演练系统由广州华锐视点开发&#xff0c;是一款基于虚拟现实技术的教育工具&#xff0c;旨在为学生提供一个安全、高效、互动的学习环境&#xff0c;帮助他们更好地掌握燃气轮机的故障诊断技能。 这款VR实训软件能够模拟真实的燃气轮机故障诊断场景&…...

第01天 什么是CSRF ?

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 每天一个知识点 ✨特色专栏&#xff1…...

uniapp 自定义手机顶部状态栏不生效问题

想要的效果想淘宝一样&#xff0c;底色覆盖到手机顶部&#xff0c;找了两天都没找到原因&#xff0c;过程很艰苦&#xff0c;直接上结果吧 项目是后来接手的&#xff0c;最终原因出在这&#xff0c; "immersed" : false>设置为 true 就可以了&#xff0c;沉浸式样…...

C++语法中bitset位图介绍及模拟实现

一、位图的引入 先来看下边一道面试题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中。 经过我们之前的学习&#xff0c;我们可能会有以下的思路&#xff1a; 对这些数进行排序&#xff…...

Debezium系列之:深入理解消息过滤,实现过滤数据库删除事件,只采集数据库新增和更新事件

Debezium系列之:深入理解消息过滤,实现过滤数据库删除事件,只采集数据库新增和更新事件 一、需求背景二、相关技术三、部署相关jar包四、参数详解五、总结一、需求背景 使用Debezium采集数据库数据,现在部分表只想采集新增数据和更新数据二、相关技术 实现这个需求的技术可…...

Substack 如何在去中心化内容创作领域掀起波澜

面对数字内容广告化的困境&#xff0c;Substack回归做内容的初心&#xff0c;通过产品和平台双轮驱动&#xff0c;重塑一个去中心化的多元文化内容聚集地&#xff0c;实现了增长突破。其核心策略在于先使用简洁的创作工具赋能内容生产&#xff0c;进而通过平台的互动机制促进用…...

【MFC】07.MFC六大机制:消息映射-笔记

本专栏上两篇文章分别介绍了【MFC】05.MFC第一大机制&#xff1a;程序启动机制和【MFC】06.MFC第二大机制&#xff1a;窗口创建机制&#xff0c;这篇文章来为大家介绍MFC的第三大机制&#xff1a;消息映射 typfd要实现消息映射&#xff0c;必须满足的三个条件&#xff1a; 类必…...

python操作数据库

python操作数据库 首先安装数据插件 pip install pymysqlfrom pymysql import Connection # 引入数据库第三方包# 创建链接 conn Connection(host"localhost", # 主机名ipport3306,user"root",# 用户名password"123456" # 密码 )print(con…...

【C语言】小游戏-三字棋

大家好&#xff0c;我是深鱼~ 目录 一、游戏介绍 二、文件分装 三、代码实现步骤 1.制作简易游戏菜单 2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑随机下棋 6.判断输赢 7.判断棋盘是否满了 四、完整代码 game.h(相关函数的声明&#xff0c;整个代码要引用的头文件以及宏…...

多线程与并发编程面试题总结

多线程与并发编程 多线程 线程和进程的区别&#xff1f; 从操作系统层面上来讲&#xff1a;进程(process)在计算机里有单独的地址空间&#xff0c;而线程只有单独的堆栈和局部内存空间&#xff0c;线程之间是共享地址空间的&#xff0c;正是由于这个特性&#xff0c;对于同…...

在多页面应用和单页面应用中(例如vue)怎么提高seo搜索引擎优化

那么 我们要先知道 搜索引擎是怎么工作的&#xff1f; 搜索引擎是通过一系列步骤来工作的&#xff0c;以下是其基本原理&#xff1a; 1、网络爬虫&#xff1a;搜索引擎使用网络爬虫&#xff08;也称为蜘蛛、机器人&#xff09;来从互联网上抓取网页。网络爬虫按照预定义的规则…...

Dubbo 2.7.0 CompletableFuture 异步

了解Java中Future演进历史的同学应该知道&#xff0c;Dubbo 2.6.x及之前版本中使用的Future是在java 5中引入的&#xff0c;所以存在以上一些功能设计上的问题&#xff0c;而在java 8中引入的CompletableFuture进一步丰富了Future接口&#xff0c;很好的解决了这些问题。 Dubb…...

pytest-xdist分布式测试原理浅析

目录 pytest-xdist执行流程&#xff1a; pytest-xdist 模块结构&#xff1a; pytest-xdist分布式测试原理&#xff1a; pytest-xdist源码浅读&#xff1a; pytest-xdist执行流程&#xff1a; 解析命令行参数&#xff1a;pytest-xdist 会解析命令行参数&#xff0c;获取用户…...

研发工程师玩转Kubernetes——PVC通过storageClassName进行延迟绑定

不同的PV可以使用相同的StorageClass&#xff0c;它们是一对多的关系。 PV可以设置节点亲和性。比如下图&#xff0c;local-storage-class-waitforfirstconsumer-pv-ubuntuc只能在节点ubuntuc上&#xff1b;local-storage-class-waitforfirstconsumer-pv-ubuntud只能在节点ubu…...

6.利用matlab完成 符号矩阵的秩和 符号方阵的逆矩阵和行列式 (matlab程序)

1.简述 利用M文件建立矩阵 对于比较大且比较复杂的矩阵&#xff0c;可以为它专门建立一个M文件。下面通过一个简单例子来说明如何利用M文件创建矩阵。 例2-2 利用M文件建立MYMAT矩阵。(1) 启动有关编辑程序或MATLAB文本编辑器&#xff0c;并输入待建矩阵&#xff1a;(2) 把…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)

起因 为了实现在报销流程中&#xff0c;发票不能重用的限制&#xff0c;发票上传后&#xff0c;希望能读出发票号&#xff0c;并记录发票号已用&#xff0c;下次不再可用于报销。 基于上面的需求&#xff0c;研究了OCR 的方式和读PDF的方式&#xff0c;实际是可行的&#xff…...

StarRocks 全面向量化执行引擎深度解析

StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计&#xff0c;相比传统行式处理引擎&#xff08;如MySQL&#xff09;&#xff0c;性能可提升 5-10倍。以下是分层拆解&#xff1a; 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...