Mysql---DML

文章目录

  • 目录

    一.DML概述

    注入数据( Insert)

     替换数据(replace)

    删除数据  (delete)

    修改数据 (update)

     查询数据 (select)

    二. 多表连接查询

     内连接

     子查询:A查询的结果是B查询的条件

    总结


一.DML概述

        DML(Data Manipulation Language)是MySQL中用于操作数据库中数据的语言。DML语句用于插入、更新和删除数据库中的记录,以及查询和修改数据库中的数据。

常用的DML语句包括:

  1. SELECT:用于从数据库中查询数据,可以根据条件过滤数据。
  2. INSERT:用于向数据库中插入新记录。
  3. UPDATE:用于更新数据库中的记录。
  4. DELETE:用于删除数据库中的记录。

注入数据( Insert)

  • 语法:
INSERT INTO 表名 [字段列表] VALUES (值列表);
  • 演示案例 1:

#单次注入一行字段数据
insert into 期末成绩
values("初中","一年级",90,"张三","英语");#单词注入多行字段数据
insert into 期末成绩 
values
("高中","一年级",90,"李四","英语"),
("大学","一年级",80,"周五","英语");

演示案例 2  :

  • 语法:
#给表中的指定的列注入数据
insert into 表名 (字段列) values (值列表);


#给表中的指定的列注入数据
insert into 期末成绩 
(种类,年级,成绩,学生,科目)
values
("高二","90","李四","数学");

 

 替换数据(replace)

语法格式1:replace into 表名 [(字段列表)] values (值列表)replace语句的功能与insert语句的功能基本相同,不同之处在于:使用replace语句向表插入新记录时,如果新记录的**主键值或者唯一性约束**的字段值与已有记录相同,则已有记录先被删除(注意:已有记录删除时也不能违背外键约束条件),然后再插入新记录。使用replace的最大好处就是可以将delete和insert合二为一(效果相当于更新),形成一个原子操作,这样就无需将delete操作与insert操作置于事务中了

删除数据  (delete)

DELETE FROM 表名 [WHERE 条件];
TRUNCATE FROM 表名 [WHERE 条件];**DROP、TRUNCATE、DELETE的区别:**delete:删除数据,保留表结构,可以回滚,如果数据量大,很慢truncate: 删除所有数据,保留表结构,不可以回滚,一次全部删除所有数据,速度相对很快drop: 删除数据和表结构,删除速度最快。
  •  演示案例 3

delete from `期末成绩` where 种类 = "大学";

修改数据 (update)

语法:

UPDATE 表名 SET
列名 = 新的值
[,列名 = 新的值,列名 = 新的值]
[WHERE 条件];

演示案例:

update 期末成绩 set 
成绩 = "60",科目 ="数学"
where  学生 = "李四";

 查询数据 (select)

语法:

SELECT 需要查询的列
FROM 表名 [,其余表]
[连接机制]
[WHERE 条件]
[GROUP BY 分组条件]
[ORDER BY 排序条件]
[LIMIT 区间条件];

演示案例:

  • where: 
#查询期末考试表中数学成绩在70到90之间的学生姓名;
select student_name from 期末考试 where math_score between 70 and 90;#查询数学成绩为90的学生姓名以及年级
select student_name,grade from 期末考试 where math_score = 90;#查询数学成绩为90的student_name并将列名重设为"学生","姓名"
select student_name as "学生" from 期末考试 where math_score = 90;#查询期末考试表中所有的年级并去重
select distinct grade from 期末考试;#查询名字中含"e"的学生信息
select  * from 期末考试 where student_name like "%e%";
like "xxx%"  以XXX开头
like "%xxx"  以XXX结尾
like "%xxx%" 包含XXX#查询数学成绩是90或88的学生信息
select  * from 期末考试 where math_score = 88 or  math_score = 90;#查询数学成绩不是88和90的学生信息
select  * from 期末考试 where math_score not in (88,90);
  • 分组: 
#以年级为10分组查询期末考试这张表中的数学平均分
select  avg(math_score) as "平均分" from 期末考试 group by grade = 10;
max  最大值  min 最小值  avg 平均值 sum 求和 #使用having对分组筛选后的条件再次筛选
以年级为10分组查询期末考试这张表中的数学平均分并过滤90分以下的
select  avg(math_score) as "平均分" from 期末考试 group by grade having  avg(math_score) >= 90 ;
  •  排序
#根据学生成绩降序查看学生信息:降序(desc) 升序(asc)
select  * from 期末考试 ORDER BY math_score desc;
  • Limit 
limit 初始行数 查询几行#根据学生成绩降序查看学生信息并显示前三行
select  * from 期末考试 ORDER BY math_score desc limit 0,3;

二. 多表连接查询

  • 演示案例:

等值连接:

#查询年级表和期末考试表中数学成绩重复的信息
SELECT * FROM 年级成绩,期末考试
where 期末考试.math_score = 年级成绩.math_score;

 内连接

语法:

SELECT 列名
FROM 表1
INNER JOIN 表2
ON 表1.列名 = 表2.列名;SELECT 列名 指定要查询的列,可以是表1的列、表2的列或者其他计算字段但不能同时属于同一张表
FROM 表1 INNER JOIN 表2 指定要进行连接的两个表,并使用 INNER JOIN 关键字表示内连接。
ON 表1.列名 = 表2.列名 指定连接条件,即连接两个表的列。这里的列名应该是两个表中相同的列名。
#查询期末考试以及年级成绩这两张表中数学成绩相同的学生并显示该学生的总成绩
select total_score from 期末成绩 inner join 年级成绩 
on 期末成绩.math_score = 期末成绩.math_score;

 子查询:A查询的结果是B查询的条件

left join:代表选择的是前面一个表的全部。
左连接是以左表为标准,只查询在左边表中存在的数据,当然需要两个表中的键值一致。语法如下:
SELECT 列名1 FROM 表1 LEFT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;3. right join:代表选择的是后面一个表的全部
同理,右连接将会以右边作为基准,进行检索。语法如下:
SELECT 列名1 FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;

 演示案例:

#查询数学成绩是90的学生总分成绩
select total_score from 期末成绩 
where 期末成绩.math_score = (select math_score from 年级成绩 where 年级成绩.math_score = 92);注:子查询中的语句在查询表中不可重复,因为子查询仅返回B一个查询结果给A查询使用

总结

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

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

相关文章

计算机二级Python题目3

题目来源:计算机二级Python半个月抱佛脚大法(内呈上真题版) - 知乎 目录 1. 基础题 1.1 基础题1 1.2 基础题2 1.3 基础题3 2. turtle绘图题 3. 大题 3.1 大题1 3.2 大题2 1. 基础题 1.1 基础题1 a,b,ceval(input()) ls[] for i in …

视频桥接芯片#LT8912B适用于MIPIDSI转HDMI+LVDS应用方案,提供技术支持。

1. 概述 Lontium LT8912B MIPI DSI 转 LVDS 和 HDMI 桥接器采用单通道 MIPI D-PHY 接收器前端配置,每通道 4 个数据通道,每个数据通道以 1.5Gbps 的速度运行,最大输入带宽高达 6Gbps。 对于屏幕应用,该桥接器可解码 MIPI DSI 18bp…

docker安装Milvus

docker安装Milvus 拉去CPU版本的milvus镜像 $ sudo docker pull milvusdb/milvus:0.10.0-cpu-d061620-5f3c00 docker pull milvusdb/milvus:0.10.0-cpu-d061620-5f3c00 mkdir -p milvus/conf cd milvus/conf ls wget https://raw.githubusercontent.com/milvus-io/milvus/v0.1…

探索编程迷宫:选择你的职业赛道

在现代科技的浪潮中,程序员的职业赛道就像是一座迷宫,充满着前端的美丽花园,后端的黑暗洞穴,以及数据科学的神秘密室。这个迷宫中,每一条通道都充满了挑战和机遇,而每一个行走其中的人都在寻找着属于自己的…

用python爬取CSDN博客的总字数

一、下载pycahrm 此处推荐博客:PyCharm安装教程,图文教程(超详细)-CSDN博客 二、安装相应的库 pycharm安装库的步骤: 1、打开pycharm; 2、在菜单栏中,选择 "file">"setti…

面向量产!基于视觉的速度距离估计

面向量产!基于视觉的速度距离估计 论文名称:Vision-based Vehicle Speed Estimation: A Survey 导读 在精确检测车速车距的方案中,视觉方案是非常具有挑战性的,但由于没有昂贵的距离传感器而大幅降低成本,所以潜力巨…

ByteTrack多目标跟踪——YOLOX详解

文章目录 1 before train1.1 dataset1.2 model 2 train2.1 Backbone2.2 PAFPN2.3 Head2.3.1 Decoupled Head2.3.2 anchor-free2.3.3 标签分配① 初步筛选② simOTA 2.3.4 Loss计算 项目地址: ByteTrack ByteTrack使用的检测器是YOLOX,是一个目前非常流行…

【Review+预测】测试架构演进的曲折之路

文章目录 前言 一、“原始”阶段 二、“小打小闹”阶段 三、“小米加步枪”阶段 四、“摩托化部队”阶段 五、“骑兵连”阶段 六、“海军陆战队”阶段 七、“社区型组织”阶段 前言 近期公司的测试团队需要重新组织安排,本着谦虚谨慎的态度,我从…

视频技术1:使用ABLMediaServer推流rtsp

ABLMediaServer定位是高性能、高稳定、开箱即用、商用级别的流媒体服务器 下边展示了如何把1个mp3作为输入源,转换为rtsp流的过程。 作用:用rtsp模拟摄像头的视频流 1、启动ABLMediaServer ABLMediaServer-2024-03-13\WinX64\ABLMediaServer.exe 配…

Redis中的缓存雪崩

缓存雪崩 🤔现象分析 缓存雪崩是指在同一时段大量的缓存key同时失效或者缓存服务(Redis等)宕机,导致大量请求到达数据库,带来巨大压力。 👊 解决方案 利用Redis集群提高服务的可用性,避免缓存服务宕机给缓存业务添…

流畅的 Python 第二版(GPT 重译)(十)

第十八章:with、match 和 else 块 上下文管理器可能几乎与子例程本身一样重要。我们只是初步了解了它们。[…] Basic 有一个 with 语句,在许多语言中都有 with 语句。但它们的功能不同,它们都只是做一些非常浅显的事情,它们可以避…

打造高效安全的电池管理 | 基于ACM32 MCU的两轮车充电桩方案

随着城市化进程的加快、人们生活水平的提高和节能环保理念的普及,越来越多的人选择了电动车作为代步工具,而两轮电动车的出行半径较短,需要频繁充电,因此在城市中设置两轮车充电桩就非常有必要了。城市中的充电桩不仅能解决两轮车…

数字排列 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 小明负责公司年会,想出一个趣味游戏: 屏幕给出 1−9 中任意 4 个不重复的数字,大家以最快时间给出这几个数字可拼成的数字从小到大排列位于第 n 位置的数字,其中 n 为给出数字中最大的(如果不到这么多数…

diffusion model(十四): prompt-to-prompt 深度剖析

infopaperPrompt-to-Prompt Image Editing with Cross Attention Controlgithubhttps://github.com/google/prompt-to-promptOrg:Google Research个人复现https://github.com/myhz0606/diffusion_learning个人博客主页http://myhz0606.com/article/p2p 1 前言 基于扩散模型&a…

MySQL数据库 - 事务

1. 事务的概念 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中, 要删除一个人员,即需要删除人员的基本资料,又需要删除和该人员相关的信息,如信箱, 文章等等。这样&#x…

移动硬盘故障解析:解决无法访问且位置不可用问题

在我们日常的工作和生活中,移动硬盘已成为存储和传输数据的重要工具。然而,有时我们会遇到移动硬盘无法访问且位置不可用的情况,这无疑给数据的存储和访问带来了极大的困扰。本文将深入探讨这一问题,分析其原因,并给出…

网络工程师练习题6

网络工程师 综合题 计算并填写下表: TP地址191.23.181.13子网掩码255.255.192.0地址类型 (1)网络地址(2)直接广播地址(3)主机号(4)子网内的最后一个可用IP地址&#xf…

mysql的学习笔记

干前端好几年了,只会前端总感觉少了条腿,处处不自在,决定今年学习下后端的东西.以前总想着学node会更快,但是实际工作上却用不上. 出来混,总是要还的,该学的javaWeb这一套体系的东西,总是需要学习的. 那就开始啦. 一,在本地电脑mac上安装mysql 这个参考的这篇文章,照着做一次…

线性顺序表算法库

list.cpp 具体函数实现 #include <stdio.h> #include "list.h" #include <malloc.h>/************************************************** ①函数名: CreateList 功 能: 用数组构建顺序表 参 数: ①SqList *&L:传入的线性表 ②ElemType a[]:使用…

文件上传基础篇

文件上传基础篇 文件上传漏洞原理 ​ 目标网站存在文件上传接口&#xff0c;但是对用户上传的文件没有做仔细甄别&#xff0c;导致黑客可以根据此功能点直接上传木马到网站服务器&#xff0c;造成危害 文件上传存在点 ​ 通常有头像上传&#xff0c;pdf上传 文件上传防护 …