【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。

链接如下:

sqliteviz

注意:

在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到SQL语法是否能正确地执行,顺序如下:

SELECT(读取)——FROM(来源)——WHERE(条件)——GROUP BY(分组)——HAVING(条件)——ORDER BY(顺序)——LIMIT(条数限制)

比如:order by要排在limit之前

group by必须排在having之前,因为having是用来筛选分组地结果

目录

1.创建数据库表

2. 向表中插入数据

3.删除整个数据表

4.删除表中全部数据

5.查询表中相关信息

①limit用法

②Where用法

③order by语法

④通配符用法 

⑤between and用法 

⑥avg、sum、max、min、count、round等用法

⑦group by用法

⑧Having用法

注意:group by分组后不能用where进行筛选了,得用having进行筛选!

⑨DISTINCT用法

⑩UPDATE SET的用法

⑪Left join的用法

⑫Inner left的用法

6.left join 和inner join的区别

1.创建数据库表
CREATE TABLE students (student_id INT PRIMARY KEY,         -- 学号(主键)name VARCHAR(50),                   -- 姓名class VARCHAR(50),                  -- 班级score DECIMAL(5,2),                 -- 成绩(百分制)club_id INT                         -- 社团编号
);

其中

CREATE TABLE students ( ... );
  • 创建一个名为 students 的新表。
  • 表中包含多个字段(列),括号内定义这些字段。
student_id INT PRIMARY KEY
  • 字段名: student_id
  • 类型: INT(整数)
  • 约束: PRIMARY KEY
    • 表示该字段是这张表的主键,唯一标识每一条记录。
    • 主键不能重复,也不能为 NULL。
name VARCHAR(50)
  • 字段名: name
  • 类型: VARCHAR(50)(可变长度字符串,最大长度为 50 个字符)
class VARCHAR(50)
  • 字段名: class
  • 类型: VARCHAR(50),表示学生所属班级名称。
score DECIMAL(5,2)
  • 字段名: score
  • 类型: DECIMAL(5,2),表示精度为 5 位、小数点后保留 2 位的十进制数。
    • 最大值可以是 999.99
club_id INT
  • 字段名: club_id
  • 类型: INT,表示学生所加入社团的编号。
2. 向表中插入数据
INSERT INTO students (student_id, name, class, score, club_id)
VALUES(1001, '张三', '高一(1)班', 92, 101),(1002, '李四', '高一(2)班', 78, 103),(1003, '王五', '高一(1)班', 58, 102),(1004, '赵六', '高一(3)班', 98, 101),(1005, '钱七', '高一(2)班', 89, NULL),(1006, '孙八', '高一(3)班', 84, 103),(1007, '周九', '高一(1)班', 86,102),(1008, '吴十', '高一(2)班', 94,104),(1009, '郑十一', '高一(3)班', 68,103),(1010, '王十二', '高一(1)班', 72,101),(1011, '陈十三', '高一(2)班', 84,102),(1012, '刘十四', '高一(3)班', 89,103),(1013, '杨十五', '高一(1)班', 91,101),(1014, '黄十六', '高一(2)班', 92,104),(1015, '徐十七', '高一(3)班', 52,103),(1016, '何十八', '高一(1)班',85,NULL),(1017, '吕十九', '高一(2)班', 76,102),(1018, '施二十', '高一(3)班', 64,101),(1019, '沈二十一', '高一(1)班', 100,101),(1020, '朱二十二', '高一(2)班',99,102);
3.删除整个数据表
DROP TABLE students;
4.删除表中全部数据
DELETE FROM students; 或者
DELETE
FROM students
where club_id=104;
5.查询表中相关信息
SELECT * FROM "students"; 
SELECT 姓名,班级,成绩 FROM "students"; 
①limit用法
SELECT * FROM "students" limit 5; --显示前5行数据
SELECT * FROM "students" limit 5 OFFSET 5; --跳过前5行,接着显示后5行
SELECT * FROM "students" limit 5 OFFSET 10; --第10行后边的5行,即跳过前10行,显示后边的5行
②Where用法
SELECT * from students where 学号 = 1001;
SELECT * from students where 学号 <> 1001;  学号不等于1001的其它数据
SELECT * from students where 班级 = '高一(1)班';
③order by语法
SELECT * from students where 班级 <> '高一(2)班' ORDER BY 班级,成绩 DESC;--降序按照班级升序、成绩降序排列
④通配符用法 
SELECT * from students where 姓名 LIKE '张%'--%多个字元
--LIKE '张%':表示以“张”开头,后面可以有任意多个字符(包括 0 个)。
--% 是通配符,代表 任意数量的字符(包括没有字符)。SELECT * from students where 姓名 LIKE '张_'--_一个字源
查询姓名为“张”姓且全名只有两个字的学生
_ 是通配符,代表 一个且仅有一个字符。
⑤between and用法 
SELECT * from students where 成绩>=80 and 成绩<=90;
SELECT * from students where 成绩 BETWEEN 80 AND 90;SELECT * from students where 成绩 BETWEEN 80 AND 90 AND 班级='高一(2)班';SELECT * from students where 成绩 BETWEEN 80 AND 90 AND (班级='高一(2)班' or 班级='高一(1)班');SELECT * from students where 成绩 BETWEEN 80 AND 90 AND (班级 in ('高一(2)班','高一(1)班'));
⑥avg、sum、max、min、count、round等用法
SELECT AVG(成绩),SUM(成绩),MAX(成绩),MIN(成绩),COUNT(成绩) FROM students;
SELECT AVG(成绩) AS 成绩平均,MAX(成绩) as 最高分  FROM students;
SELECT ROUNd(AVG(成绩),1) AS 成绩平均,MAX(成绩) as 最高分  FROM students; --四舍五入保留一位小数
⑦group by用法
SELECT 班级,ROUNd(AVG(成绩),1) AS 成绩平均,MAX(成绩) as 最高分  FROM students GROUP BY 班级 ORDER BY 成绩平均 DESC;
⑧Having用法
SELECT 班级,ROUNd(AVG(成绩),1) AS 成绩平均 FROM students GROUP BY 班级 HAVING 成绩平均>=80 ORDER BY 成绩平均 DESC;
注意:group by分组后不能用where进行筛选了,得用having进行筛选!
⑨DISTINCT用法
SELECT DISTINCT club_id FROM students;
作用: 显示所有出现过的 club_id 值(包括 NULL)。
DISTINCT 表示去重。SELECT COUNT(DISTINCT club_id) FROM students;
作用: 统计学生来自多少个不同的社团。
注意: NULL 值不会被计入统计结果。SELECT DISTINCT club_id FROM students WHere club_id is not null order by club_id;
查询所有非空的不同社团编号,并排序:
⑩UPDATE SET的用法
更新数据,补充缺失值,删除行
UPDATE students 
set club_id=104 
where student_id=1005;将 student_id = 1005 的学生的 club_id 更新为 104
这个操作通常用于补充缺失值(如之前该字段为 NULL)
⑪Left join的用法
SELECT s.name AS 姓名,s.club_id AS 社团编号,c.club_name AS 社团名称
FROM students s
LEFT JOIN club c ON s.club_id = c.club_id
WHERE s.class = '高一(1)班';

查询“高一(1)班”学生的姓名、社团编号和对应的社团名称,并使用了 LEFT JOIN 来连接 studentsclub 表。

⑫Inner left的用法
SELECT s.name AS 姓名,s.club_id AS 社团编号,c.club_name AS 社团名称
FROM students s
INNER JOIN club c ON s.club_id = c.club_id
WHERE s.class = '高一(1)班';
6.left join 和inner join的区别

LEFT JOININNER JOIN 是 SQL 中最常用的两种表连接方式(JOIN),它们用于将两个或多个表根据某个关联条件合并在一起。但它们在行为和结果上有着本质的区别。

Inner join(内连接)

  • 只返回两个表中“匹配”的行
  • 如果左表某行在右表中没有匹配的行,则不返回该行
  • 相当于取两个表的交集

LEFT JOIN(左连接 / 左外连接)

  • 返回左表中的所有行
  • 如果右表中没有匹配的行,则用 NULL 填充右表的字段
  • 不管有没有匹配,左表数据都会保留

 

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

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

相关文章

【计算机网络】SDN

SDN这种新型网络体系结构的核心思想&#xff1a;把网络的控制层面与数据层面分离&#xff0c;而让控制层面利用软件来控制数据层面中的许多设备。 OpenFlow协议可以被看成是SDN体系结构中控制层面与数据层面之间的通信接口。 在SDN中取代传统路由器中转发表的是“流表”&…

量化面试绿皮书:9. 通往Offer的门

文中内容仅限技术学习与代码实践参考&#xff0c;市场存在不确定性&#xff0c;技术分析需谨慎验证&#xff0c;不构成任何投资建议。 9. 通往Offer的门 你面对着两扇门。 一个通往你的工作机会&#xff0c;另一个是退出。 两扇门前都有一名警卫。一个守卫总是说谎&#xff0c…

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…

Ascend NPU上适配Step1X-Edit模型

1 概述 1.1 简述 Step1X-Edit&#xff1a;一个在各种真实用户指令下表现出现的统一图像编辑模型。 Step1X-Edit&#xff0c;其性能可与 GPT-4o 和 Gemini2 Flash 等闭源模型相媲美。更具体地说&#xff0c;我们采用了多模态LLM 来处理参考图像和用户的编辑指令。我们提取了潜…

WEB3全栈开发——面试专业技能点P8DevOps / 区块链部署

一、Hardhat / Foundry 进行合约部署 概念介绍 Hardhat 和 Foundry 都是以太坊智能合约开发的工具套件&#xff0c;支持合约的编译、测试和部署。 它们允许开发者在本地或测试网络快速开发智能合约&#xff0c;并部署到链上&#xff08;测试网或主网&#xff09;。 部署过程…

【题解-洛谷】B4292 [蓝桥杯青少年组省赛 2022] 路线

题目&#xff1a;B4292 [蓝桥杯青少年组省赛 2022] 路线 题目描述 有一个旅游景区&#xff0c;景区中有 N N N 个景点&#xff0c;景点以数字 1 1 1 到 N N N 编号&#xff0c;其中编号为 N N N 的景点为游客服务中心所在地。景区中有 M M M 条连接路线&#xff0c;每条…

MySQL体系架构解析(四):MySQL数据存储的揭秘

MySQL中的数据目录 确定MySQL的数据目录 到底MySQL把数据都存到哪个路径下呢&#xff1f;其实数据木对应着一个系统变量datadir&#xff0c;我们在使用客户端与服务器建立连接之后查看这个系统变量的值就可以了。 -- 以下两种方式都可以 show variables like datadir; selec…

Solidity从入门到精通-Remix的基本使用和Solidity的基本数据类型

Solidity从入门到精通-Remix的基本使用和Solidity的基本数据类型 讲了那么多理论&#xff0c;相信大家对区块链/web3也有了一定认知&#xff1b;这时候可能就问有人会问了如何把理论变成实际的代码实现。 这就来了接下来会给大家分享Solidity入门教程 这时候就会有同学问了Sol…

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…

在.NET Core控制器中获取AJAX传递的Body参数

.Net Core是支持前后端不分离式的开发的&#xff0c;如果在原始系统中采用不分离式开发&#xff0c;后面需要在原系统中增加功能&#xff0c;并且新的服务采用其他语言开发&#xff0c;且系统原来功能保持原样&#xff0c;这样前端系统可以单独调用新开发的接口。 但是&#x…

ubuntu24安装opencv过程

1.访问opencv官网&#xff0c;下载源代码。 opencv 2.选择相应版本的源码下载 我这里用的是4.8.1版本的源码进行安装&#xff0c;opencv-4.8.1.tar.gz 安装命令 tar xvf opencv-4.8.1.tar.gz #在当前文件夹创建build文件&#xff0c;并进入 mkdir build && cd build …

Kubernetes ClusterIP 端口深度解析:虚拟服务与流量转发机制

事情的起因是创建了一个 NodePort 类型 Service&#xff0c;其端口映射关系为 8000:30948/TCP。既然30948是在每个node开的端口&#xff0c;那8000是开在哪的呢&#xff1f;出于好奇回顾了一下K8s的Cluster IP和Service 端口映射关系解析 在 Kubernetes 的 NodePort Service 中…

C++左值与右值及引用的总结

前言 在C中&#xff0c;理解左值&#xff08;lvalue&#xff09;和右值&#xff08;rvalue&#xff09;是掌握现代C核心特性的关键。左值通常指代具名的、持久存在的对象&#xff0c;可以取地址&#xff1b;而右值则是临时的、即将销毁的值&#xff0c;如字面量或表达式结果。…

学习记录:DAY31

Java课设&#xff1a;数字水印处理与解析器开发 前言 想养成写日记的习惯真不容易。最近比较懒散&#xff0c;复习不想复&#xff0c;项目又做完了&#xff0c;处于一种能干些什么&#xff0c;但是不太想干&#xff0c;但是不干些什么又浑身难受的处境。其实完全就不是匀不出…

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…

系统模块与功能设计框架

系统模块与功能设计框架&#xff0c;严格遵循专业架构设计原则&#xff0c;基于行业标准&#xff08;如微服务架构、DDD领域驱动设计&#xff09;构建。设计采用分层解耦模式&#xff0c;确保可扩展性和可维护性&#xff0c;适用于电商、企业服务、数字平台等中大型系统。 系统…

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …

Prompt工程学习之自我一致性

自我一致性 &#xff08;Self-consistency&#xff09; 概念&#xff1a;该技术通过对同一问题采样不同的推理路径&#xff0c;并通过多数投票选择最一致的答案&#xff0c;来解决大语言模型&#xff08;LLM&#xff09;输出的可变性问题。通过使用不同的温度&#xff08;temp…

gh hugging face使用

install sudo dpkg -i gh_2.74.0_linux_amd64.deb gh auth login gh auth login ? Where do you use GitHub? GitHub.com ? What is your preferred protocol for Git operations on this host? HTTPS ? Authenticate Git with your GitHub credentials? Yes ? How wo…

2025.6.9总结(利与弊)

凡事都有两面性。在大厂上班也不例外。今天找开发定位问题&#xff0c;从一个接口人不断溯源到另一个 接口人。有时候&#xff0c;不知道是谁的责任填。将工作内容分的很细&#xff0c;每个人负责其中的一小块。我清楚的意识到&#xff0c;自己就是个可以随时替换的螺丝钉&…