🔥个人主页:寻星探路

🎬作者简介:Java研发方向学习者

📖个人专栏:《从青铜到王者,就差这讲数据结构!!!》、 《JAVA(SE)----如此简单!!!》、《数据库那些事!!!》

⭐️人生格言:没有人生来就会编程,但我生来倔强!!!



目录

一、Create 新增

1、语法

2、示例

2.1单行数据全列插入

2.2单行数据指定列插入

2.3多行数据指定列插入

二、Retrieve 检索

1、语法

2、示例

2.1构造数据

3、Select

3.1全列查询

3.2指定列查询

3.3查询字段为表达式

3.3.1常量表达式

3.3.2把所有学生的语文成绩加10分

3.3.3计算所有学生语文、数学和英语成绩的总分

3.4为查询结果指定别名

3.4.1语法

3.4.2示例

3.5结果去重查询

4、where条件查询

4.1语法

4.2比较运算符

4.3逻辑运算符

4.4示例

4.4.1基本查询

4.4.2AND和OR

4.4.3范围查询

4.4.4模糊查询

4.4.5NULL的查询


CURD是对数据库中的记录进⾏基本的增删改查操作:

• Create(创建)

• Retrieve(读取)

• Update(更新)

• Delete(删除)

        作为Java后端开发,未来的主要工作之一就是CRUD

一、Create 新增

1、语法

INSERT [INTO] table_name[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...value_list: value, [, value] ...

2、示例

# 创建⼀个⽤于演⽰的表
create table users (id bigint,name varchar(20) comment '⽤户名'
);

2.1单行数据全列插入

        value_list 中值的数量必须和定义表的列的数量及顺序⼀致

# 插入第一条记录
insert into users values (1, '张三');# 插入第二条记录
insert into users values (2, '李四');

#注:

2.2单行数据指定列插入

        value_list 中值的数量必须和指定列数量及顺序⼀致

# 指定了具体要插⼊的列
insert into users(id, name) values (3, '王五');

2.3多行数据指定列插入

        在⼀条INSERT语句中也可以指定多个value_list,实现⼀次插入多行数据

# 每个value_list表⽰⼀⾏数据
insert into users(id, name) values (4, '赵六'), (5, '钱七');

二、Retrieve 检索

1、语法

SELECT[DISTINCT]select_expr [, select_expr] ...[FROM table_references][WHERE where_condition][GROUP BY {col_name | expr}, ...][HAVING where_condition][ORDER BY {col_name | expr } [ASC | DESC], ... ][LIMIT {[offset,] row_count | row_count OFFSET offset}]

2、示例

2.1构造数据

#创建表结构
CREATE TABLE exam (id BIGINT,name VARCHAR(20) COMMENT '同学姓名',chinese float COMMENT '语⽂成绩',math float COMMENT '数学成绩',english float COMMENT '英语成绩'
);#插⼊测试数据 
INSERT INTO exam (name, chinese, math, english) VALUES(1, '唐三藏', 67, 98, 56),(2, '孙悟空', 87, 78, 77),(3, '猪悟能', 88, 98, 90),(4, '曹孟德', 82, 84, 67),(5, '刘⽞德', 55, 85, 45),(6, '孙权', 70, 73, 78),(7, '宋公明', 75, 65, 30);

3、Select

3.1全列查询

        查询所有记录

# 使⽤ * 可以查询表中所有列的值
select * from exam;

#注:上述属于数据库的危险操作!!!在公司中,会有很多的环境,同样的代码不同的环境运行的结果就可能不同,所以select * 在生产环境上执行很可能出现问题!!!

3.2指定列查询

        查询所有⼈的编号、姓名和语⽂成绩

select id,name,chinese from exam;

        在select后面的查询列表中指定希望查询的列,可以是一个也可以是多个,中间⽤逗号隔开指定列的顺序与表结构中的列的顺序无关

3.3查询字段为表达式

3.3.1常量表达式
# 表达式本⾝就是⼀个常数
select id,name,10 from exam;

# 也可以是常量的运算
select id,name,10+1 from exam;

3.3.2把所有学生的语文成绩加10分
# 表达式中包含⼀个字段
select id,name,chinese+10 from exam;

3.3.3计算所有学生语文、数学和英语成绩的总分
 # 表达式包含多个字段
select id, name, chinese + math + english  from exam;

3.4为查询结果指定别名

3.4.1语法
 SELECT column [AS] alias_name [, ...] FROM table_name;

AS 可以省略,别名如果包含空格必须用单引号包裹

3.4.2示例

        为总分这⼀列指定别名

#为总分这⼀列指定别名
select id, name, chinese + math + english as 总分 from exam;

#注:

(1)不仅可以给表达式起别名,还可以给表起别名!!!

(2)起别名是为了增强代码的可读性(代码的可读性>代码的高效执行)

3.5结果去重查询

        行与行之间去重(记录和记录之间去重)

(1)查询当前所有的数学成绩

# 通过观察有两条98的记录
select math from exam;

(2)在结果集中去除重复记录,可以使用DISTINCT

# 去重查询
select distinct math from exam;

#注:

(1)使用DISCTINCT去重时,只有查询列表中所有列的值都相同才会判定为重复

(2)查询时不加限制条件会返回表中所有结果,如果表中的数据量过大,会把服务器的资源消耗殆尽

(3)在生产环境不要使不加限制条件的查询

4、where条件查询

        查询的时候,指定条件,符合条件的行被查询出来,不符合条件的就跳过~~

4.1语法

SELECTselect_expr [, select_expr] ... [FROM table_references]WHERE where_condition

4.2比较运算符

#注:

(1)NULL可以参与运算,但是运算结果都是NULL

(2)(NULL==NULL=>NULL=>false)(NULL<=>NULL=>true)

(3)我们谈到区间,大多数时候都是“前闭后开”,但是between and是“前闭后闭”!!!

4.3逻辑运算符

4.4示例

4.4.1基本查询

        查询英语不及格的同学及英语成绩(<60)

select name, english from exam where english < 60;

条件查询执行过程:
        1)遍历这个表的每一行数据~~
        2)把这一行数据, 代入到条件中
        3)如果条件成立(true),此时把这个行加入到结果集合中,如果条件不成立(false),这一行直接跳过
        4)当完成所有的遍历过程之后,此时得到了结果集合,还需要根据 select 指定的列/表达式/别名/去重操作
        5)再针对结果集合做进一步处理~~

        查询语文成绩高于英语成绩的同学

select name, chinese, english from exam where chinese > english;

        总分在200分以下的同学

select name, chinese + math + english as 总分 from exam where chinese + math + english < 200;

4.4.2AND和OR

        查询语文成绩大于80分且英语成绩大于80分的同学

select * from exam where chinese > 80 and english > 80;

        查询语文成绩大于80分或英语成绩大于80分的同学

select * from exam where chinese > 80 OR english > 80;

        观察AND和OR的优先级

select * from exam where chinese > 80 or math > 70 and english > 70;

select * from exam where (chinese > 80 or math > 70) and english > 70;

        由此可见,and优先级要更高一些,但是和前面一样,尽量加括号,不要去记优先级

4.4.3范围查询

        语文成绩在[80,90]分的同学及语文成绩

# 使⽤BETWEEN AND 实现
select name, chinese from exam where chinese between 80 and 90;
# 使⽤ AND 实现
select name, chinese from exam where chinese >= 80 and chinese <= 90;

        数学成绩是78或者79或者98或者99分的同学及数学成绩

# 使⽤IN实现
select name, math from exam where math in (78, 79, 98, 99);
# 使⽤OR实现
select name, math from exam where math = 78 or math = 79 or math = 98 or math = 99;

#注:

        between and 描述的是连续的区间~~
        in 描述的是离散的集合~~

4.4.4模糊查询

%:0个或者任意个任意字符
_:1 个任意字符

        查询所有姓孙的同学

select * from exam where name like '孙%';

        查询姓孙且姓名共有两个字同学

 select * from exam where name like '孙_';

#注:SQL 使用 like 进行模糊匹配, 通常是一个"低效操作"

        SQL 的模糊匹配功能其实是非常弱的~~
        编程圈子中,对于模糊匹配, 有一套成熟的解决方案,正则表达式~~

例:

4.4.5NULL的查询

        构造数据

 # 写⼊⼀条数据,英语成绩为NULLinsert into exam values (8, '张⻜', 27, 0, NULL);

        查询英语成绩为NULL的记录     

        查询英语成绩不为NULL的记录

 # 使⽤is not null
select * from exam where english is not null;

        NULL与其他值进⾏运算结果为NULL

 # 观察结果中的总分
select name, chinese + math + english as 总分 from exam;

#注:

(1)WHERE条件中可以使用表达式,但不能使用别名

(2)AND的优先级高于OR,在同时使用时,建议使用小括号()包裹优先执行的部分

(3)过滤NULL时不要使用等于号(=)与不等于号(!=,<>)

(4)NULL与任何值运算结果都为NULL

        由于内容较多,会分为多篇讲解,预知后续内容,请看后续博客!!!

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

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

相关文章

基于Vue3的人工智能生成内容标识服务平台前端页面设计

效果图&#xff1a;素材库&#xff1a;App.vue<template><div id"app"><!-- 头部导航 --><Header /><!-- 主要内容区域 --><main class"main-content"><div class"container"><!-- 强制性国家标准…

使用 MyCat 实现 MySQL 主从读写分离

文章目录使用 MyCat 实现 MySQL 主从读写分离完整指南一、MySQL 读写分离基础概述1.1 读写分离工作原理1.2 为什么需要读写分离1.3 读写分离的两种实现方式主流读写分离中间件对比二、MyCat 中间件简介2.1 MyCat 核心功能2.2 MyCat 适用场景三、环境准备与 MyCat 安装3.1 前提&…

物联网传感器检测实验

/*------------------------------------------------------------------------------ * @文件名 : handle * @描述 : 用户处理函数 * @作者 : 物联网项目组 * @日期 : 2023/04/01 * @版本 : V0.0.2 *****************************…

什么是dirsearch、xray、durpsuite、sqlmap?

你提到的 dirsearch、xray、durpsuite&#xff08;可能为笔误&#xff0c;推测是 ​​Burp Suite​​&#xff09;和 sqlmap 均为网络安全领域中常用的工具&#xff0c;主要用于 Web 应用的安全测试、漏洞检测或渗透测试。以下分别详细说明&#xff1a;​​1. dirsearch​​​​…

lamp脚本部署

#!/bin/bash #关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 #配置yum网络源 echo “正在配置yum仓库” rm -rf /etc/yum.repos.d/* wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &am…

Redis Hash数据类型深度解析:从命令、原理到实战场景

前言 在Redis的众多数据结构中&#xff0c;Hash&#xff08;哈希&#xff09;类型占据着至关重要的地位。Redis本身就是一个高性能的键值&#xff08;Key-Value&#xff09;数据库&#xff0c;其底层的键值对便是通过哈希方式组织的。而Hash数据类型则更进一步&#xff0c;它允…

【C++实战⑬】解锁C++文件操作:从基础到实战的进阶之路

目录一、文件操作的基本概念1.1 文件的分类与打开方式1.2 文件流的概念与相关类&#xff08;ifstream、ofstream、fstream&#xff09;1.3 文件操作的基本流程二、文本文件的读写实战2.1 文本文件的打开与关闭2.2 文本文件的写入操作&#xff08;<< 运算符、write 函数&a…

从C++开始的编程生活(9)——模板初阶

前言 本系列文章承接C语言的学习&#xff0c;需要有C语言的基础才能学会哦~ 第8篇主要讲的是有关于C的模板初阶。 C才起步&#xff0c;都很简单&#xff01;&#xff01; 目录 前言 模板初阶 基本语法 函数模板的实例化 显式实例化的作用 类模板 基本语法 模板初阶 模板…

计算机网络——传输层(25王道最新版)

传输层传输层提供的服务进程 端口号 传输层协议之间的关系socket套接字有链接 VS 无连接 | 可靠 VS 不可靠UDP数据报及检验数据报格式检验方法TCPTCP协议的三大阶段TCP报文段格式&#xff08;很重要&#xff09;建立连接&#xff08;三次握手&#xff09;&#xff08;超级超级重…

羽毛球地板:从专业运动场景到全民健身市场的技术跃迁与产业重构

在全球体育产业向“专业化大众化”双轨并行的趋势下&#xff0c;羽毛球地板作为运动场景的核心基础设施&#xff0c;正经历从单一功能型产品向“性能优化场景适配智能管理”一体化解决方案的转型。据QYResearch统计&#xff0c;2031年全球羽毛球地板市场规模将达15.95亿元&…

R 语言查看类库源码的方法

你想查看 getGEO&#xff08;来自 R 语言 GEOquery 包&#xff09;的源码&#xff0c;这能帮你更好理解其工作原理和数据处理细节。由于 getGEO 是 R 函数&#xff0c;查看方法与 Python 有所不同。下面为你提供几种主要方法。 方法 适用场景 关键命令/操作 在 R 控制台直接查看…

SQL,posexplode 用法示例

示例1 -- 创建测试数据 WITH test_data AS (SELECT array(apple, banana, cherry) as fruits ) SELECT pos, col FROM test_data LATERAL VIEW posexplode(fruits) t AS pos, col;结果 pos | col ----|------- 0 | apple 1 | banana 2 | cherry示例2 -- 假设有一个用户表…

数据库造神计划第十天---数据库约束(1)

&#x1f525;个人主页&#xff1a;寻星探路 &#x1f3ac;作者简介&#xff1a;Java研发方向学习者 &#x1f4d6;个人专栏&#xff1a;《从青铜到王者&#xff0c;就差这讲数据结构&#xff01;&#xff01;&#xff01;》、 《JAVA&#xff08;SE&#xff09;----如此简单&a…

知微传感Dkam系列3D相机SDK例程篇:CSharp连接相机及保存数据

序言 写在前面 本人从事机器视觉细分的3D相机行业。编写此系列文章主要目的有&#xff1a; 1、便利他人应用相机&#xff0c;本系列文章包含公司所出售相机的SDK的使用例程及详细注释&#xff1b;2、促进行业发展及交流。 知微传感Dkam系列3D相机可以应用于定位分拣、焊接焊缝提…

[笔记] 系统分析师 第十二章 软件架构设计(分析师主要工作)

文章目录前言12.1 软件架构概述12.1.1 软件架构的意义12.1.2 软件架构的发展史12.2 软件架构建模12.3 软件架构风格12.3.1 软件架构风格概述12.3.2 数据流体系结构风格1.批处理体系结构风格2.管道-过滤体系结构风格12.3.3 调用/返回体系结构风格1.主程序/子程序风格2.面向对象体…

C++---存储周期,作用域,链接性

在C程序设计中&#xff0c;变量的行为不仅由其类型决定&#xff0c;还由存储周期&#xff08;变量在内存中存在的时间&#xff09;、作用域&#xff08;变量可被访问的代码范围&#xff09;和链接性&#xff08;变量在多文件程序中的可见性&#xff09;共同约束。 一、存储周期…

基于Python的商品爬取与可视化系统

本系统是基于Python的商品数据爬取与价格分析可视化系统&#xff0c;集成了数据爬取、数据存储、数据展示和可视化分析等功能。下面介绍一下系统主要功能和技术栈。一、主要功能&#xff1a;1、数据爬取功能 支持淘宝美妆商品数据爬取 可配置搜索关键词和爬取页数 实时显示爬取…

联邦学习过程中,了解清楚影响准确率的因素有哪些也很重要

影响模型准确率的因素有很多&#xff0c;下面是一些主要的因素&#xff0c;它们可以从数据、模型设计、训练策略以及超参数等多个层面来考虑。1. 学习率作用&#xff1a;学习率直接影响模型的训练速度、稳定性和最终表现。过高的学习率可能导致模型不收敛或收敛不稳定&#xff…

C# WPF中使用System.Management.Automation类调用Powershell报错解决办法

在WPF开发中&#xff0c;需要使用powershell进行自动化管理&#xff0c;以下为开发环境 1、.NET framework 4.7.2 2、VS2019 社区版 使用System.Management.Automation类 遇到的问题&#xff1a; 需要引用 System.Management.Automation类&#xff0c;但是在使用using指令时无法…

从 Pump.fun「直播」看热点币的生与死

在加密市场里&#xff0c;热点就是流量&#xff0c;流量就是价值。最近&#xff0c;Solana 生态的 Pump.fun 推出了「直播」板块&#xff0c;让发币这件事变得像看秀一样&#xff1a;一个个新币在链上实时登场&#xff0c;社区即时互动&#xff0c;玩家实时下注。这种形式不仅带…