027、SQL语句之DML语句

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

INSERT 语句

INSERT 向表插⼊⾏。语法如下:

  • INSERT INTO table_name (column_list) VALUES (value_list) [,(value_list),…];
  • column_list 中的列数和 values_list 中的值的数量必须相同
  • 值的顺序必须与语句中列的顺序相匹配
  • 将字符串和时间数据类型(推荐)的列值⽤单引号包裹
  • 数值数据⽆需⽤引号

UPDATE 语句

  • 语法:
UPDATE table_name SET col_name1=expression1
 [,col_name2=expression2,...]
 [WHERE condition]
 [ORDER BY ...]
 [LIMIT row_count];
 
tidb> SELECT count(*) FROM universe.planets;
+----------+
| count(*) |
+----------+
| 10 |
+----------+

tidb> UPDATE universe.planets SET gravity = 0.0;
Query OK, 10 rows affected (0.01 sec)
Rows matched: 10 Changed: 10 Warnings: 0

除了赋值的⼦句部分,UPDATE 的其他字句语法和 SELECT ⾮常类似,本质上是找到已存在的表⾏,然后修改它们。

在 UPDATE ⾥使⽤ LIMIT

和 SELECT 的情况⼀样, 需要注意如何确保返回表⾏的顺序:

tidb> SELECT * FROM test.r1;
+----+------+
| id | name |
+----+------+
| 1 | A |
| 2 | C |
+----+------+
2 rows in set (0.00 sec)

tidb> UPDATE test.r1 SET name='Z' WHERE id < 10 LIMIT 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

tidb> SELECT * FROM test.r1;
+----+------+
| id | name |
+----+------+
| 1 | Z |
| 2 | C |
+----+------+
2 rows in set (0.01 sec)

警惕: 本例中的 UPDATE 语句⽆法确定它会修改哪, LIMIT 1 并不能⽤来确定哪个表⾏符合条件。

在 UPDATE ⾥使⽤ ORDER BY 和 LIMIT

tidb> SELECT * FROM test.r1;
+----+------+
| id | name |
+----+------+
| 1 | Z |
| 2 | C |
+----+------+
2 rows in set (0.01 sec)
tidb> UPDATE test.r1 SET name='Z' WHERE id < 10 ORDER BY id DESC
LIMIT 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
tidb> SELECT * FROM test.r1;
+----+------+
| id | name |
+----+------+
| 1 | Z |
| 2 | Z |
+----+------+
2 rows in set (0.00 sec)

就像 SELECT ⼀样,你必须使⽤ ORDER BY 来确保表⾏的顺序。

REPLACE 语句

找到记录的,就是更新,没找到记录的就是插入

  • 在具有主键或唯⼀约束的表中使⽤ REPLACE 语句将现有⾏替换为新的
  • 在没有主键或唯⼀约束的表中,它的作⽤⽅式与 INSERT 语句相同
  • 语句返回的⾏数是删除和插⼊的⾏数的总和
    • rows affected 等于 1: 插⼊了⼀⾏,未删除任何⾏
    • rows affected ⼤于 1: 在插⼊新⾏之前删除了 1 或多个原有⾏。
tidb> SELECT * FROM test.r1;
+----+------+
| id | name |
+----+------+
| 1 | A |
| 2 | B |
+----+------+
tidb> REPLACE INTO test.r1 (id,name) VALUES (2,'C');
Query OK, 2 rows affected (0.00 sec)
tidb> SELECT * FROM test.r1;
+----+------+
| id | name |
+----+------+
| 1 | A |
| 2 | C |
+----+------+

从语义上看,REPLACE 语句是 DELETE 语句和 INSERT 语句的结合,可⽤于简化应⽤程序代码。

避免重复的⾏记录

  • INSERT … ON DUPLICATE KEY UPDATE : 避免重复⾏记录错误
  • 类似于 REPLACE, 但它使⽤ UPDATE ⽽不是 DELETE 来处理重复的⾏记录
tidb> select * from test.r1;
+----+------+--------+
| id | name | gender |
+----+------+--------+
| 1 | Z | F |
| 2 | Z | F |
+----+------+--------+
2 rows in set (0.00 sec)
tidb> replace into test.r1 (id, name) values (1, 'A');
Query OK, 2 rows affected (0.00 sec)

# 如下语句,可看到主键为2的重复了,所以将主键为2这一行当中name列改成B
tidb> insert into test.r1 (id, name) values (2, 'B') on duplicate
key update name='B';
Query OK, 2 rows affected (0.01 sec)

tidb> select * from test.r1;
+----+------+--------+
| id | name | gender |
+----+------+--------+
| 1 | A | NULL |
| 2 | B | F |
+----+------+--------+
2 rows in set (0.00 sec)

DELETE 语句

语法:

DELETE FROM table_name
 [WHERE condition]
 [ORDER BY ...]
 [LIMIT row_count];
tidb> SELECT count(*) FROM universe.planets;
+----------+
| count(*) |
+----------+
| 10 |
+----------+
tidb> DELETE FROM universe.planets;
Query OK, 10 rows affected (0.01 sec)

TRUNCATE 语句

  • 语法: TRUNCATE [TABLE] table_name
  • TRUNCATE TABLE 语句将删除表中所有的⾏
  • 它重置 AUTO_INCREMENT 为起始值
  • 不像 DELETE,它是 DDL,不是 DML,意味着它不能加⼊事务⽤,不能被ROLLBACK
  • 等同于按次序执⾏: DROP TABLE , CREATE TABLE
  • 可能可以使⽤ FLASHBACK TABLE 撤销

TRUNCATE 语句以⾮事务⽅式从表中删除所有数据。可认为 TRUNCATE 语句同DROP TABLE + CREATE TABLE 组合在语义上相同。
TRUNCATE TABLE table_name 和 TRUNCATE table_name 均为有效语法。文章来源地址https://www.toymoban.com/news/detail-526070.html

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

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

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

相关文章

  • SQL语句详解三-DML(数据操作语言)

    DML(数据操作语言):增删改表中数据,针对的对象是数据库中表格的数据。 添加数据 语法 注意事项 列名 要和 值 一一对应 如果表名后,不定义列名,则默认给所有列添加值(方式二) 除了数字类型,其他类型需要使用 引号( 单双都可以 ) 引起来 示例代码 删除数据 语法 注意

    2024年01月21日
    浏览(34)
  • MySQL数据库入门到精通1--基础篇(MySQL概述,SQL)

    目前主流的关系型数据库管理系统: Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。 MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。 目前Oracle推出了收费版本的MySQL,也提供了免费的社区版本。 SQL Server:Microsoft 公司推出的收费的中

    2024年02月07日
    浏览(37)
  • [MySQL从入门到精通]SQL语句

      本期主要的学习目标是SQl语句中的DDL和DML实现对数据库的操作和增删改功能,学习完本章节之后需要对SQL语句手到擒来。 SQL (Structured Query Language)是一种用于管理 关系型数据库 的编程语言。它允许用户在数据库中存储、修改和检索数据,并与关系型数据库进行交互。S

    2024年02月07日
    浏览(23)
  • TiDB数据库从入门到精通系列之六:使用 TiCDC 将 TiDB 的数据同步到 Apache Kafka

    快速搭建 TiCDC 集群、Kafka 集群和 Flink 集群 创建 changefeed,将 TiDB 增量数据输出至 Kafka 使用 go-tpc 写入数据到上游 TiDB 使用 Kafka console consumer 观察数据被写入到指定的 Topic (可选)配置 Flink 集群消费 Kafka 内数据 部署包含 TiCDC 的 TiDB 集群 在实验或测试环境中,可以使用 TiU

    2024年02月12日
    浏览(42)
  • SQL DML语句

    Data Manipulation Language 数据操纵语言,用于数据的增加、删除、更新等操作。包括 INSERT(向表中插入新数据)、UPDATE(修改表中的数据)和 DELETE(从表中删除数据)。 插入数据的时候, 不指定列名直接使用 VALUES指定数据,表示为表中的每一列提供一个值,值的顺序必须与表

    2024年02月05日
    浏览(47)
  • SQL语言的分类:DDL(数据库、表的增、删、改)、DML(数据的增、删、改)

    数据库管理系统(数据库软件)功能非常多,不仅仅是存储数据,还要包含:数据的管理、表的管理、库的管理、账户管理、权限管理等。 操作数据库的SQL语言,基于功能,划分为4类: 1、数据定义:DDL(Data Definition Language) 2、数据操纵:DML(Data Manipulation Language) 3、数据

    2024年02月09日
    浏览(32)
  • 数据库深入浅出,数据库介绍,SQL介绍,DDL、DML、DQL、TCL介绍

            数据(Data):文本信息(字母、数字、符号等)、音频、视频、图片等;         数据库(DataBase):存储数据的仓库,本质文件,以文件的形式将数据保存到电脑磁盘中         数据库管理系统(DBMS):管理、操作、维护数据库的软件         数据库应用程序

    2024年02月06日
    浏览(33)
  • ☆常用的Sql语句汇总(DDL/DML)

    里面有表注释 数据库种类 sql 备注 mysql -- 获取所有表名、视图名 show tables -- 获取 dev_test_data数据库 所有表、视图信息 select * from information_schema.tables where table_schema=\\\'dev_test_data\\\' -- 获取表名、视图名 select table_name from information_schema.tables where table_schema=\\\'dev_test_data\\\' -- 只获取表信息

    2024年02月03日
    浏览(47)
  • sql语句中的ddl和dml

    操作数据库:CRUD C(create) 创建 *数据库创建出来默认字符集为utf8 如果要更改字符集就 Create database 名称 character set gbk(字符集) *创建数据库:create database 名称 *先检查是否有该数据库在创建 create database if not exists 名称 创建db4数据库,判断是否存在,并指定字符集为gbk

    2024年02月11日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包