MySQL 数据操纵语言 DML

news2024/11/25 14:33:34

文章目录

  • 数据操纵语言 DML
    • INSERT 语句
    • UPDATE 语句
    • DELETE 语句


数据操纵语言 DML

在这里插入图片描述

数据操纵语言(Data Manipulation Language,DML)是 SQL 语言的核心部分之一。在添加、更新或者删除表中的数据时,需要执行 DML 语句。很多时候我们提到数据库的基本操作,都会说增、删、改、查,为什么 DML 里面没有查询?因为 SELECT 查询语句属于数据查询语言 DQL,不属于数据操纵语言 DML,只是在日常工作中,多数研发人员、数据库管理员都习惯性的将 SELECT 语句归入数据操纵语言中,这一点大家需要弄清楚。接下来,我们一起来学习 DML。

INSERT 语句

INSERT 语句用于向表中插入新的记录。其基本语法形式如下:

INSERT INTO table[(column1, column2…)]
VALUES (value1,value2…)

其中 table 是表名,column1,column2…是表中的字段名列表,用“,”隔开;value1,value2…是字段对应的值列表。

INSERT 语句可以有两种书写形式。

第一种形式无需指定要插入数据的列名,只需提供被插入的值即可。比如往 city 表中再插入一条阿富汗(代码 AFG)这个国家的城市信息。先查看插入前 city 表中现存的阿富汗的城市,其 SQL 语句如下:

select * from city where countrycode ='AFG';

输出结果:

MariaDB [world]> select * from city where countrycode ='AFG';
+----+----------------+-------------+----------+------------+
| ID | Name           | CountryCode | District | Population |
+----+----------------+-------------+----------+------------+
|  1 | Kabul          | AFG         | Kabol    |    1780000 |
|  2 | Qandahar       | AFG         | Qandahar |     237500 |
|  3 | Herat          | AFG         | Herat    |     186800 |
|  4 | Mazar-e-Sharif | AFG         | Balkh    |     127800 |
+----+----------------+-------------+----------+------------+
4 rows in set (0.001 sec)

接下来,我们往 city 表中插入的城市信息如下表所示:

IDNameCountryCodeDistrictPopulation
4080FarahAFGFarah500000

因为 city 中已经存在 4079 条记录,此时我们的 ID 为 4080。实现插入的 SQL 语句如下:

insert into city values(4080,'Farah','AFG','Farah',500000);

输出结果:

MariaDB [world]> insert into city values(4080,'Farah','AFG','Farah',500000);
Query OK, 1 row affected (0.002 sec)

该方式因为没有在表名后面跟字段名,所以插入的信息必须和表中字段的顺序保持一致。检查插入信息是否完成。结果如下:

select * from city where countrycode ='AFG';

输出结果:

MariaDB [world]> select * from city where countrycode ='AFG';
+------+----------------+-------------+----------+------------+
| ID   | Name           | CountryCode | District | Population |
+------+----------------+-------------+----------+------------+
|    1 | Kabul          | AFG         | Kabol    |    1780000 |
|    2 | Qandahar       | AFG         | Qandahar |     237500 |
|    3 | Herat          | AFG         | Herat    |     186800 |
|    4 | Mazar-e-Sharif | AFG         | Balkh    |     127800 |
| 4080 | Farah          | AFG         | Farah    |     500000 |
+------+----------------+-------------+----------+------------+
5 rows in set (0.001 sec)

第二种形式就是表名后面跟字段名,此时字段名的顺序可以随意指定,不需要按照表中字段的顺序列出。待插入的城市信息如下表所示:

IDNameCountryCodeDistrictPopulation
4081BalkhAFGBalkh400000

实现插入的 SQL 语句如下:

insert into city(Name,District,ID,CountryCode,Population) values('Balkh','Balkh',4081,'AFG',400000);

表名后的字段顺序已经被打乱了,此时 values 后面的值就必须和前面的字段顺序保持一致。检查插入后的信息,结果如下:

select * from city where countrycode ='AFG';

输出结果:

MariaDB [world]> select * from city where countrycode ='AFG';
+------+----------------+-------------+----------+------------+
| ID   | Name           | CountryCode | District | Population |
+------+----------------+-------------+----------+------------+
|    1 | Kabul          | AFG         | Kabol    |    1780000 |
|    2 | Qandahar       | AFG         | Qandahar |     237500 |
|    3 | Herat          | AFG         | Herat    |     186800 |
|    4 | Mazar-e-Sharif | AFG         | Balkh    |     127800 |
| 4080 | Farah          | AFG         | Farah    |     500000 |
| 4081 | Balkh          | AFG         | Balkh    |     400000 |
+------+----------------+-------------+----------+------------+
6 rows in set (0.001 sec)

插入的信息仍然会按原表的字段顺序进行显示。

在表中我们可以设置整数类型的字段进行自动增长(后面会细讲),city 表中的 ID 拥有自动增长属性。设置了该属性的字段,在进行插入操作的时候,其值使用 null 来代替。插入一个阿富汗城市,待插入的城市信息如下表所示:

IDNameCountryCodeDistrictPopulation
nullGhorAFGGhor300000

其 SQL 语句如下:

insert into city(ID,Name, CountryCode, District ,Population) values(null,'Ghor','AFG', 'Ghor',300000);

检查插入后的信息,结果如下:

select * from city where countrycode ='AFG';

输出结果:

MariaDB [world]> select * from city where countrycode ='AFG';
+------+----------------+-------------+----------+------------+
| ID   | Name           | CountryCode | District | Population |
+------+----------------+-------------+----------+------------+
|    1 | Kabul          | AFG         | Kabol    |    1780000 |
|    2 | Qandahar       | AFG         | Qandahar |     237500 |
|    3 | Herat          | AFG         | Herat    |     186800 |
|    4 | Mazar-e-Sharif | AFG         | Balkh    |     127800 |
| 4080 | Farah          | AFG         | Farah    |     500000 |
| 4081 | Balkh          | AFG         | Balkh    |     400000 |
| 4082 | Ghor           | AFG         | Ghor     |     300000 |
+------+----------------+-------------+----------+------------+
7 rows in set (0.000 sec)

这里需要强调两点:

  1. 在插入记录的时候,我们一般要求表名后面跟上字段名,这样对于软件开发人员来说,提高了代码的可读性。
  2. 在插入数据的时候需要满足该表的其他约束,city 表中就存在一个外键约束 countrycode(有关约束的内容,本章后面的课程会详细介绍)。

UPDATE 语句

修改数据也是经常用到的数据库管理操作。在数据库中使用 UPDATE 语句对数据进行修改,其基本语法形式如下:

UPDATE table SET column1=value1, column2=value2 [where子句]

UPDATE、SET 是该语法的固定形式。其中 table 表示的是表名,column1、column2 表示的是要修改的字段名,value1、value2 表示的是修改后的值。

值得注意的是,在使用 UPDATE 语句时,通常需要使用 WHERE 子句进行条件限制,用来指定被修改的行。如果没有 WHERE 子句,则表中所有的记录都会被修改。

把 ID 为 4082 的这条记录的人口数量更改为 350000,实现 SQL 语句如下:

update city set population = 350000 where id = 4082;

输出结果:

MariaDB [world]> update city set population = 350000 where id = 4082;
Query OK, 1 row affected (0.004 sec)
Rows matched: 1  Changed: 1  Warnings: 0

查看修改后的结果,如下:

select * from city where id = 4082;

输出结果:

MariaDB [world]> select * from city where id = 4082;
+------+------+-------------+----------+------------+
| ID   | Name | CountryCode | District | Population |
+------+------+-------------+----------+------------+
| 4082 | Ghor | AFG         | Ghor     |     350000 |
+------+------+-------------+----------+------------+
1 row in set (0.001 sec)

UPDATE 也可以同时更新多个字段,如语法介绍的那样,多字段之间用“,”隔开。同时更新 ID 为 4082 的 District 字段和 Population 字段。其 SQL 语句如下:

update city set district='Ghor1',population='355000' where id=4082;

查看修改后的结果,如下:

select * from city where id = 4082;

输出结果:

MariaDB [world]> select * from city where id = 4082;
+------+------+-------------+----------+------------+
| ID   | Name | CountryCode | District | Population |
+------+------+-------------+----------+------------+
| 4082 | Ghor | AFG         | Ghor1    |     355000 |
+------+------+-------------+----------+------------+
1 row in set (0.000 sec)

注意:和 INSERT 语句一样,使用 UPDATE 语句时也要注意字段的约束控制。

DELETE 语句

数据库操作语言 DML 包括 INSERT 语句、UPDATE 语句以及 DELETE 语句。接下来要介绍的就是删除语句。其基本语法形式如下:

DELETE FROM table [WHERE]

其中 table 表示表名,如果 DELETE 子句中不写 WHERE 子句,那么删除的将会是表中的所有数据。 现删除 city 表中 ID 为 4082 的城市记录,其 SQL 语句如下:

delete from city where id = 4082;

输出结果:

MariaDB [world]> delete from city where id = 4082;
Query OK, 1 row affected (0.002 sec)

利用 select 子句查看删除后的结果。

select * from city where id = 4082;

输出结果:

MariaDB [world]> select * from city where id = 4082;
Empty set (0.000 sec)

同时删除多条记录可以使用 in 链接符来完成。比如,现要同时删除 city 表中 ID 为 4080 和 4081 的两条记录,其 SQL 语句如下:

delete from city where id in(4080,4081);

输出结果:

MariaDB [world]> delete from city where id in(4080,4081);
Query OK, 2 rows affected (0.002 sec)

查看结果如下:

select * from city where id in(4080,4081);

输出结果:

MariaDB [world]> select * from city where id in(4080,4081);
Empty set (0.000 sec)

注意:利用 DELETE 子句删除记录的时候,一定要结合着 WHERE 子句使用,进行精确删除。DELETE 子句后不跟 WHERE 子句的另外一个用途,就是进行清空数据操作。

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

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

相关文章

Unity导入Android aar包实现交互全流程

一.搭建Android项目 1.创建一个Android空项目 点击finish后,就等待编译,过程中会自动下载一些插件 等待... 等待... 编译完成: 2.创建Module 右键该工程的app,新建一个Module, Language:Kotlin语法和Java语法,语法不同,后续创建的代码文件有所差异,但不影响代码编…

地震勘探基础(六)之地震反褶积

地震反褶积 地震资料常规处理主要包括地震反褶积,水平叠加和偏移成像三大内容。水平叠加可以提高地震资料的信噪比,偏移成像可以提高地震资料的空间分辨率和保真度,地震反褶积可以提高地震资料的分辨率和压制干扰波。 1954年,Ro…

Python心经(5)

目录 python对于类和实例,,都能随时动态绑定 属性或者函数 可以通过__slots__去限定实例所能绑定属性的范围 python里面类很多定制函数__xx__ 下面给个python里面枚举类型 对type函数去实现 有关迭代器: 生成器: 可迭代对…

【Linux编译器gcc/g++】带你了解代码是如何变成可执行程序的!

Linux编辑器gcc/g的使用 背景知识gcc的使用预处理(进行宏替换)编译(生成汇编)汇编(生成及其可识别代码)链接(生成可执行文件或者库文件)库 动态库vs静态库 debug和release🍀小结🍀 🎉博客主页:小智_x0___0x…

【FPGA零基础学习之旅#6】ip核基础知识之计数器

🎉欢迎来到FPGA专栏~ip核基础知识之计数器 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家…

[网络工程]小型局域网组建的常用命令(ENSP)

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 目录 1、引言2、常用命令(ENSP)常规VTYConsole端口安全单臂路由DHCPNATACL基础ACL高级ACL GVRPSTP 1、引言 局域网(Local A…

C++学习——第一节课-初识C++

大家好,我是涵子。今天我们来开始学习C。 目录 一、课前准备 二、C的第一个程序 2.1.C是个啥 2.2.C的第一个程序编写 2.2.1.头文件 2.2.2.命名空间 2.2.3.主程序函数 2.2.4.输出流 2.2.5.代码结束 三、其它的应用 3.1.输出三角形,矩形和勾 …

单例模式C++实现和观察者模式C++实现

目录 1、单例模式介绍 2、单例代码实现 2.1 static介绍 2.2 C中static的三种用法: (1)静态局部变量 (2)静态成员变量 (3)静态成员函数 3、观察者模式介绍 4、观察者代码实现 1、单例模…

.ini配置文件介绍与解析库使用

【前言】 ini 文件是英文"Initialization"的缩写,即初始化文件。它用来配置特定应用软件以实现对程序初始化或进行参数设置。.ini文件由节(section)、键(key)、值(value)三种模块构成。在windows系统/嵌入式软件中有很多XXX.ini文件,例如Syste…

IDC机房相电压与线电压的关系

380V电动机(三相空调压缩机)的电流计算公式为:Ⅰ=额定功率(1.732额定电压功率因数效率)。 功率因数是电力系统的一个重要的技术数据。功率因数是衡量电气设备效率高低的一个系数。功率因数低,说…

通过源码编译安装搭建 LNMP平台

搭建LNMP平台 一. 安装Nginx服务1.1 安装依赖包1.2 创建运行用户1.3 编译安装1.4 优化路径1.5 添加 Nginx 系统服务 二. 安装mysql服务2.1 安装Mysql环境依赖包2.2 创建运行用户2.3 编译安装2.4 修改mysql 配置文件2.5 更改mysql安装目录和配置文件的属主属组2.6 设置路径环境变…

VMware安装Windows11

VMware安装Windows11 嘚吧嘚准备工作VMware下载Windows11下载 VMware安装Windows11VMware配置安装Windows11 嘚吧嘚 最近在搞一些自己感兴趣的东西,需要(临时)安装一些软件来验证,考虑到用完还要卸载,不想把自己的电脑搞得乱七八糟&#x1f…

字节序及IP地址转换

一、主机字节序和网络字节序 1.什么是字节序? 字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序,分为:大端字节序(Big endian)、小端字节序(Little endian)。 示例&am…

前端技术双周刊 2023-06-04:React 发布 10 周年整

项目地址:olivewind/weekly 微信公众号:依赖注入 发布时间:2023.06.04 本周内容:资讯x3、开源x4、文章x5 动态 React 圆桌会议 - Server Components, Suspense 和 Actions 为庆祝 React 成立 10 周年,Delba de Oliveir…

MySQL 约束控制

文章目录 约束控制非空约束主键约束默认值约束唯一约束外键约束 约束控制 数据的完整性约束(简称“约束”)是在表和字段上强制执行的数据检测规则,是为了防止不规范的数据进入数据库。当我们对数据进行 DML 操作时,数据库管理系统…

被面试官上过一课后,我学到的不止是如何答题

写在前面双向奔赴切勿急于否定自己做足功课关于简历关于简历投递常见面试题汇总● 按照一般的面试流程,先来一个自我介绍吧● 你的优点和缺点是什么● 你理解的项目经理是干什么的● 能完整的说一下软件项目的整个流程么● 项目经理和产品经理的区别在哪里● 项目管…

UniAD:实现多类别异常检测的统一模型

来源:投稿 作者:Mr.Eraser 编辑:学姐 论文标题:用于多类异常检测的统一模型 论文链接:https://arxiv.org/abs/2206.03687 论文贡献: 提出UniAD,它以一个统一框架完成了多个类别的异常检测。 …

Jetson 硬件 安装SSD固态作为启动盘以及安装CUDA等

Jetson硬件的自带闪存一般较小,只能安装jetpack等基本的环境,所以需要额外增加SSD固态或SD卡作为存储空间,很明显SSD的读取速度远远大于SD卡,所以为更好发挥出Jetson 的计算性能,我们选择使用SSD固态作为存储 1. 安装…

随机森林原理和性能分析

文章目录 随机森林入门构造随机森林随机森林性能随机森林特点 随机森林入门 决策树入门、sklearn实现、原理解读和算法分析中针对决策树进行了详细的描述,但是其只考虑了一颗决策树的情况。俗话说,三个臭皮匠,顶个诸葛亮。本文将研究如何通过…

C++:深入理解多态,多态实现原理及拓展

文章目录 1. 理解虚表1.1 虚表1.2 验证1.3 子类虚表1.4 相同类不同对象的虚表 2. 静态绑定和动态绑定2.1 静态绑定2.2 动态绑定 3. 多态的实现原理3.1 向上转型3.2 多继承3.3 原理 4. 拓展4.1 构造函数能不能是虚函数4.2 父类和子类的析构函数在底层的命名问题4.3 对象之间无法…