菜鸟之路Day30一一MySQL之DMLDQL

news2025/5/12 19:45:51

菜鸟之路Day30一一MySQL之DML&DQL

作者:blue

时间:2025.5.8

文章目录

  • 菜鸟之路Day30一一MySQL之DML&DQL
  • 一.DML
    • 0.概述
    • 1.插入语句(insert)
    • 2.更新语句(update)
    • 3.删除语句(delete)
  • 二.DQL
    • 1.基本查询
    • 2.条件查询
    • 3.聚合函数
    • 4.分组查询
    • 5.排序查询
    • 6.分页查询

一.DML

0.概述

DML(数据操作语言),用来对数据库中表的数据记录进行增,删,改操作

1.插入语句(insert)

指定字段添加数据:insert into 表名(字段名1,字段名2)values(1,2);

全部字段添加数据:insert into 表名 values (1,2,..);

批量添加数据(指定字段):insert into 表名(字段名1,字段名2)values(1,2),(1,2)

批量添加数据(全部字段):insert into 表名 values (1,2,.),(1,2,.);

练习:

-- 1.为tb_emp表,字段(username,name,gender)插入一条数据
insert into tb_emp(username,name,gender,create_time,update_time)
            values ('xiaomu','木',2,now(),now());

-- 2.为tb_emp表,全部字段插入一条数据
insert into tb_emp
            values (null,'xiaolan','12345','蓝',1,null,null,null,now(),now());

-- 3.为tb_emp表,字段(username,name,gender)批量插入数据
insert into tb_emp(username,name,gender,create_time,update_time)
values ('ning','宁',2,now(),now()),
       ('lan','岚',1,now(),now());

2.更新语句(update)

修改数据:update 表名 set 字段名1=1,字段名2=2,[where 条件];

练习:

-- 1.将tb_emp表,id为2的用户,用户名改成zhangsan
update tb_emp set username='zhangsan',update_time=now() where id=2;

-- 2.将tb_emp表,所有用户的入职时间改为2010-01-01
update tb_emp set entry_time='2010-01-01',update_time=now();

注意:在更新语句中如果没有加条件就会更新整张表的数据

3.删除语句(delete)

删除数据:delete from 表名 [where 条件];

练习:

-- 1.将tb_emp表中,id为1的用户删除
delete from tb_emp where id=1;

-- 2.将tb_emp表中,所有用户都删除
delete from tb_emp;

DELETE语句不能删除某一个字段的值(如果要操作,可以使用UPDATE,将该字段的值置为NULL)

先插入十五条数据,做为数据库中可被查询的数据

-- 插入数据 1
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (1,'john_doe','password123','John Doe', 1, 'john.jpg', 1, '2012-05-15', now(), now());

-- 插入数据 2
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (2,'jane_smith','securepass','Jane Smith', 2, 'jane.jpg', 2, '2015-09-20', now(), now());

-- 插入数据 3
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (3,'mike_johnson','mypassword','Mike Johnson', 1, 'mike.jpg', 3, '2018-03-10', now(), now());

-- 插入数据 4
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (4,'lisa_brown','pass1234','Lisa Brown', 2, 'lisa.jpg', 1, '2019-11-25', now(), now());

-- 插入数据 5
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (5,'david_wilson','secretpass','David Wilson', 1, 'david.jpg', 2, '2020-07-08', now(), now());

-- 插入数据 6
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (6,'susan_lee','susanpass','Susan Lee', 2, 'susan.jpg', 3, '2013-06-12', now(), now());

-- 插入数据 7
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (7,'tom_wang','tom1234','Tom Wang', 1, 'tom.jpg', 4, '2016-08-18', now(), now());

-- 插入数据 8
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (8,'amy_zhang','amysecure','Amy Zhang', 2, 'amy.jpg', 1, '2017-10-22', now(), now());

-- 插入数据 9
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (9,'peter_liu','peterpass','Peter Liu', 1, 'peter.jpg', 2, '2021-02-03', now(), now());

-- 插入数据 10
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (10,'emily_zhou','emily123','Emily Zhou', 2, 'emily.jpg', 3, '2022-04-16', now(), now());

-- 插入数据 11
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (11,'jack_chen','jackpass','Jack Chen', 1, 'jack.jpg', 4, '2014-07-28', now(), now());

-- 插入数据 12
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (12,'linda_wu','lindasecure','Linda Wu', 2, 'linda.jpg', 1, '2019-01-09', now(), now());

-- 插入数据 13
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (13,'brian_huang','brianpass','Brian Huang', 1, 'brian.jpg', 2, '2020-05-21', now(), now());

-- 插入数据 14
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (14,'grace_he','grace123','Grace He', 2, 'grace.jpg', 3, '2023-03-14', now(), now());

-- 插入数据 15
insert into tb_emp (id, username, password, name, gender, image, job, entry_time, create_time, update_time)
values (15,'kevin_zhang','kevinpass','Kevin Zhang', 1, 'kevin.jpg', 4, '2011-09-06', now(), now());

二.DQL

DQL用来查询数据库中的数据

1.基本查询

查询多个字段:select 字段1,字段2,字段3 from 表名;

查询所有字段(通配符):select * from 表名;

设置别名:select 字段1 [as 别名1],字段2 [as 别名2]from 表名;

去除重复记录:select distinct 字段列表 from 表名;

练习:

-- 1.查询指定字段name,entry_time 并返回
select name,entry_time from tb_emp;

-- 2.查询表所有内容
select * from tb_emp;

-- 3.查询指定字段name,entry_time 并取别名 姓名,入职日期
select name as '姓名',entry_time as '入职日期' from tb_emp;

-- 4.查询员工关联了哪几种职业(不要重复)
select distinct job from tb_emp

2.条件查询

select 字段 from 表名 where 条件

在这里插入图片描述

部分练习:

-- 5.查询id为6的员工
select * from tb_emp where id=6;

-- 6.查询id小于6的员工信息
select * from tb_emp where id<6;

-- 7.查询id在6-10之间的员工信息
select * from tb_emp where id>=6 and id<=10;

select * from tb_emp where id between 6 and 10;

3.聚合函数

介绍:将一列数据作为一个整体,进行纵向计算

select 聚合函数(字段列表) from 表名;
函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

练习:

-- 8.统计员工数量
select count(*) from tb_emp;

-- 9.查询最早入职员工
select min(entry_time) from tb_emp;

-- 10.查询最晚入职员工
select max(entry_time) from tb_emp;

-- 11.求所有员工id总和
select sum(id) from tb_emp;

-- 12.求所有员工id平均数
select avg(id) from tb_emp;

注意:null值不参与所有聚合函数运算

统计数量可以使用:count(*) count(字段) count(常量),推荐使用第一种

4.分组查询

分组查询:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

练习:

-- 13.根据性别分组,统计男性和女性员工的数量 - count(*)
select gender,count(*) from tb_emp group by gender;

-- 14.先查询入职时间在‘2020-01-01’(包含)以前的员工,并对结果根据职位分组,获取员工数量大于等于2的职位
select job,count(*) from tb_emp where entry_time <= '2020-01-01' group by job having count(*) >= 2;

Q:where与having的区别

A:1.执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

2.判断条件不同:where不能对聚合函数进行判断,而having可以

注意事项

分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

执行顺序:where>聚合函数>having

5.排序查询

select 字段列表 from 表名 [where 条件列表] [group by 分组字段] order by 字段1 排序方式1,字段2 排序方式2;

-- 排序方式:ASC:升序(默认值)	DESC:降序

练习:

-- 15.根据入职时间对员工进行,升序排序
select * from tb_emp order by entry_time ASC;

-- 16.根据入职时间对员工进行,降序排序
select * from tb_emp order by entry_time DESC;

-- 17.根据入职时间对员工进行升序排序,若入职时间相同,根据更新时间降序排序
select * from tb_emp order by entry_time ASC,update_time DESC;

注意事项:如果是多字段排序,当第一个字段值相同时,才会对第二个字段进行排序

6.分页查询

select 字段列表 from 表名 limit 起始索引,查询记录数

-- 起始索引 = (页码-1)* 每页记录数

练习:

-- 18.查询第一页,展示5条记录
select * from tb_emp limit 0,5;

-- 19.查询第二页,展示5条记录
select * from tb_emp limit 5,5;

-- 20.查询第三页,展示5条记录
select * from tb_emp limit 10,5;

注意:如果查询的是第一页的数据

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

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

相关文章

基 LabVIEW 的多轴电机控制系统

在工业自动化蓬勃发展的当下&#xff0c;多轴伺服电机控制系统的重要性与日俱增&#xff0c;广泛应用于众多领域。下面围绕基于 LabVIEW 开发的多轴伺服电机控制系统展开&#xff0c;详细阐述其应用情况。 一、应用领域与场景 在 3D 打印领域&#xff0c;该系统精确操控打印头…

《Go小技巧易错点100例》第三十二篇

本期分享&#xff1a; 1.sync.Map的原理和使用方式 2.实现有序的Map sync.Map的原理和使用方式 sync.Map的底层结构是通过读写分离和无锁读设计实现高并发安全&#xff1a; 1&#xff09;双存储结构&#xff1a; 包含原子化的 read&#xff08;只读缓存&#xff0c;无锁快…

需求分析阶段测试工程师主要做哪些事情

在软件测试需求分析阶段&#xff0c;主要围绕确定测试范围、明确测试目标、细化测试内容等方面开展工作&#xff0c;为后续测试计划的制定、测试用例的设计以及测试执行提供清晰、准确的依据。以下是该阶段具体要做的事情&#xff1a; 1. 需求收集与整理 收集需求文档&#x…

项目模拟实现消息队列第二天

消息应答的模式 1.自动应答: 消费者把这个消息取走了&#xff0c;就算是应答了&#xff08;相当于没有应答) 2.手动应答: basicAck方法属于手动应答(消费者需要主动调用这个api进行应答) 小结 1.需要实现生产者,broker server&#xff0c;消费者这三个部分的 2.针对生产者和消费…

5.Redission

5.1 前文锁问题 基于 setnx 实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&#xff0c;可重入锁的意义在于防止死锁&#xff0c;比如 HashTable 这样的代码中&#xff0c;他的方法都是使用 sync…

dify 部署后docker 配置文件修改

1&#xff1a;修改 复制 ./dify/docker/.env.example ./dify/docker/.env 添加一下内容 # 启用自定义模型 CUSTOM_MODEL_ENABLEDtrue# 将OLLAMA_API_BASE_URL 改为宿主机的物理ip OLLAMA_API_BASE_URLhttp://192.168.72.8:11434# vllm 的 OPENAI的兼容 API 地址 CUSTOM_MODE…

数据结构——排序(万字解说)初阶数据结构完

目录 1.排序 2.实现常见的排序算法 2.1 直接插入排序 ​编辑 2.2 希尔排序 2.3 直接选择排序 2.4 堆排序 2.5 冒泡排序 2.6 快速排序 2.6.1 递归版本 2.6.1.1 hoare版本 2.6.1.2 挖坑法 2.6.1.3 lomuto前后指针 2.6.1.4 时间复杂度 2.6.2 非递归版本 2.7 归并排序…

快速入门深度学习系列(3)----神经网络

本文只针对图进行解释重要内容 这就是入门所需要掌握的大部分内容 对于不懂的名词或概念 你可以及时去查 对于层数 标在上面 对于该层的第几个元素 标在下面 输入层算作第0层 对于第一层的w b 参数 维度如下w:4*3 b:4*1 这个叫做神经元 比如对于第一层的神经元 这里说的很…

在线工具源码_字典查询_汉语词典_成语查询_择吉黄历等255个工具数百万数据 养站神器,安装教程

在线工具源码_字典查询_汉语词典_成语查询_择吉黄历等255个工具数百万数据 养站神器&#xff0c;安装教程 资源宝分享&#xff1a;https://www.httple.net/154301.html 一次性打包涵盖200个常用工具&#xff01;无论是日常的图片处理、文件格式转换&#xff0c;还是实用的时间…

Linux 阻塞和非阻塞 I/O 简明指南

目录 声明 1. 阻塞和非阻塞简介 2. 等待队列 2.1 等待队列头 2.2 等待队列项 2.3 将队列项添加/移除等待队列头 2.4 等待唤醒 2.5 等待事件 3. 轮询 3.1 select函数 3.2 poll函数 3.3 epoll函数 4. Linux 驱动下的 poll 操作函数 声明 本博客所记录的关于正点原子…

Java开发经验——阿里巴巴编码规范经验总结2

摘要 这篇文章是关于Java开发中阿里巴巴编码规范的经验总结。它强调了避免使用Apache BeanUtils进行属性复制&#xff0c;因为它效率低下且类型转换不安全。推荐使用Spring BeanUtils、Hutool BeanUtil、MapStruct或手动赋值等替代方案。文章还指出不应在视图模板中加入复杂逻…

机器人手臂“听不懂“指令?Ethercat转PROFINET网关妙解通信僵局

机器人手臂"听不懂"指令&#xff1f;Ethercat转PROFINET网关妙解产线通信僵局 协作机器人&#xff08;如KUKA iiWA&#xff09;使用EtherCAT控制&#xff0c;与Profinet主站&#xff08;如西门子840D CNC&#xff09;同步动作。 客户反馈&#xff1a;基于Profinet…

深度学习 CNN

CNN 简介 什么是 CNN&#xff1f; 卷积神经网络&#xff08;Convolutional Neural Network&#xff09;是专为处理网格数据&#xff08;如图像&#xff09;设计的神经网络。核心组件&#xff1a; 卷积层 &#xff1a;提取局部特征&#xff08;如边缘、纹理&#xff09;通过卷…

MySQL索引原理以及SQL优化(二)

目录 1. 索引与约束 1.1 索引是什么 1.2 索引的目的 1.3 索引分类 1.3.1 数据结构 1.3.2 物理存储 1.3.3 列属性 1.3.4 列的个数 1.4 主键的选择 1.5 索引使用场景 1.6 索引的底层实现 1.6.1 索引存储 1.6.2 页 1.6.3 B 树 1.6.4 B 树层高问题 1.6.5 自增 id 1.7 innod…

MATLAB中矩阵和数组的区别

文章目录 前言环境配置1. 数据结构本质2. 运算规则&#xff08;1&#xff09;基本运算&#xff08;2&#xff09;特殊运算 3. 函数与操作4. 高维支持5. 创建方式 前言 在 MATLAB 中&#xff0c;矩阵&#xff08;Matrix&#xff09; 和 数组&#xff08;Array&#xff09; 的概…

Desfire Ev1\Ev2\Ev3卡DES\3K3DES\AES加解密读写C#示例源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1bYhsS9c&ftt&id917152255720 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using S…

MySQL核心内容【完结】

MySQL核心内容 文章目录 MySQL核心内容1.MySQL核心内容目录2.MySQL知识面扩展3.MySQL安装4.MySQL配置目录介绍Mysql配置远程ip连接 5.MySQL基础1.MySQL数据类型1.数值类型2.字符串类型3.日期和时间类型4.enum和set 2.MySQL运算符1.算数运算符2.逻辑运算符3.比较运算符 3.MySQL完…

C++类和对象进阶 —— 与数据结构的结合

&#x1f381;个人主页&#xff1a;工藤新一 &#x1f50d;系列专栏&#xff1a;C面向对象&#xff08;类和对象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;终会照亮我前方的路 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录 […

Django之账号登录及权限管理

账号登录及权限管理 目录 1.登录功能 2.退出登录 3.权限管理 4.代码展示合集 这篇文章, 会讲到如何实现账号登录。账号就是我们上一篇文章写的账号管理功能, 就使用那里面已经创建好的账号。这一次登录, 我们分为三种角色, 分别是员工, 领导, 管理员。不同的角色, 登录进去…

EXCEL中嵌入其他表格等文件

在EXCEL中嵌入其他表格 先放链接&#xff1a;https://jingyan.baidu.com/article/295430f11708c34d7e00509a.html 步骤如下&#xff1a; 1、打开一个需要嵌入新表格的excel表。 2、切换至“插入”菜单中&#xff0c;单击选择“对象”。 3、如下图所示&#xff0c;会弹出“对象…