mysql——第二课

news2025/3/26 4:43:49

学生表

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `sex` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `c_id` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `c_id` (`c_id`),
  CONSTRAINT `student_ibfk_1` FOREIGN KEY (`c_id`) REFERENCES `class` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1574588396 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

班级表

CREATE TABLE `class` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `c_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

查询:

询是数据库操作的核心,用于从数据库中检索、插入、更新和删除数据。

-- 从表中选取所有列的数据
SELECT * from student
-- 从表中选取指定列的数据
select name,age,sex FROM student;

 

between:

在 SQL 里,BETWEEN 操作符是一个很实用的工具,主要用于筛选出指定范围内的数据。此范围涵盖数值、日期或者文本等不同类型的数据。

SELECT * from student where age BETWEEN 20 and 100;

 

in:

在 SQL 中,IN 操作符是一个常用的条件筛选工具,它允许你在 WHERE 子句里指定多个值,用于判断某列的值是否包含在给定的值列表中。

select * from student where age in(45,21);
select * from student where id in(1,3);

 

 与或非:

1. AND 运算符

AND 运算符用于在 WHERE 子句中连接多个条件,只有当所有条件都为真时,对应的记录才会被返回。

SELECT *
FROM employees
WHERE department = 'IT' AND salary > 5000;

此查询仅会返回 department 是 IT 并且 salary 超过 5000 的员工记录,也就是 Bob 和 David 的信息。

2. OR 运算符

OR 运算符同样用于在 WHERE 子句中连接多个条件,只要其中任何一个条件为真,对应的记录就会被返回。

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR ...;

该查询会返回 department 为 IT 或者 salary 大于 6000 的员工记录,即 BobCharlie 和 David 的信息。

3. NOT 运算符

NOT 运算符用于对一个条件取反,也就是当条件为假时,对应的记录才会被返回。

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

通过灵活运用 ANDOR 和 NOT 运算符,你能够构建出满足各种需求的复杂查询条件。

ISNULL()函数的使用

ISNULL(expr),如果expr的值为null,则返回1,如果expr1的值不为null,则返回0。

SELECT * from student where age is not null;

 

模糊查找

在 SQL 中,模糊查找是一种强大的功能,允许你在数据库中查找与特定模式匹配的数据,而不是精确匹配。这在处理文本数据时特别有用,比如在搜索功能中。主要通过 LIKE 操作符结合通配符来实现。

通配符

  • 百分号(%:代表零个、一个或多个任意字符。
  • 下划线(_:代表单个任意字符。
  • 方括号([]:用于指定一个字符范围,只适用于部分数据库系统(如 SQL Server)。
  • 脱字符([^ ]:用于排除指定字符范围,同样只适用于部分数据库系统(如 SQL Server)
SELECT * from student where name like"吕_";
SELECT * from student where name like"吕__";
SELECT * from student where name like"吕%";
SELECT * from student where name like"%吕"

 

分页查询

在 SQL 里,LIMIT 是进行分页查询的常用关键字,它能限定查询结果返回的行数,借助 LIMIT 与偏移量,就能实现分页查询。不过不同数据库系统对 LIMIT 的使用方式稍有差异。

-- limit a,b a表示起始索引值 b表示查询个数
-- limt b offset a
SELECT * from student limit 0,5;
SELECT * from student limit 5,5;

 

排序子语句

在 SQL 中,排序子语句通常指的是 ORDER BY 子句,它用于对查询结果集按照一个或多个列进行排序。

-- --  排序子语句
-- order by 列名 desc 降序 asc升序
select * from student order by age desc;
--  where 排序 限制
SELECT *from student where sex="男" ORDER BY age asc limit 0,5

 

聚合函数 分组函数

在 SQL 中,聚合函数和分组函数(通常借助 GROUP BY 子句与聚合函数配合使用)是用于对数据进行汇总和分析的重要工具,

 COUNT()
  • 功能:用于统计记录的数量。
  • 示例:假设有一个 employees 表,要统计员工的数量。
SELECT COUNT(*) FROM employees;
SUM()
  • 功能:用于计算某列数值的总和。
  • 示例:计算 employees 表中所有员工的工资总和。
SELECT SUM(salary) FROM employees;
AVG()
  • 功能:用于计算某列数值的平均值。
  • 示例:计算 employees 表中员工的平均工资。
SELECT AVG(salary) FROM employees;

分组函数(GROUP BY 子句)

GROUP BY 子句用于将查询结果按照一个或多个列进行分组,然后可以对每个组应用聚合函数。

-- 聚合函数 分组函数
-- min() 最小 max()最大 sum()求和 avg() 求平均 count()数量-->count不统计null字段
--  HAVING 子句:如果你需要对分组后的结果进行过滤,应该使用 HAVING 子句而不是 WHERE 子句。WHERE子句在数据分组前进行过滤,而 HAVING 子句在数据分组后对分组的结果进行过滤。
SELECT avg(age),c_id from student  where sex="男" GROUP BY c_id having c_id=1;

添加:

insert into student(name,age,sex) values("赵云",18,"男"); 

 

修改:

UPDATE student set name="诸葛亮",age=100,sex="男" where id=14;

 

删除:

DELETE from student where id=1;
delete from student where id in (5,12,13,4);

多表查询:

-- 重命名 as 新名字 as可省
select s1.*,c1.c_name 班级名称 from student as s1,class c1 where s1.c_id=c1.id

连表查询:

连表查询(也称为连接查询)是 SQL 中一种强大的功能,用于从多个表中检索相关的数据。当数据分散在不同的表中时,通过连表查询可以将这些表中的数据组合起来,以满足特定的查询需求。

1. 内连接(INNER JOIN)

  • 原理:内连接只返回两个表中满足连接条件的行,即只返回两个表中匹配的记录。

2. 左连接(LEFT JOIN 或 LEFT OUTER JOIN)

  • 原理:左连接返回左表中的所有行,以及右表中匹配的行。如果右表中没有匹配的行,则右表的列值将显示为 NULL

3. 右连接(RIGHT JOIN 或 RIGHT OUTER JOIN)

  • 原理:右连接与左连接相反,它返回右表中的所有行,以及左表中匹配的行。如果左表中没有匹配的行,则左表的列值将显示为 NULL

4. 全连接(FULL JOIN 或 FULL OUTER JOIN)

  • 原理:全连接返回两个表中的所有行,无论是否有匹配的行。如果某一行在另一个表中没有匹配的行,则对应的列值将显示为 NULL
SELECT * FROM STUDENT JOIN CLASS ON STUDENT.C_ID=CLASS.ID;
SELECT * FROM STUDENT LEFT JOIN CLASS ON STUDENT.C_ID=CLASS.ID;

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

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

相关文章

Python网络编程入门

一.Socket 简称套接字,是进程之间通信的一个工具,好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行,进程之间要想进行网络通信需要Socket,Socket好比数据的搬运工~ 2个进程之间通过Socket进行相互通讯&a…

arm linux下的读写信号量rw_semphore的实现

本文基于arm linux 5.10来介绍内核中使用的读写信号量rw remphore的实现代码。 内核中信号量结构体struct rw_semaphore的定义在include/linux/rwsem.h 32位architectures下,结构体struct rw_semaphore中的count的使用如下: 先来看信号量的定义和初始化…

C#里使用libxl的数字格式

由于EXCEL里可以表示不同的数字格式, 比如表示货币数字时,与表示普通序号的数字就不一样。 还有科学计算表示的数字使用小数点位数与普通货币也不一样。 如下所示: 要使用这些格式, 下面创建一个例子来演示保存这些数字格式: private void button11_Click(object send…

c#难点整理2

1.对象池的使用 就是先定义一系列的对象&#xff0c;用一个&#xff0c;调一个。 public class ObjectPool<T> where T : new(){private Queue<T> pool; // 用于存储对象的队列private int maxSize; // 对象池的最大容量// 构造函数public ObjectPool(int maxSi…

解锁物联网高效开发,Synaptics SYN43756E Wi-Fi 6E 芯片登场

Synaptics 的 SYN43756E 芯片是一款高性能的 Wi-Fi 6E 支持 11a/b/g/n/ac/ax 的物联网&#xff08;IoT&#xff09;SoC&#xff0c;具备多项先进特性&#xff0c;适用于多种应用场景&#xff0c;以下是其主要优势&#xff1a; 1. 广泛的应用场景 智慧家庭&#xff1a;支持多种…

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能📚页面效果📚指令输入�…

2024年河南省职业院校 技能大赛高职组 “大数据分析与应用” 赛项任务书(四)

2024 年河南省职业院校 技能大赛高职组 “大数据分析与应用” 赛项任务书&#xff08;四&#xff09;&#xff09; 背景描述&#xff1a;任务一&#xff1a;Hadoop 完全分布式安装配置&#xff08;25 分&#xff09;任务二&#xff1a;离线数据处理&#xff08;25 分&#xff0…

dify创建第一个Agent

1、首先LLM模型必须支持 Function Calling 由于deepseek-R1本地化部署时还不支持&#xff0c;所以使用 qwq模型。 2、创建空白 Agent 3、为Agent添加工具 4、测试 当未添加时间工具时 询问 时间 如下 5、开启时间工具 询问如下

⭐算法OJ⭐判断二叉搜索树【树的遍历】(C++实现)Validate Binary Search Tree

图论入门【数据结构基础】&#xff1a;什么是树&#xff1f;如何表示树&#xff1f; 之前我们有分别讲解二叉树的三种遍历的相关代码实现&#xff1a; ⭐算法OJ⭐二叉树的前序遍历【树的遍历】&#xff08;C实现&#xff09;Binary Tree Preorder Traversal ⭐算法OJ⭐二叉树的…

2. 商城前端部署

商城客户端前端部署 https://gitee.com/newbee-ltd/newbee-mall-api-go 使用开源新蜂商城的前端&#xff0c;git clone到本地 然后在vscode终端依次输入下列指令&#xff08;配置好vue3相关环境的前提下&#xff09;&#xff1a; npm install npm i --legacy-peer-deps npm …

鸿蒙生态开发

鸿蒙生态开发概述 鸿蒙生态是华为基于开源鸿蒙&#xff08;OpenHarmony&#xff09;构建的分布式操作系统生态&#xff0c;旨在通过开放共享的模式连接智能终端设备、操作系统和应用服务&#xff0c;覆盖消费电子、工业物联网、智能家居等多个领域。以下从定义与架构、核心技术…

基于STM32进行FFT滤波并计算插值DA输出

文章目录 一、前言背景二、项目构思1. 确定FFT点数、采样率、采样点数2. 双缓存设计 三、代码实现1. STM32CubeMX配置和HAL库初始化2. 核心代码 四、效果展示和后话五、项目联想与扩展1. 倍频2. 降频3. 插值3.1 线性插值3.2 样条插值 一、前言背景 STM32 对 AD 采样信号进行快…

【Oracle资源损坏类故障】:详细了解坏块

目录 1、物理坏块与逻辑坏块 1.1、物理坏块 1.2、逻辑坏块 2、两个坏块相关的参数 2.1、db_block_checksum 2.2、db_block_checking 3、检测坏块 3.1、告警日志 3.2、RMAN 3.3、ANALYZE 3.4、数据字典 3.5、DBVERIFY 4、修复坏块 4.1、RMAN修复 4.2、DBMS_REPA…

996引擎-接口测试:背包

996引擎-接口测试:背包 背包测试NPC参考资料背包测试NPC CONSTANT = require("Envir/QuestDiary/constant/CONSTANT.lua"); MsgUtil = require("Envir/QuestDiary/utils/996/MsgUtil.lua");

Electron打包文件生成.exe文件打开即可使用

1 、Electron 打包&#xff0c;包括需要下载的内容和环境配置步骤 注意&#xff1a;Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用程序的框架 首先需要电脑环境有Node.js 和 npm我之前的文章有关nvm下载node的说明也可以去官网下载 检查是否有node和npm环…

单播、广播、组播和任播

文章目录 一、单播二、广播三、组播四、任播代码示例&#xff1a; 五、各种播的比较 一、单播 单播&#xff08;Unicast&#xff09;是一种网络通信方式&#xff0c;它指的是在网络中从一个源节点到一个单一目标节点对的传输模式。单播传输时&#xff0c;数据包从发送端直接发…

Cursor+Claude-3.5生成Android app

一、Android Studio下载 https://developer.android.com/studio?hlzh-tw#get-android-studio 等待安装完成 二、新建工程 点击new project 选择Empty Activity 起一个工程名 当弹出这个框时 可以在settings里面选择No proxy 新建好后如下 点击右边模拟器&#xff0c…

QT Quick(C++)跨平台应用程序项目实战教程 3 — 项目基本设置(窗体尺寸、中文标题、窗体图标、可执行程序图标)

目录 1. 修改程序界面尺寸和标题 2. 窗体图标 3. 修改可执行程序图标 上一章创建好了一个初始Qt Quick项目。本章介绍基本的项目修改方法。 1. 修改程序界面尺寸和标题 修改Main.qml文件&#xff0c;将程序宽度设置为1200&#xff0c;程序高度设置为800。同时修改程序标题…

Transformers x SwanLab:可视化NLP模型训练(2025最新版)

HuggingFace 的 Transformers 是目前最流行的深度学习训框架之一&#xff08;100k Star&#xff09;&#xff0c;现在主流的大语言模型&#xff08;LLaMa系列、Qwen系列、ChatGLM系列等&#xff09;、自然语言处理模型&#xff08;Bert系列&#xff09;等&#xff0c;都在使用T…

VSCode 抽风之 两个conda环境同时在被激活

出现了神奇的(toolsZCH)(base) 提示符&#xff0c;如下图所示&#xff1a; 原因大概是&#xff1a;conda 环境的双重激活&#xff1a;可能是 conda 环境没有被正确清理或初始化&#xff0c;导致 base 和 toolsZCH 同时被激活。 解决办法就是 &#xff1a;conda deactivate 两次…