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

news2024/12/23 20:09:40

常用数据库:

数据库(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:用于给查询结果指定别名。

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

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

相关文章

Windows下 influxdb 数据库安装和简单使用

步骤 1:安装 InfluxDB 你可以从 InfluxDB 的 InfluxDB官网winndows二进制安装包下载适用于不同操作系统的 InfluxDB 安装包。在本教程中,我们将介绍在 Windows上安装 InfluxDB 的步骤。 如果所示,可以点击下载windows版本的安卓版&#xff…

VSCode编译器环境下,基于vite+vue调试Cesium

VSCode编译器环境下,基于vitevue调试Cesium 1.创建一个vite项目 以官网作为参考:创建项目 # npm 6.x npm create vitelatest my-vue-app --template vue# npm 7, extra double-dash is needed: npm create vitelatest my-vue-app -- --template vue#…

https页面加载http资源的解决方法

文章目录 1.报错如图2.项目背景3.网上的解决方案4.我的最终解决方案 1.报错如图 2.项目背景 我们的项目采用的全是https请求,而使用第三方文件管理器go-fastdfs,该文件管理器返回的所有下载文件的请求全是http开头的,比如http://10.110.38.25…

计算机组成原理/数据库补充 存储器第四章---虚拟内存

刚刚数据库下课讲了很多有关虚拟内存的东西感觉很多都忘了,现在写这篇文章来复习一下 为什么要引入虚拟内存 在计算机系统中,多个进程共享CPU和内存, 如果太多的进程需要过多的内存空间,那么其中一部分进程就会无法或得足够得空…

2023年网络安全比赛--Windows渗透测试中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.通过本地PC中渗透测试平台Kali对服务器场景20221219win进行系统服务及版本扫描渗透测试,并将该操作显示结果中1433端口对应的服务版本信息作为Flag值(例如3.1.4500)提交; 2.通过本地PC中渗透测试平台Kali对服务器场景202212…

chatgpt智能提效职场办公-ppt怎么全屏

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 在PowerPoint中,可以通过以下几种方法将演示文稿切换到全屏模式: 方法1:按F5键 在编辑演示文稿的状…

基于LS1028 TSN 交换机硬件系统设计与实现(二)

3.1 LS1028A 芯片研究 目前市面上支持 TSN 系统的芯片较少,其中两家较大的公司之一博通 ( Broadcom ) 2017 年推出了 StrataConnect BCM53570 系列的以太网交换机,该系 列支持的新技术旨在帮助用户应对物联网、汽车网络和…

mybatis的原理详解

mybatis的原理详解 原理图 执行的原理图如下图所示&#xff1a; 配置文件分析 config.xml: <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.or…

PTA L1-091 程序员买包子 (10 分)

这是一条检测真正程序员的段子&#xff1a;假如你被家人要求下班顺路买十只包子&#xff0c;如果看到卖西瓜的&#xff0c;买一只。那么你会在什么情况下只买一只包子回家&#xff1f; 本题要求你考虑这个段子的通用版&#xff1a;假如你被要求下班顺路买 N N N 只包子&#x…

华为云上云实践(二):Linux 环境下对云硬盘 EVS 的创建、挂载和初始化

本文主要讲解华为云云硬盘 EVS 的在 Linux 操作系统 EC2 服务器上创建、挂载及云硬盘初始化等基本操作&#xff0c;快速掌握华为云云硬盘 EVS 操作方法。 How to attach new Huawei EVS Volume 文章目录 一、前言二、环境准备与造作步骤2.1 本文实践操作的环境2.2 本文实践操作…

基础数据结构------单链表

1、链表使用的解决方案 【链表的概述】 链表是一种物理存储单元上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点&#xff08;链表中每一个元素称为结点&#xff09;组成&#xff0c;结点可以在运行时动态生成。…

从MySQL小表驱动大表说起

刚刚开始学习MySQL的时候&#xff0c;连表查询直接使用left join或者更粗暴点&#xff0c;两个表直接查询&#xff0c;where过滤条件&#xff0c;组装笛卡尔积&#xff0c;最终出现自己想要的结果。 当然&#xff0c;现在left join也是会用的&#xff0c;毕竟嘛&#xff0c;方便…

如何实现多存储文件传输,镭速提供多存储文件传输解决方案

目前的文件传输系统中&#xff0c;大多数采用的文件传输系统只支持单个的存储。随着科技的发展&#xff0c;存储的类型越来越多&#xff0c;构建的越来越复杂&#xff0c;业务要求越来越多样化&#xff0c;只支持单个存储的文件传输系统是无法满足现有的需求。 为实现高自由度…

Java基础(十九):集合框架

Java基础系列文章 Java基础(一)&#xff1a;语言概述 Java基础(二)&#xff1a;原码、反码、补码及进制之间的运算 Java基础(三)&#xff1a;数据类型与进制 Java基础(四)&#xff1a;逻辑运算符和位运算符 Java基础(五)&#xff1a;流程控制语句 Java基础(六)&#xff1…

vue3新的组件

1.Fragment - 在Vue2中: 组件必须有一个根标签 - 在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在一个Fragment虚拟元素中 - 好处: 减少标签层级, 减小内存占用 没有写根标签&#xff0c;也没有报错&#xff0c;如果是在v2中&#xff0c;我们还需要用一个div来包裹它 …

springboot web项目统一时区方案

背景 springboot项目国际化中&#xff0c;会遇到用户选择的时间和最终存到数据库的时间不一致&#xff0c;可能就是项目开发和部署时的时区没有处理好&#xff0c;导致时间转换出现了问题。 先了解时区都有哪些&#xff1a; 1.GMT&#xff1a;Greenwich Mean Time 格林威治…

移动端适配方法:rem+vw

1.百分比设置:几乎不用 因为各种属性百分比参照物(自身/父元素/...需要去查文档)很难统计固定,所以不用百分比进行适配 2.rem单位动态html的font-size 使用rem,因为rem参考html的fz,只需要在不同的屏幕上设置不同的html的fz即可,其他地方全用rem rem的fz尺寸 媒体查询 编写…

推荐系统召回之userCF

基于用户的协同过滤算法userCF 1.1 相似度计算 通过计算用户之间的相似度。这里的相似度指的是两个用户的兴趣相似度。 假设对于用户u uu和v vv&#xff0c;N ( u ) N(u)N(u)指的是用户u uu喜欢的物品集合&#xff0c;N ( v ) N(v)N(v)指的是用户v vv喜欢的物品集合&#xff0…

体验 Kubernetes Cluster API

体验 Kubernetes Cluster API 什么是 Kubernetes Cluster API安装 Kind增加 ulimit 和 inotify创建 Kind 集群安装 clusterctl CLI 工具初始化管理集群创建一个工作负载集群访问工作负载集群部署一个 CNI 解决方案安装 MetalLB部署 nginx 示例清理(参考)capi-quickstart.yaml 文…

C++的类和对象(2)

类和对象 1.类对象模型1.1. 如何计算类对象的大小1.2. 类的存储模式讨论1.3. 类对象的空间符合结构体对齐规则 2. this指针2.1. this指针的引出2.2. this指针的特性2.3.面试题2.4. C语言和C实现栈的对比 1.类对象模型 1.1. 如何计算类对象的大小 class A { public: void Prin…