数据库操作语言(DML)

数据库操作语言(DML)

一、四种操作

  1. 数据查询 (Data Querying): 从数据库中检索数据。最常用的查询语言是SQL (Structured Query Language) 中的 SELECT 语句。
  2. 数据插入 (Data Insertion): 将新数据添加到数据库中,常用的SQL语句是 INSERT INTO
  3. 数据更新 (Data Updating): 修改数据库中的现有数据,常用的SQL语句是 UPDATE
  4. 数据删除 (Data Deletion): 从数据库中删除数据,常用的SQL语句是 DELETE FROM

二、数据的插入(增)

1、语法格式。

前提:创建验证学生表

CREATE TABLE student(
id INT(3) PRIMARY KEY auto_increment,
name VARCHAR(32),
sex VARCHAR(32),
age INT(3),
salary FLOAT(8,2),
course VARCHAR(32)
)

注意:每张表必须有且只有一个主键

理解:主键上的数据不能重复且不能为空,主键就是该数据行的唯一表示

​ PRIMARY KEY – 主键

​ auto_increment – 自动增长

​ 1.1 方式一:

INSERT INTO student VALUE(1,'小雷','women','23','99999','java');

​ 1.2 方式二:

INSERT INTO student VALUES(1,'小雷','women','23','99999','java'),(2,'小杨','men','22','99999','java');

​ 1.3 方式三:

INSERT INTO student(name,sex,age,salary,course) VALUE('小雷','women','23','99999','java');
INSERT INTO student(name,sex,age,salary,course) VALUE('小杨','men','22','99999','java');
INSERT INTO student(name,sex,age,salary,course) VALUE('小刘','women','21','8000','Python');
INSERT INTO student(name,sex,age,salary,course) VALUE('小李','men','24','9999','HTML');
INSERT INTO student(name,sex,age,salary,course) VALUE('小雷','women','23','99999','HTML');

效果截图:

在这里插入图片描述

三、数据的删除(删)

1、清空表数据

方式一:

TRUNCATE student;

注意:清空表数据后,再添加数据,主键会从1开始递增

方式二:

DELETE FROM student;

经验:1、考虑到删除的数据有可能恢复,使用方式二删除数据,再恢复备份,主键不会冲突

​ 2、项目中的数据大概率不会删除,如果要做删除功能,可以在表上加一个字段来去表述该数据行是否可用(ps:0表示删除,1表示未删除)

2、单条件删除数据

DELETE FROM student WHERE id=5;

3、多条件删除数据

​ OR – 或

DELETE FROM student WHERE course='Python' OR course='HTML';

​ 效果截图:

在这里插入图片描述

​ AND – 与(并且)

DELETE FROM student WHERE course='html' and sex='women';

​ 效果截图:

在这里插入图片描述

​ IN(值1,值2,值3,…) – 删除字段上包含的数据

DELETE FROM student WHERE age IN(22,23);

​ 效果截图:
在这里插入图片描述

四、数据的修改(改)

1、修改所有数据

UPDATE student SET salary=10000;

2、单条件修改数据

UPDATE student SET salary=25000 WHERE id=1;

3、多条件修改数据

​ OR – 或

UPDATE student SET salary=30000 WHERE course='python' OR course='html';

​ 效果截图:

在这里插入图片描述

​ AND – 与(并且)

UPDATE student SET salary=40000 WHERE course='java' AND sex='women';

​ IN(值1,值2,值3,…) – 删除字段上包含的数据

UPDATE student SET salary=50000 WHERE age IN(22,23,24);

4、修改多个数据

UPDATE student SET age=20,salary=60000 WHERE id=2;

五、数据的查询(查)-- DQL

1、查询所有字段

SELECT * FROM student;

2、查询指定字段

SELECT  NAME,sex,age FROM student;

3、 查询指定字段 + 别名

SELECT name AS '姓名', sex AS '性别', age AS '年龄' FROM student;

效果截图:

在这里插入图片描述

4、单条件查询

SELECT * FROM student WHERE id=1;

5、多条件查询

OR:

SELECT * FROM student WHERE course='java' OR course='html';

AND:

SELECT * FROM student WHERE course='java' AND sex='women';

效果截图:

在这里插入图片描述

IN():

SELECT * FROM student WHERE age IN(21,22,23);

6、去重查询

需求:查询出学科

SELECT DISTINCT course FROM student;

效果截图:

在这里插入图片描述

7、模糊查询:

需求:查询出名字中带’雷’的学生信息

注意: % 表示没有或多个任意字符,_ 表示一个任意字符

SELECT * FROM student WHERE `name` LIKE '%雷%';

效果截图:

在这里插入图片描述

需求:查询出2个字的名字中最后一个字带’杨’的学生信息

SELECT * FROM student WHERE `name` LIKE '_杨';

效果截图:

在这里插入图片描述

8、单字段排序

需求:按照年龄排升序

注意:ORDER BY 排序,ASC 表示升序,DESC 表示降序

SELECT *FROM student ORDER BY age ASC;

效果截图:

在这里插入图片描述

需求:按照工资排降序

SELECT * FROM student ORDER BY salary DESC;

9、 多字段排序

需求:按照年龄排升序,年龄一致按照工资排降序

SELECT * FROM student ORDER BY age ASC,salary DESC;

效果截图:
在这里插入图片描述

10、限制查询

需求:查询出工资前三位的学生信息

SELECT * FROM student ORDER BY salary DESC LIMIT 3;

效果截图:
在这里插入图片描述

11、分页查询

分页的公式:*SELECT * FROM 表名 LIMIT (页数-1)页面条数,页面条数;

SELECT * FROM student LIMIT 0,5;
SELECT * FROM student LIMIT 5,5;
SELECT * FROM student LIMIT 10,5;

12、统计类函数查询/聚合查询

函数的理解:特定功能的代码块

需求:统计最高工资

SELECT MAX(salary) FROM student;

需求:统计最低工资

SELECT MIN(salary) FROM student;

需求:统计平均工资(保留2位小数)

SELECT ROUND(AVG(salary),2) FROM student;

需求:统计工资总和

SELECT SUM(salary) FROM student;

需求:统计学生个数

SELECT COUNT(id) FROM student;

注意:count()函数不统计字段数据为null的个数

经验:统计数据条数,count()函数中的字段使用主键(因为主键不允许重复且不能为null)

13、子查询

需求:查询最高工资的学生

SELECT * FROM student WHERE salary=(SELECT MAX(salary) FROM student);

经验:实际工作中极少使用子查询,因为效率太低

14、分组过滤查询

需求:查询出各个学科的平均工资

SELECT course ,AVG(salary) FROM student GROUP BY course;

15、分组过滤查询 + 条件

需求:查询出平均工资大于1万的学科信息

SELECT course,AVG(salary)FROM student GROUP BY course HAVING AVG(salary)>10000;

效果截图:

在这里插入图片描述

多表查询接下一章

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

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

相关文章

STM32 中断编程入门

目录 一、中断系统 1、中断的原理 2、中断类型 外部中断 定时器中断 DMA中断 3、中断处理函数 中断标志位清除 中断服务程序退出 二、实际应用 中断控制LED 任务要求 代码示例 中断控制串口通信 任务要求1 代码示例 任务要求2 代码示例 总结 学习目标&…

如何理解MySql的MVCC机制

MVCC是什么 MySQL的MVCC机制,全称为多版本并发控制(Multi-VersionConcurrency Control),是一种提高数据库并发性能的技术。MVCC的主要目的是在保证数据一致性的同时,提高数据库的并发性能。 它通过为每个读操作创建数…

技术赋能教育:校园3D电子地图与AR导航解决方案

随着高考的落幕,又一批新鲜血液即将注入大学校园。面对陌生的环境,如何快速适应、准确找到目标地点,成为新生们的一大难题。同时,对于学校而言,如何向报考人员直观展示校园环境,提供沉浸式参观体验&#xf…

Vue跨域获取ip和ip位置城市等归属地信息

由于端口设置与查询服务器不一致,所以不能直接从ip138网上抓取,只能跨域查询。实现跨域查询,简单的方法是使用jsonp方式,只支持get请求,同时也需要查询的服务器支持jsonp。这时找到了腾讯位置服务。参考文章&#xff0…

第 27 篇 : 搭建maven私服nexus

官网文档 1. 下载应该很慢, 最好是能翻墙 nexus-3.69.0-02-java8-unix.tar.gz 2. 上传到/usr/local/src, 解压及重命名 tar -zxvf nexus-3.69.0-02-java8-unix.tar.gz rm -rf nexus-3.69.0-02-java8-unix.tar.gz mv nexus-3.69.0-02 nexus ls3. 修改配置 cd /usr/local/sr…

2024最新版Redis常见面试题包含详细讲解

Redis适用于哪些场景? 缓存分布式锁降级限流消息队列延迟消息队 说一说缓存穿透 缓存穿透的概念 用户频繁的发起恶意请求查询缓存中和数据库中都不存在的数据,查询积累到一定量级导致数据库压力过大甚至宕机。 缓存穿透的原因 比如正常情况下用户发…

生命在于学习——Python人工智能原理(3.1.2)

一、概率基本知识 1.3 常见概型 1.3.1 古典概型 定义1 古典概型 若随机事件E满足如下两个条件: (1)样本空间S中只有有限个样本点。 (2)样本空间S中每个样本点发生都是等可能的。 这样的随机试验称为古典概型。 P(A)…

暑期大数据人工智能学习-企业项目试岗实训开营

暑期企业项目-试岗实训活动全面开启啦 跟张良均老师学大数据人工智能 不仅可以提供实习证明,有需要话也可以提供实习鉴定报告 √54个热门案例拆解 √40项目实战课程 √27个项目可选 √4个项目方向

企业本地大模型用Ollama+Open WebUI+Stable Diffusion可视化问答及画图

最近在尝试搭建公司内部用户的大模型,可视化回答,并让它能画图出来, 主要包括四块: Ollama 管理和下载各个模型的工具Open WebUI 友好的对话界面Stable Diffusion 绘图工具Docker 部署在容器里,提高效率 以上运行环境…

to_json 出现乱码的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

基于MIMO系统的预编码matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 最小均方误差(MMSE)准则 4.2 量化准则 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 …

让围绕数据库构建大模型应用更简单方便--DB-GPT

DB-GPT的目的是构建大模型领域的基础设施,通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单,更方便。 1 处理流程 DB-GPT系…

使用supportFragmentManager管理多个fragment切换

android studio创建的项目就没有一个简单点的框架,生成的代码都是繁琐而复杂,并且不实用。 国内的页面一般都是TAB页面的比较多,老外更喜欢侧边菜单。 如果我们使用一个activity来创建程序,来用占位符管理多个fragment切换&…

网络连接之队头阻塞!!!

一、什么是队头阻塞 队头阻塞,在网络模型中简单理解就是,对于队列型的请求模型,如HTTP的请求-响应模型、TCP的ACK确认机制,都依赖得到一个具体的响应包,如果收不到这个响应包,那下一个请求就不能发&#x…

如何高效安全的开展HPC数据传输,保护数据安全?

高性能计算(HPC)在多个行业和领域中都有广泛的应用,像科学研究机构、芯片IC设计企业、金融、生物制药、能源、航天航空等。HPC(高性能计算)环境中的数据传输是一个关键环节,它涉及到将数据快速、安全地在不…

hive的表操作

常用的hive命令 切换数据库use test;查询表的建表信息show create table 数据库名称.表名;查看表的类型信息desc formatted 数据库名称.表名; 删除内部表 drop table 数据库名称.表名; 先启动hdfs ,mysql , hiveservice2,beeline CREATE [EX…

Jenkins 创建流水线任务

Jenkins是一个流行的持续集成(Continuous Integration,CI)工具。 Jenkins 创建任务 选择“流水线”类型,该类型的优点是定制化程度非常高 (可选)添加“参数化构建” 配置仓库选项(ssh连接、分支)和凭据…

vue 中使用element-ui实现锚点定位表单

效果图&#xff1a; 代码&#xff1a; html代码&#xff1a; <div class"content-left"><el-tabs :tab-position"left" tab-click"goAnchor"><el-tab-pane v-for"(item,index) in anchorNameList"v-anchor-scroll:ke…

《C++20设计模式》适配器模式经验分享

文章目录 一、前言二、对于接口的讨论三、实现1、对象适配器1.1 UML类图1.2 实现 2、类适配器 四、最后 一、前言 从适配器模式开始就是类的组合聚合&#xff0c;类与类之间结构性的问题了。 适配器模式解决的问题&#xff1a; 适配器模式能够在不破坏现有系统结构的情况下&a…

问题集锦1

01.inner中使用JwtTokenUtil.getUserCode() 前端调用上传&#xff08;java&#xff09;&#xff0c;上传使用加购 Overridepublic Boolean insertShoppingCart(InsertShoppingCartParamsDto dto) {// 通过userCode,itemCode和supplierCode来判断当前加购人添加到购物车的商品是…