mysql中表的设计

我们可以根据实际的需求场景,明确当前要创建几个表,每个表内部有什么,这些表之中哪些表是存在着一定联系的.

先梳理清楚需求看需要哪些表,表里面需要哪些内容

再确定好表与表之间的"关系"

表与表之间的关系有:

一对一

一个学生只能拥有一个账号.一个账号也只能披一个学生拥有

student-account(studentld, name,)
 

一对多

一个学生,只能在一个班级中,一个班级,可以包含多个学生

class (id, name)
1    一班

student(id, name, classld)
1  张三  1
2 李四 1
3 王五  1

多对多

一个学生,可以选择多门课程.—门课程,也可以包含多个学生.

student-course(studentld, courseld,name)
1  1   张三选了语文课
1   2   张三选了数学课
2  1   李四选了语文课
2   3   李四选了英语课

上述都属于设计数据库表结构的固定套路.

聚合查询

增加数据

查询可以搭配插入使用,把查询语句的查询结果,作为插入的数值

总和查询
 

表达式查询,是针对列和列之间进行运算的
聚合查询,相当于是在行和行之间进行运算了.
注:

sql中可以通过--表示注释--后头至少要有一个空格.

另外也支持#开头作为注释

先执行select*,再针对结果集合进行统计(看看具体有几行)

直接查询时也可以查看具体有多少行,为什么还要使用count(*)???

因为这是mysql客户端内置的功能,
如果你是通过代码来操作mysql服务器可就没有这个功能

count(*)得到的结果还可以参与各种算术运算,还可以搭配其他sql使用.

1)如果当前的列里面有null
两种方式计算的count就不同了.

 select count(*) from 表名;

2)指定具体列,是可以进行去重的

 select count(distinct 列名) from 表名;



.

求合查询

把这一列的若干行,给进行求和.(算术运算)只能针对数字类型使用.

1.select chinese + math 把对应的列相加,得到一个临时表
2.在把这个临时表的结果进行行和行相加.

分组查询

使用group by进行分组,针对每个分组,再分别进行聚合查询.
针对指定的列进行分组,把这一列中,值相同的行,分成到一组中,得到若干个组,针对这些组,分别使用聚合函数
统计同名的人有多少

使用group by还可以搭配其他条件

需要区分清楚,该条件是分组之前的条件,还是分组之后的条件

分组之前的where一般都是在分组之前的,并且其在gruop by之前

分组之后的条件使用having 描述条件.having子句一般写在group by 的后面

联合查询

联合查询是同时对多个针对多个表来进行的查询。

要想明白联合查询就要先理清笛卡尔积在这的作用。

class (id,name)          student ( id,  name,    class_ld)

1  1班                                         1  张三       1                                                                                    

2  2班                                        2  李四         2

3  3班                                       3   王五         3

将这两个表进行笛卡尔积,会得到一个更大的表。

笛卡尔积的列数,是这两个表的列数相加.笛卡尔积的行数,是这两个表的行数相乘.

id,       name      id ,     name,    class_ld

1       1班             1       张三       1       

1       1班             2       李四       2

1       1班             3       王五      3        

类似不完全的表(只写出了class表的第一行于student表的组合 )

从上表中可以看出,数据有一些不符合实际情况的数据,比如第二行和第三行数据无法使用,因为他两不可能同时是两个班的学生。

所以进行多表查询的时候,就需要把有意义的数据筛选出来,无意义的数据,排除掉


如何通过 sql的条件筛选出来呢??

就需要将两个表中数据相关联的数据进行连接如下

where班级表的id =学生表的class_ld

建议使用表明.列名   可读性强

还可以只查询张三的信息

只查询张三部分信息



上面这些操作都是基于"内连接"
mysql来说,进行联合查询,还可以使用"外连接"(左外连接,右外连接)

如果这两个表,里面的记录都是存在对应关系,内连接和外连接的结果是一致的.如果存在不对应的记录,内连接和外连接就会出现差别.

内连接

逗号换成 join一样

             


 

左外连接

left join

左外连接,就是以左侧表为基准,保证左侧表的每个数据
都会出现在最终结果里.如果在右侧表中不存在,对应的列就填成null

-
右外连接

right join


右外连接,是以右侧表为基准,保证右侧表的每个数据
都会出现在最终结果里.如果左侧表中不存在,对应的列就填成null

自连接.一张表,自己和自己进行笛卡尔积.
有的时候,需要去进行行和行之间的比较

而sql只能进行列和列之间比较

sql里写个条件,都是列和列之间进行比较
但是有的时候可能会涉及到需求是进行行和行比较.
就可以使用自连接,把行的关系转换成列的关系

查找出谁的1课程的成绩高于3课程的成绩

注:自连接必修要进行起别名。

子查询

子查询:本质上是在"套娃"
把多个简单的SQL拼成一个复杂的SQL

现在查找和躺平的同班同学中想考研的人


中间括号是必修返回一行数据否则会报错

这就是单行子查询。

现在查找和考研的同班同学中不想考研的人

这就是多行子查询。

合并查询        

把多个sql查询的结果集合,合并到一起.
union关键字

 

允许把两个不同的表,查询结果合并在一起.合并的两个sql的结果集的列,需要匹配.
列的个数和类型,是要一致的(列名不需要一致)
合并的时候,是会去重的
要是不想去重,可以使用union all
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软考】哈希表

目录 一、概念1.1 定义 二、哈希函数的构造方法2.1 说明2.2 特性 三、处理冲突的方法3.1 说明3.2 开放定址法3.2.1 说明3.2.2 线性探测 3.3 链地址法3.4 再哈希法3.5 建立公共溢出区 四、哈希表的查找4.1 查找过程4.2 查找特点4.3 装填因子 一、概念 1.1 定义 1.一般存储结构由…

服务器数据恢复—V7000存储raid5数据恢复案例

服务器数据恢复环境: P740AIXSybaseV7000存储阵列柜,阵列柜上有12块SAS机械硬盘(包括1块热备盘)。 服务器故障: 管理员在日常巡检过程中发现阵列柜中有一块磁盘发生故障,于是更换磁盘并同步数据&#xff0…

大厂面试:找出数组中第k大的数的最佳算法

一.前置条件 假如数组为a,大小为n,要找到数组a中第k大的数。 二.解决方案 1.使用任意一种排序算法(例如快速排序)将数组a进行从大到小的排序,则第n-k个数即为答案。 2.构造一个长度为k的数组,将前k个数复制过来并降序…

一站式解读多模态——Transformer、Embedding、主流模型与通用任务实战(上)

本文章由飞桨星河社区开发者高宏伟贡献。高宏伟,飞桨开发者技术专家(PPDE),飞桨领航团团长,长期在自媒体领域分享AI技术知识,博客粉丝9w,飞桨星河社区ID为GoAI 。分享分为上下两期,本…

数学基础:矩阵

来自: https://www.shuxuele.com/algebra/matrix-determinant.html 一、矩阵的行列式 二、矩阵简单知识 三、矩阵乘法 四、单位矩阵 五、逆矩阵一:简单2阶矩阵求法 六、逆矩阵二:3、4阶逆矩阵求法 6.1 求余子式矩阵 6.2 求代数余子式矩阵 6.3 求伴随矩阵…

AcWing282.石子合并

【题目链接】acwing.com/problem/content/284/ 输入样例&#xff1a; 4 1 3 5 2输出样例&#xff1a; 22 【注意】本题与哈夫曼树做法的区别&#xff0c;哈夫曼树是可以合并任意两堆&#xff0c;而区间DP模型只能合并相邻两堆 【代码及详细注释】 #include<bits/stdc.h…

基于springboot实现美发门店管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现美发门店管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了美发门店管理系统的开发全过程。通过分析美发门店管理系统管理的不足&#xff0c;创建了一个计算机管理美发门店管理系…

postgresql uuid

示例数据库版本PG16&#xff0c;对于参照官方文档截图&#xff0c;可以在最上方切换到对应版本查看&#xff0c;相差不大。 方法一&#xff1a;自带函数 select gen_random_uuid(); 去掉四个斜杠&#xff0c;简化成32位 select replace(gen_random_uuid()::text, -, ); 官网介绍…

vue通过echarts实现数据可视化

1、安装echarts cnpm install echarts -Sechart官方图表示例大全&#xff1a;https://echarts.apache.org/examples/zh/index.html#chart-type-line 2、代码实现 <template><div><div class"box" ref"zhu"></div><div class&…

Ubuntu Desktop 免费的文件 / 目录差异比较工具 (Beyond Compare 为收费软件)

Ubuntu Desktop 免费的文件 / 目录差异比较工具 [Beyond Compare 为收费软件] 1. Installation2. Meld Diff Viewer3. Lock to LauncherReferences Meld - Visual diff and merge tool https://meldmerge.org/ Meld helps you compare files, directories, and version contro…

【MySQL】C# 连接MySQL

C# 连接MySQL 1. 添加MySQL引用 安装完MySQL之后&#xff0c;在安装的默认目录 C:\Program Files (x86)\MySQL\Connector NET 8.0 中查找MySQLData.dll文件。 在Visual Studio 中为项目中添加引用。 2. 引入命名空间 using MySql.Data.MySqlClient;3. 构建连接 private …

DHCP服务器的高可靠、高可用+负载均衡配置

一、适用场景 1、DHCP地址池集中化的管理环境中&#xff08;本例建立了200个C类网24位的地址池&#xff09;&#xff1b; 2、全网仅1台合法的DHCP服务器&#xff08;要是它宕机全部断网&#xff0c;本例旨在提高服务器的可靠性、可用性&#xff0c;双DHCP服务器性能上负载均衡…

mp4转flv怎么转?电脑怎么把视频转成flv?

MP4&#xff08;MPEG-4 Part 14&#xff09;是一种多媒体容器格式&#xff0c;广泛用于包含视频、音频、字幕等多种数据流。MP4因其高度灵活性、压缩效率和兼容性成为视频领域的主流格式&#xff0c;支持范围涵盖从在线视频到移动设备的各类应用场景。 FLV文件格式的多个优点 …

Spring MVC体系结构和处理请求控制器(一)

一、MVC模式 MVC模式是指Model-View-Controller&#xff08;模型-视图-控制器&#xff09;模式&#xff0c;是开发Web应用程序时常用的一种代码分层模式MVC模式是软件工程中的一种架构模式&#xff0c;会强制行的把系统的输入、处理和输出分开&#xff0c;是系统从功能上形成M…

[VMware] 修改参数的一个问题

最近在修改VMware虚拟机的时候遇到一个易用性的问题&#xff0c;比如要给一个VM设置一个参数需要在vSphere里点开设置&#xff0c;打开高级选项&#xff0c;添加配置ethernet0.coalescingScheme比如&#xff1a; 如果想要改的VM个数是十个八个&#xff0c;这种方法也许可以&a…

STM32+ESP8266水墨屏天气时钟:文字取模和图片取模教程

项目背景 本次的水墨屏幕项目需要显示一些图片和文字&#xff0c;所以需要对图片和文字进行取模。 取模步骤 1.打开取模软件 2.选择图形模式 3.设置字模选项 注意&#xff1a;本次项目采用的是水墨屏&#xff0c;并且是局部刷新的代码&#xff0c;所以设置字模选项可能有点…

[计算机效率] 资源管理器辅助工具:Clover、QTTabBar

3.21 资源管理器辅助工具&#xff1a;Clover、QTTabBar Clover是一款非常好用的一款资源管理器辅助工具。其实就是给资源管理器增加一个小功能&#xff1a;tab页面。让资源管理器也能想浏览器一样&#xff0c;就算打开多个文件夹&#xff0c;也只是在新的tab页面上。总算是拯救…

苍穹外卖亮点再梳理 ||

一、项目整体亮点&#xff1a; 【注&#xff1a;基于每个亮点&#xff0c;均有整理的相关知识&#xff0c;可在博客中查看】 1.数据库的设计采用RBAC&#xff08;基于角色访问控制&#xff09;的权限设计。 RBAC将权限授予角色&#xff0c;然后将用户分配给角色&#xff0c;…

MES实施之工控机和电脑的选择

在MES项目实施过程中,经常会碰到工控机和电脑的选型问题,那么他们的区别是什么? 1、控机和普通个人电脑(PC)相比,具有以下几个区别: 1.运行环境不同:工控机通常需要在各种恶劣的工业环境中运行,如高温、高湿、强电磁干扰等,因此需要具有防尘、防水、抗干扰等特点。而…

【优选算法专栏】专题十八:BFS解决拓扑排序--前言

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…