MySQL基础之DML语句

MySQL基础之DML语句DML 语句 DML DataManipula 语句 数据操纵语句 用途 用于添加 修改 删除和查询数据库记录 并检查数据完整性 常用关键字 insert update delete select 等 DML 操作的对象是库表的数据 记录 主要包括插入 insert 更新 update 删除 delete 和查询 select DML 语句是开发人员使用最频繁的操作 1 插入记录插入一条记录 insertintota f

DML 语句

DML(Data Manipulation Language)语句:数据操纵语句。

用途:用于添加、修改、删除和查询数据库记录,并检查数据完整性。

常用关键字:insert、update、delete、select等。

DML 操作的对象是库表的数据(记录)

主要包括插入(insert)、更新(update)、删除(delete)和查询(select)。

DML 语句是开发人员使用最频繁的操作。

1.插入记录

插入一条记录

insert into tablename (field1,field2,...,fieldn) values (value1,value2,...,valuen); 

一次性插入多条数据 

insert into tablename (field1,field2,...,fieldn) values (value1,value2,...,valuen), (value1,value2,...,valuen);

2.更新记录

更新单表数据

update tablename set field1=value1,filed2=value2,...fieldn=valuen [where condition]

同时更新多个表的数据

update t1,t2,...,tn set t1.field1=expr1,tn.field=exprn [where condition];

通常用于根据一个表的字段来动态地更新另外一个表的字段

 在此说明:中括号 “[ ]” 代表的是可选参数,即可有可无的参数。

3.简单查询记录

简单的条件查询。符号“*”代表查询所有字段,如果只想看其中某些列,则写表的列名。

select * from tablename [where condition]; select field1,field2,...,fieldn from tablename [where condition];

别名

    给列名表名取别名的关键字:AS 或者不写关键字。如:

select field1 AS f1,field2 f2 from tablename; select t2.field1 AS f1,t1.field2 f2 from table1 as t1,table2 t2;

不取别名,则查询结果的列名为表原本的列名;

取别名,则查询结果的列名为别名

MySQL基础之DML语句

4.删除记录

删除单表记录

delete from tablename [where condition];

同时删除多个表的数据

delete t1,t2,...,tn from t1,t2,...,tn [where condition];

说明:不加where 条件则删除全表数据

单表“增改查删”操作案例:

MySQL基础之DML语句

多表“删除”操作案例:

MySQL基础之DML语句

  再看个删除案例

MySQL基础之DML语句

 最后再看个删除案例

MySQL基础之DML语句

  多表删除结论:

  条件成立,则删除有条件表的对应数据,没条件的则全表删除;

  条件不成立,则都不删除。

留个疑问:多表删除不给where 条件会怎样呢?

关于同时更新多个表数据的操作,可以自行探索,毕竟有思考的学习最有价值。

5.查询记录详解(DQL语句

DQL(Data Query Language)即数据库查询语言。

数据库查询语句就像玩积木一样,一块一块的拼凑,每个中括号“[]”代表一块积木。

先通过递进的方式一条一条列出查询语法。

5.1.查询不重复的记录

select distinct filed from tablename;

MySQL基础之DML语句

distinct 关键字是对 “查询结果集” 去重,再看个例子就明白了。

MySQL基础之DML语句

5.2.条件查询

--查询所有列: select * from tablename [where condition]; --查询指定列: select [field1,field2,...,fieldn] from tablename [where condition];

常用的条件(condition)

等于:field = xxx 大于:field > xxx 小于:field < xxx 不等于:field != xxx 不等于:field <> xxx 等于null:field is null 不等于null:field is not null 多个条件之间用逻辑运算符:and 和 or 模糊查询之"_":field like _x_xx_ 符号"_"代表匹配单个任意字符,可以在你喜欢的字符旁加上"_" 模糊查询之"%":field like %x%xx% 符号"%"代表匹配0~n个任意字符,可以在你喜欢的字符旁加上"%" in语句查询:field in(value1,value2,...) 查询field 和 in 数组配得上的,不配就没有数据 not in语句查询:field not in(value1,value2,...) 查询field 和 in 数组配不上的,不配就有数据

MySQL基础之DML语句

其它常用条件具体怎么用,参考常用条件去操作。

5.3.聚合查询

--最简单的聚合查询: select [field1,field2,...,fieldn] fun_name from tablename group by field; --完整语法: select [field1,field2,...,fieldn] fun_name from tablename [where condition] [group by field1,field2,...,fieldn [with rollup]] [having condition];

说明:

fun_name 表示聚合函数,常用有:求和sum()、记录数count(*)、平均值avg()、最大值max()、最小值min(); [where condition] 就是上面讲的条件查询; [group by field1,field2,...,fieldn [with rollup]]   group by 关键字表示对field字段进行分类聚合;   with rollup 关键字表示是否对分类聚合后的结果进行再汇总 [having condition] 对分类聚合后的查询结果集进行条件的过滤
where 和 having 的区别:
  1. where 是分组的条件过滤;having 是分组的条件过滤。
  2. where 是用原表列名条件过滤;having 是用查询结果集列名条件过滤

    优先选择where 条件过滤,这样可以减少结果集,进而提高分类聚合的效率。

中括号”[]”代表可选的意思,也就是说group by 前面的[where condition] 可有可无,后面的[with rollup] 和 [having condition] 也是可有可无。

group by 和distinct 的区别:     group by 是对指定进行分组;distinct 是对查询结果进行去重。

MySQL基础之DML语句

加入where 和 having的例子:

MySQL基础之DML语句

列名为avg(stu_age) 看着有点怪怪,给他取个别名就一目了然:

MySQL基础之DML语句

5.4.排序查询

--最简单的排序查询: select * from tablename order by field; --完整语法: select [field1,field2,...,fieldn] fun_name from tablename [where condition] [group by field1,field2,...,fieldn [with rollup]] [having condition] [order by field1 [desc|asc], field2 [desc|asc],...,fieldn [desc|asc]];
DESC 代表降序(从大到小);ASC 代表升序(从小到大),asc为默认排序。也就是说你只要记住desc 就可以了。碰巧的是desc 是查询表设计的关键字,而且语法很简单:desc tablename;

单列排序:

MySQL基础之DML语句

多列排序:用符号 “,” 隔开即可

MySQL基础之DML语句

5.5.limit查询

  又称为限制查询、范围查询、分页查询

--最简单的limit查询:offset_start和数组下标一样,从0开始算 select * from tablename limit offset_start,row_count; --完整语法:这条sql是单表查询的完整版 select [field1,field2,...,fieldn] fun_name from tablename [where condition] [group by field1,field2,...,fieldn [with rollup]] [having condition] [order by field1 [desc|asc], field2 [desc|asc],...,fieldn [desc|asc]] [limit offset_start,row_count];

例子1:从第1条开始,查询两条数据

例子2:从第2条开始,查询两条数据

MySQL基础之DML语句

5.6.连查询

在需要关联多个表数据时使用。 学习左连接和内连接即可。

左连接:选出左表所有的记录,不管右表有没有和它匹配;左表是主,关联右表信息

select * from t1 left join t2 on t1.field1=t2.field2;

内连接:仅选出两张表中互相匹配的记录,没有匹配则结果为空

select * from t1 inner join t2 on t1.field1=t2.field2; select * from t1,t2 where t1.field1=t2.field2;

MySQL基础之DML语句

5.7.子查询

在需要另外一个查询结果作为查询条件时使用。子查询用“()” 括起来。

如:查询学生“张三”的成绩

MySQL基础之DML语句

某些情况下,子查询可以转化为连表查询。如上面的例子可以写成连表查询:

MySQL基础之DML语句

5.8.记录联合

 将两个过多个表的查询结果合并成结果集输出。合并的条件是多个表的查询结果字段数要相同,注意是查询结果字段数不是表字段数。

select f1,f2,...,fn from t1 union/union all select f1,f2,...,fn from t2 ... union/union all select f1,f2,...,fn from tn

MySQL基础之DML语句

查询结果字段数不等,则报错

MySQL基础之DML语句

固定查询结果集字段数

MySQL基础之DML语句

5.9.select语句的执行顺序

自行证明该执行顺序是否正确,也算是对前面所学知识的一个巩固。​

(7) SELECT (8) DISTINCT 
  
    (1) FROM 
   
     (3) 
    
      JOIN 
     
       (2) ON 
      
        (4) WHERE 
       
         (5) GROUP BY 
        
          (6) HAVING 
         
           (9) ORDER BY 
          
            (10) LIMIT 
            
           
          
         
        
       
      
     
    
  

6.总结

到此为止,关于日常操作最为频繁的表数据的插入(insert)、更新(update)、删除(delete)和查询(select)语句就讲完了。最为繁杂的查询语句,又名为DQL语句,是DML语句中的重点。

关注公众号学习更多有关数据库的知识和获取数据库免费电子书。

MySQL基础之DML语句

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176199.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午10:29
下一篇 2026年3月26日 下午10:30


相关推荐

  • MySQL创建数据库及常用命令

    MySQL创建数据库及常用命令一配置 MySQLServer 配置 MySQLServer 之后可以在 cmd 窗口中直接使用 MySQL 的命令 配置方式如下 在系统环境变量中添加一条 path 路径 C ProgramFiles MySQL MySQLServer5 7 bin 二 MySQL 操作常用命令 1 登录数据库 mysql hlocalhost uroot p h 表示主机名 这里在本地

    2026年3月16日
    2
  • C++ 输入的是1.3变1.29999995问题

    C++ 输入的是1.3变1.29999995问题今天一位粉丝在评论中问到了这个问题,我简单的说了原理和改进方法,将float改为double就可以了,下面我进行详细整理先说一下debug是啥意思马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而…

    2022年8月18日
    8
  • 脉冲雷达信号处理流程

    脉冲雷达信号处理流程1 FPGAAD 采集回波 连续 M 个脉冲回波经过相干解调之后的基带数据形成的一个二维数据矩阵 上图只是雷达三维数据块的一个切面 其中数据的每一行代表的是对同一个距离单元的一连串脉冲测量 每一列对应的是一个脉冲回波的连续采样 也叫连续的距离门 其中每个小方块的元素都是一个复数 代表每个个距离单元的 I Q 分量 2 IQ 路信号进行数字下变频处理 核心是将中频 A D 采样信号与 DDC 中的数字控制振荡器 NCO 产生的本地数字中频载波信号进行混频 将中频信号下变频到基带 3 滤波处理

    2026年3月26日
    2
  • northwind数据库mysql下载_SQLEXPRESS 2012 安装NorthWind和Pub数据库

    northwind数据库mysql下载_SQLEXPRESS 2012 安装NorthWind和Pub数据库SQLEXPRESS20 安装 NorthWind 和 Pub 数据库安装 SQL 后 学习时总是没有这两个示例数据库 先从微软那里下载此文件 网址 id 23654 然后点击安装 SQL2000Sampl msi 安装完成后 找到目录 C SQLServer200 点击 instnwnd sql 然后 SQLEXPRESS20 安装 NorthWi

    2026年3月17日
    2
  • linux下ll命令查看文件属性_linux中ll命令没用

    linux下ll命令查看文件属性_linux中ll命令没用ll命令其实就是ls-l,当然如果想显示隐藏信息就是ls-al。我个人是特别喜欢ll代替ls-al命令,并且还要有颜色的那种。今天卸载软件重新安装环境变量怎么都不对了,一生气把环境变量都清空了。命令:unsetPATH然后就手动添加环境变量:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/…

    2025年11月27日
    4
  • IIS无法启动计算机上的服务W3SVC如何修复

    IIS无法启动计算机上的服务W3SVC如何修复错误提示启动 iis7 管理服务器提示 无法启动计算机上的服务 W3SVC 启动 WindowsProce 服务 报错 6801 指定资源管理器中的事务支持未启动或已关闭 nbsp 启动 worldwideweb 服务 报错 1068 依赖服务或组无法启动修复错误运行命令提示符 fsutilresour

    2026年3月18日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号