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

【数据库多表操作】sql语句基础及进阶

常用数据库:

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它是长期存储在计算机内、有组织、有结构的数据集合。数据库是信息系统的核心部分,现代软件系统中大量采用了数据库管理系统(DBMS)来管理和操作数据。

  • MySQL/MariaDB:由于其开源免费和社区支持,成为了最流行的关系型数据库之一。
  • Oracle:商业数据库,广泛用于企业级应用。
  • Microsoft SQL Server:商业数据库,主要运行在 Windows 操作系统上,广泛用于企业级应用。
  • PostgreSQL:开源免费的关系型数据库,具有高级特性,例如事务、联接和触发器。
  • IBM DB2:商业数据库,主要运行在 IBM 的操作系统上,如 AIX、IBM i 和 z/OS 等。
  • SQLite:开源免费的嵌入式数据库,可以嵌入到其他应用程序中使用。
  • MongoDB:非关系型数据库,主要用于存储非结构化数据,具有高扩展性和灵活性。

平时最常见的是MySQL数据库,是一个流行的关系型数据库管理系统,是开放源代码的。它支持各种操作系统,并提供了一组丰富的工具和库,用于处理大量的数据。MySQL 使用 SQL 语言来管理和查询数据。本文以MySQL数据库为例,讲解数据库表与表的连接操作。

简单数据库连接

在数据库中,有多种连接(Join)的方式可以使用,其中最常见的包括:内连接,左连接,右连接,外连接。

首先创建两个表t1,t2,表结构如下图所示:
在这里插入图片描述
在这里插入图片描述
sql语句如下:

use student;
create table t1(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT);create table t2(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),address VARCHAR(50));insert into t1 value(1,"张三",52);
insert into t1 value(2,"王五",25);
insert into t1 value(3,"李四",36);
insert into t2 value(1,"张三","陕西");
insert into t2 value(2,"王五","北京");
insert into t2 value(3,"李四","山东");
insert into t2 value(4,"老王t1","河南");

笛卡尔积(Join)

笛卡尔积是指将两个表中的每一行都进行组合,生成一个新的表。新表的行数等于两个原表行数的乘积。

SELECT *  FROM t1, t2;   or
select * from t1 join t2

结果如下所示:
在这里插入图片描述

内连接(Inner Join)

它只返回两个表中都有匹配的行。具体来说,它只返回左边表和右边表都满足条件的记录。

select * from t1 inner join t2 on t1.id = t2.id;

结果如下:
在这里插入图片描述

左连接(Left Join)

它返回左边表的所有记录,以及右边表中与左边表匹配的记录。如果右边表中没有匹配的记录,则以 NULL 值填充。

select * from t2 left join t1 on t1.id = t2.id

结果如下所示
在这里插入图片描述
t1表中没有老王,所以t1表中老王的属性设为NULL。
右连接(Right Join)

它返回右边表的所有记录,以及左边表中与右边表匹配的记录。如果左边表中没有匹配的记录,则以 NULL 值填充。

select * from t1 right join t2 on t1.id = t2.id

和左连接基本一样,返回t2表中所有值,t1表中老王的属性设为NULL。
外连接(union)

它包含左连接和右连接,以及一些没有匹配的记录。它分为左外连接和右外连接,左外连接返回左边表的所有记录和右边表中与左边表匹配的记录,右外连接返回右边表的所有记录和左边表中与右边表匹配的记录。

SELECT *
FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT *
FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
WHERE t1.id IS NULL;

在这里插入图片描述
子表查询

子查询是指在查询语句内部使用另一个完整的 SELECT 语句,子查询一般嵌套在 WHERE 子句中,作为过滤条件。子查询常常用于获取符合某些条件的数据行。

例如,假设有一个学生表 student 和一个成绩表 score,现在要查询出所有及格的学生的信息,可以使用子查询实现,如下:

SELECT *
FROM student
WHERE id IN (SELECT id FROM score WHERE score >= 60);

在这个查询中,内部的子查询 SELECT id FROM score WHERE score >= 60 返回了所有及格的学生的 id,然后外部的查询根据这些 id 查询出对应的学生信息。

concat
数据库中的concat()函数可以用来连接两个或多个字符串,在MySQL中,它的语法如下:

concat(str1,str2,...)

用t1和t2表举个例子

select concat(id,' ',name) as fullname from t1;

这个查询会将t1表里的id和name属性拼接起来连成一个字符串,并将结果显示在名为fullname的新列中,结果如下:
在这里插入图片描述
总结
这里总结一下sql语句中常用的关键字,如果能灵活在数据库中使用会很方便。

  1. SELECT:用于查询数据库中的数据。
  2. FROM:指定数据表。
  3. WHERE:用于筛选符合条件的记录。
  4. GROUP BY:将查询结果按照指定的列进行分组。
  5. HAVING:对分组后的结果进行筛选。
  6. ORDER BY:对查询结果进行排序。
  7. JOIN:用于连接两个或多个数据表。
  8. UNION:用于合并两个或多个SELECT语句的结果集。
  9. DISTINCT:用于返回不同的值,去除重复的记录。
  10. LIKE:用于模糊匹配查询。
  11. IN:用于指定一组值。
  12. NOT:用于否定一个条件。
  13. EXISTS:用于判断一个子查询是否返回数据。
  14. CONCAT:用于将两个或多个字符串拼接起来。
  15. SUM、AVG、COUNT、MAX、MIN:用于对查询结果进行聚合计算。
  16. AS:用于给查询结果指定别名。

相关文章:

【数据库多表操作】sql语句基础及进阶

常用数据库: 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它是长期存储在计算机内、有组织、有结构的数据集合。数据库是信息系统的核心部分,现代软件系统中大量采用了数据库管理系统(DBM…...

DPDK和RDMA的区别

网络的发展好像在各方面都是滞后于计算和存储,时延方面也不例外,网络传输时延高,逐渐成为了数据中心高性能的瓶颈。因为传统两个节点间传输数据的网络路径上有大量的内存拷贝,导致网络传输效率低下,网络数据包的收发处…...

体验 Google Bard

环境 windows 10 64bitGoogle Bardpython 3.8 简介 本篇介绍一个开源的 Google 聊天机器人Bard 的 API 逆向工程,使用它,可以免费的使用 Bard 服务,项目地址:https://github.com/acheong08/Bard 安装及使用 通过 pip 来安装 pip &…...

MITA触摸屏维修WP4053米塔工控机控制屏维修

MITA-TEKNIK米塔触摸屏维修工控机工控屏控制器维修DISPLAY 2COM全系列型号 Mita-Teknik触摸屏维修常见故障:上电无显示,运行报故障,无法与电脑通讯,触摸无反应,触控板破裂,触摸玻璃,上电黑屏&a…...

Nacos简介 安装 配置

简介 什么是注册中心 注册中心在微服务项目中扮演着非常重要的角色,是微服务架构中的纽带,类似于通讯录,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,…...

五、MyBatis各种查询功能

MyBatis的各种查询功能 如果查询出的数据只有一条,可以通过 实体类对象接收List集合接收Map集合接收 如果查询出的数据有多条,一定不能用实体对象接收,会抛TooManyResultsException,可以通过 实体类类型的List集合接收Map类型…...

uni-app——picker组件的用法、时间、日期、地区选择器等

1、uniapp–picker组件 <template><view class"signUp"><view class"signUp_dv1"><u-form :model"form" ref"uForm" label-width"95px"><u-form-item label"日期" :required"tr…...

什么情况需要考虑 mysql 分表

最近看到公司的其中一个数据库用户表每个月都要几百万的新用户数据增加&#xff0c;目前单表已经是两千多万了。所以找了 DBA 讨论&#xff0c;发现以前学的知识&#xff0c;以及网上的一些资料其实说的并不是很正确&#xff0c;比如 mysql 单表不建议超过一千万&#xff0c;我…...

系统架构师02-架构设计 20分

1.架构基本概念 *质量属性效用树&#xff1a;是对系统质量属性进行识别和优先级排序的重要工具 。 包括&#xff1a; 性能&#xff1a;效率指标&#xff0c;处理任务所需时间或单位时间内的处理量。 可用性&#xff1a; 可靠性&#xff1a; 容错&#xff1a;出现错误后人能保…...

【python视图3】networkx图操作示例

一、说明 根据定义&#xff0c;图是节点&#xff08;顶点&#xff09;以及已识别的节点对&#xff08;称为边、链接等&#xff09;的集合。在 NetworkX 中&#xff0c;节点可以是任何可哈希对象&#xff0c;例如文本字符串、图像、XML 对象、另一个图形、自定义节点对象等。 如…...

网络地址转换应用

如图所示,企业使用一台AR 路由器作为出口设备,路由器配置NAT Outbound为私网用户提供访问Internet服务,同时配置NAT Server将私网WEB服务器发布到公网上,对外网用户提供服务。运营商仅为该单位分配了一个公网IP,此地址既作为AR出接口的IP地址,也作为NAT Outbound和NAT Se…...

强化学习-Double DQN、竞争网络结构和Rainbow(第4章)

来源书籍&#xff1a; TENSORFLOW REINFORCEMENT LEARNING QUICK START GUIDE 《TensorFlow强化学习快速入门指南-使用Python动手搭建自学习的智能体》 著者&#xff1a;[美]考希克巴拉克里希南&#xff08;Kaushik Balakrishnan&#xff09; 译者&#xff1a;赵卫东 出版…...

Unity 性能优化锦集

Unity作为一款主流的游戏开发引擎&#xff0c;不仅提供了强大的编辑器和开发工具&#xff0c;还可以让开发者轻松地实现高质量的3D游戏。但是&#xff0c;随着游戏规模的不断扩大和玩家需求的增加&#xff0c;游戏的性能问题也变得越来越重要。因此&#xff0c;在使用Unity进行…...

JS之Map的基本使用

一、Map的基本API 创建&#xff1a; const map new Map()插入&#xff1a;map.set("name", "郑建")读取&#xff1a;map.get("name")判断&#xff1a;map.has("name")删除&#xff1a;map.delete大小&#xff1a;map.size遍历&#…...

音视频八股文(6)-- ffmpeg大体介绍和内存模型

播放器框架 常用音视频术语 • 容器&#xff0f;文件&#xff08;Conainer/File&#xff09;&#xff1a;即特定格式的多媒体文件&#xff0c; 比如mp4、flv、mkv等。 • 媒体流&#xff08;Stream&#xff09;&#xff1a;表示时间轴上的一段连续数据&#xff0c;如一 段声音…...

4.25~~~~~

接着之前PE文件结构的预习 DOS 定位到NT 怎么操作的&#xff1f; 用的是e_lfanew&#xff0c;然后是相对于文件头的偏移量&#xff08;也就是raw表示方法&#xff09; 现在有个问题&#xff0c;为什么e_lfanew 这个变量不直接存储PE头 的绝对地址呢&#xff1f; 比如说&…...

Android 9.0 系统设置显示主菜单添加屏幕旋转菜单实现旋转屏幕功能

1.前言 在android9.0的系统rom定制化开发中,在对系统设置进行定制开发中,有产品需求要求增加旋转屏幕功能的菜单,就是在点击旋转屏幕菜单后弹窗显示旋转0度,旋转 90度,旋转180度,旋转270度针对不同分辨率的无重力感应的大屏设备的屏幕旋转功能的实现,接下来就来分析实现…...

Python数据结构与算法-欧几里算法(p95)

一、欧几里算法原理 欧几里得公式 欧几里得算法&#xff1a;gcd(a,b) gcd(b, a mod b) &#xff1b; mod是指模&#xff0c;即a/b取余数。 运算示例&#xff1a; gcd&#xff08;60,21&#xff09; gcd(21,18) gcd(18,3)gcd(3,0) 证明略 最大公约数-欧几里得求解 &#xff08…...

【故障诊断】用于轴承故障诊断的性能增强时变形态滤波方法及用于轴承断层特征提取的增强数学形态算子研究(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …...

水羊转债,超达转债,晓鸣转债上市价格预测

水羊转债 基本信息 转债名称&#xff1a;水羊转债&#xff0c;评级&#xff1a;A&#xff0c;发行规模&#xff1a;6.94987亿元。 正股名称&#xff1a;水羊股份&#xff0c;今日收盘价&#xff1a;13.94元&#xff0c;转股价格&#xff1a;13.71元。 当前转股价值 转债面值 /…...

leetcode思路-236 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它自己的…...

模型加速全景图:从“瘦身”到“飞驰”的知识图谱

文章目录知识图谱&#xff1a;模型加速的三大维度维度一&#xff1a;模型自身优化&#xff08;让模型更“瘦”&#xff09;维度二&#xff1a;计算过程优化&#xff08;让计算更“顺”&#xff09;维度三&#xff1a;硬件与系统优化&#xff08;让硬件更“忙”&#xff09;如何…...

JMeter断言实战:从误配到分层校验的避坑指南

1. 为什么断言不是“加个检查框”就完事了&#xff1f;很多人第一次在 JMeter 里点开“添加 → 断言 → 响应断言”&#xff0c;填上“包含文本&#xff1a;success”&#xff0c;跑完看绿色小勾就以为接口测试闭环了。我带过三届测试团队&#xff0c;新同事交来的脚本里&#…...

3个理由告诉你:为什么Notepad2-mod是你开启开源贡献的最佳起点

3个理由告诉你&#xff1a;为什么Notepad2-mod是你开启开源贡献的最佳起点 【免费下载链接】notepad2-mod LOOKING FOR DEVELOPERS - Notepad2-mod, a Notepad2 fork, a fast and light-weight Notepad-like text editor with syntax highlighting 项目地址: https://gitcode…...

安卓上架权限弹窗

https://ask.dcloud.net.cn/article/41194 直接这个网站看&#xff0c;但是要注意&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;真机运行的时候&#xff0c;改了manifest.json的配置要重新打基座...

RISC-V指令类型及核心功能解析

RV32I指令集通过六种基本指令格式&#xff08;R、I、S、B、U、J&#xff09;实现其核心功能&#xff0c;其中U型指令主要用于长立即数加载&#xff0c;而R、I、S、B、J型指令则承担了计算、访存、控制流等关键操作。根据博客内容提供的指令映射表&#xff08;表2.3&#xff09;…...

android使用websocket

简单来说常用的okhttp库就能用websocket了------------------------------------在 Android 上使用 WebSocket&#xff0c;你有几个常用选择&#xff0c;每个选择对应不同的库和集成方式。下面我帮你梳理清楚&#xff1a;1️⃣ 推荐库&#xff1a;OkHttpOkHttp 是 Android 官方…...

2026年10款降AI率网站横评:最高AI率100%直降至0.12%

2026年全球学术界对AIGC内容的监管持续收紧&#xff0c;论文查重与AI痕迹检测标准迎来全面升级&#xff0c;高校及科研机构纷纷引入更精准的检测系统&#xff0c;导致学术不端行为面临更严苛的审查。在此背景下&#xff0c;论文降AI工具市场需求激增&#xff0c;用户规模在半年…...

AMD Ryzen SMU Debug Tool完整指南:轻松掌握硬件级调试的5个关键步骤

AMD Ryzen SMU Debug Tool完整指南&#xff1a;轻松掌握硬件级调试的5个关键步骤 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地…...

Internet Archive Downloader终极指南:三步永久保存数字图书馆书籍

Internet Archive Downloader终极指南&#xff1a;三步永久保存数字图书馆书籍 【免费下载链接】internet_archive_downloader A chrome/firefox extension that download books from Internet Archive(archive.org) and HathiTrust Digital Library (hathitrust.org) 项目地…...