MySQL 数据操纵语言 DML

这篇具有很好参考价值的文章主要介绍了MySQL 数据操纵语言 DML。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


数据操纵语言 DML

MySQL 数据操纵语言 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 表中插入的城市信息如下表所示:

ID Name CountryCode District Population
4080 Farah AFG Farah 500000

因为 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)

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

ID Name CountryCode District Population
4081 Balkh AFG Balkh 400000

实现插入的 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 来代替。插入一个阿富汗城市,待插入的城市信息如下表所示:

ID Name CountryCode District Population
null Ghor AFG Ghor 300000

其 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 子句的另外一个用途,就是进行清空数据操作。文章来源地址https://www.toymoban.com/news/detail-471301.html

到了这里,关于MySQL 数据操纵语言 DML的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL数据库基础(八):DML数据操作语言

    文章目录 DML数据操作语言 一、DML包括哪些SQL语句 二、数据的增删改(重点) 1、数据的增加操作 2、数据的修改操作 3、数据的删除操作 insert插入、update更新、delete删除 增加:insert 删除:delete 修改:update 1、数据的增加操作  基本语法: 特别注意:在SQL语句中,除了数字,

    2024年02月19日
    浏览(51)
  • 【MySQL】C语言连接数据库

    我们之前学习数据库都是在 Linux 的 mysql 客户端下以纯 命令行 的方式操作的,但其实,我们也可以使用 C/C++/Java/Python 等语言来连接数据库,向 mysqld 下达 sql 语句并获取执行结果。不过,在这之前,我们需要先安装 MySQL 对应的库,这里我们以 C 语言连接数据库为例。 关于

    2024年02月08日
    浏览(34)
  • mysql 数据库定义语言(DDL)

    目录 库的操作 数据库创建 数据库编码集 数据库删除 数据库修改 数据库查询 数据库备份 表的操作 表的创建 查询表 删除表 修改表 这里先声明一下,这篇文章主要是讲数据库表的定义操作,也就是 DDL,只要是对数据库以及表结构操作的 SQL 数据库的创建,其实在之前我们浅

    2024年02月12日
    浏览(42)
  • Go语言操作MySql数据库

           go-sql-driver/mysql库是Go语言官方推荐的MySQL驱动库,可以很方便地实现对MySQL数据库的连接和操作。本文记录一下使用go-sql-driver/mysql数据库驱动来操作mysql数据库。 目录 1.安装驱动程序 2.导入驱动包 3.操作数据库 3.1 获取mysql版本 3.2 创建表 3.3 表中插入数据 3.4 表中删除

    2024年02月07日
    浏览(37)
  • MySQL数据库基础(十):DQL数据查询语言

    文章目录 DQL数据查询语言 一、数据集准备 二、select查询 三、简单查询 四、条件查询 1、比较查询 2、范围查询 3、逻辑查询 4、模糊查询 5、非空查询 五、排序查询 六、聚合查询 七、分组查询与having子句 1、分组查询介绍 2、group by的使用 3、group by + 聚合函数的使用 4、gro

    2024年02月21日
    浏览(44)
  • 【MySQL】数据库的查询语言DQL

    目录 前言: 一.基本查询 1.1查询多个字段 1.2设置别名 1.3去除字段中重复的值 二.条件查询 2.1条件的种类 2.1.1比较运算符 2.1.2逻辑运算符 三.结尾   在前面讲完了如何增删改数据表中的记录后,那么如何使用这些数据就成了另一个重点。   当我们浏览网站的时候,商品的各种

    2024年02月08日
    浏览(44)
  • Go 语言实现 MySQL 数据库事务

    MySQL事务是指一组数据库操作,它们被视为一个逻辑单元,并且要么全部成功执行,要么全部回滚(撤销)。事务是数据库管理系统提供的一种机制,用于确保数据的一致性和完整性。 事务具有以下特性(通常由ACID原则定义): 原子性(Atomicity):事务中的所有操作要么全

    2024年02月08日
    浏览(47)
  • 【MySQL】——关系数据库标准语言SQL(大纲)

    🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:数据结构_IT闫的博客-CSDN博客 🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客 💎C++:C++_IT闫的博客-CSDN博

    2024年01月20日
    浏览(62)
  • MySQL数据库基础(五):SQL语言讲解

    文章目录 SQL语言讲解 一、SQL概述 二、SQL语句分类 1、DDL 2、DML 3、DQL 4、DCL 三、SQL基本语法 1、SQL语句可以单行或多行书写,以分号结尾 2、可使用空格和缩进来增强语句的可读性 3、MySQL数据库的SQL语句不区分大小写,建议使用大写  4、可以使用单行与多行注释 四、总

    2024年02月19日
    浏览(57)
  • 【MySQL系列】使用C语言来连接数据库

    ☕导航小助手☕      🍚 写在前面           🥡 一、准备工作                🧇🧇 1.1 把 libmysql.dll 和 libmysql.lib 文件复制到工程目录下                🍞🍞 1.2 添加 libmysql.lib                 🦪🦪 1.3 添加 include目录                🍔🍔 1.4 包含头文件    

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包