mysql——第二课

学生表

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.rhkb.cn/news/38973.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单播、广播、组播和任播

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

1-1 MATLAB深度极限学习机

本博客来源于CSDN机器鱼,未同意任何人转载。 更多内容,欢迎点击本专栏目录,查看更多内容。 参考[1]魏洁.深度极限学习机的研究与应用[D].太原理工大学[2023-10-14].DOI:CNKI:CDMD:2.1016.714596. 目录 0.引言 1.ELM-AE实现 2.DE…

头歌 数据采集概述答案

问题1:以下哪个不是Scrapy体系架构的组成部分? 正确答案:B. 支持者(Support) 解释:Scrapy的主要组成部分包括: 爬虫(Spiders):定义如何爬取网站和提取数据 引擎(Engine):负责控制数据流在系统中…

【uniapp】记录tabBar不显示踩坑记录

由于很久没有使用uniapp了,官方文档看着又杂乱,底部tab导航栏一直没显示,苦思许久,没有发现原因,最后网上搜到帖子,list里的第一个数据,pages 的第一个 path 必须与 tabBar 的第一个 pagePath 相…

JVM 知识点梳理

JDK 、JRE、JVM JDK( Java Development Kit ) Java开发工具包 JRE 开发命令工具(运行java.exe、编译javac.exe、javaw.exe) JRE( Java Runtime Environment )Java运行环境 JVM Java核心类库(l…

蓝桥杯 之 第27场月赛总结

文章目录 习题1.抓猪拿国一2.蓝桥字符3.蓝桥大使4.拳头对决5.未来竞赛6.备份比赛数据 习题 比赛地址 1.抓猪拿国一 十分简单的签到题 print(sum(list(range(17))))2.蓝桥字符 常见的字符匹配的问题,是一个二维dp的问题,转化为对应的动态规划求解 力扣…

Ambari、Bigtop源码编译最新支持情况汇总

以下是目前的版本情况 支持了绝大部分的组件编译及安装 版本组件名称组件版本env 版本v1.0.5Ozone1.4.11.0.5Impala4.4.11.0.5Nightingale7.7.21.0.5Categraf0.4.11.0.5VictoriaMetrics1.109.11.0.5Cloudbeaver24.3.31.0.5Celeborn0.5.31.0.5v1.0.4Doris2.1.71.0.4v1.0.3Phoen…

仅靠prompt,Agent难以自救

Alexander的观点很明确:未来 AI 智能体的发展方向还得是模型本身,而不是工作流(Work Flow)。还拿目前很火的 Manus 作为案例:他认为像 Manus 这样基于「预先编排好的提示词与工具路径」构成的工作流智能体,…

【Docker系列一】Docker 简介

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Sqoop 常用命令

Sqoop 是用于在 Hadoop 和关系型数据库(如 MySQL、Oracle 等)之间高效传输数据的工具。以下是常用的 Sqoop 命令及示例: CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY, -- 自增主键,用于唯一标识每一行name VAR…

连续型随机变量及其分布

连续型随机变量 数学公式可以看作一门精确描述事物的语言,比语言尤其是汉语的模糊性精确多了!离散型数据的处理可以通过枚举和相加进行处理。而连续型数据则没有办法这样处理。我们必须要通过函数和取值区间还有微积分计算。 [定义1&#x…

PostgreSQL_数据使用与日数据分享

目录 前置: 1 使用 1.1 获取前复权因子 1.2 查询股票的纵向数据 1.3 查询股票的横向数据 2 日数据分享(截止至:2025-03-21) 总结 前置: 本博文是一个系列。在本人“数据库专栏”-》“PostgreSQL_”开头的博文。…

Rocky9.5基于sealos快速部署k8s集群

首先需要下载 Sealos 命令行工具,sealos 是一个简单的 Golang 二进制文件,可以安装在大多数 Linux 操作系统中。 以下是一些基本的安装要求: 每个集群节点应该有不同的主机名。主机名不要带下划线。 所有节点的时间需要同步。 需要在 K8s …

qt实现一个简单http服务器和客户端

一、功能简介 服务器&#xff1a; 登录功能、下载文件功能 客户端&#xff1a; 登录功能、下载文件功能、上传成绩功能 二、服务器代码 //HttpServer.h #ifndef HTTPSERVER_H #define HTTPSERVER_H#include <QMainWindow> #include <QTcpSocket> #include <QTc…

基于Python+Django的旅游管理系统

项目介绍 PythonDjango旅游管理系统 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 - 前台功能包括&#xff1a;首页、景点管理、门票管理、旅游资讯、在线反馈、。 - 后台功能包…

用数组模拟循环队列

设计一种循环队列&#xff0c;线性数据结构&#xff0c;其操作表现为 FIFO(先进先出)原则且队尾被连接在队首之后形成一个循环&#xff0c;称作“环形缓冲器” 循环队列的好处是可以利用这个队列之前使用过的空间&#xff0c;但是他的空间大小是固定的 循环队列我们使用单链表…

maven为什么发生依赖冲突?怎么解决依赖冲突?

maven为什么发生依赖冲突&#xff1f;怎么解决依赖冲突&#xff1f; 我们在开发的时候&#xff0c;偶尔会遇到依赖冲突的时候&#xff0c;一般都是NoClassDefFoundError、ClassNotFoundException、NoSuchMethodError。打开搜索框又发现有这个类&#xff0c;明明就是引入进来了&…

从国家能源到浙江交通投资,全息技术在能源交通领域的创新应用

一、3D全息技术行业应用参数及设计制作要求 全息投影 全息投影技术通过激光器、全息片等设备&#xff0c;将物体的三维信息记录下来&#xff0c;并在特定条件下再现。应用参数包括投影距离、投影面积、投影亮度等。设计制作要求&#xff1a;高清晰度、高亮度、低噪音、稳定性好…

Adobe After Effects 操作

Adobe After Effects &#xff08;AE&#xff09;可以实现将多个元素进行合成&#xff0c;实现特殊效果。AE的项目文件是aep&#xff0c;可以将素材、层、效果等一切信息&#xff0c;保存在这个项目文件中。 AE的原理&#xff0c;和PS的原理非常类似。 操作界面 操作界面如…

Flutter使用自签证书打包ipa

在 Flutter 中使用自签证书打包 IPA 文件&#xff0c;可以通过以下步骤完成&#xff1a; 1. 准备自签证书 方式一 生成自签证书&#xff1a; 打开 钥匙串访问 应用。选择 证书助理 > 创建证书。按照提示填写证书信息&#xff0c;选择证书类型为 代码签名&#xff0c;并保存…