• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解mysql DML语句的使用

    前言:

    在上篇文章中,主要为大家介绍的是DDL语句的用法,可能细心的同学已经发现了。本篇文章将主要聚焦于DML语句,为大家讲解表数据相关操作。

    这里说明下DDL与DML语句的分类,可能有的同学还不太清楚。

    DDL(Data Definition Language):数据定义语言,用于创建、删除、修改、库或表结构,对数据库或表的结构操作。常见的有create,alter,drop等。

    DML(Data Manipulation Language):数据操纵语言,主要对表记录进行更新(增、删、改)。常见的有insert,update,delete等。

    1.插入数据

    插入数据主要用到的是insert语法,官方文档同样给出很多选项:

    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] {VALUES | VALUE} (value_list) [, (value_list)] ... [ON DUPLICATE KEY UPDATE assignment_list]
    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] SET assignment_list [ON DUPLICATE KEY UPDATE assignment_list]
    INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [PARTITION (partition_name [, partition_name] ...)] [(col_name [, col_name] ...)] SELECT ... [ON DUPLICATE KEY UPDATE assignment_list]
    value: {expr | DEFAULT}
    value_list: value [, value] ...
    assignment: col_name = value
    assignment_list: assignment [, assignment] ...

    有兴趣的同学可以咨询研究下上面的各个选项哦,下面我将分类给大家介绍几个常用的语法。

    INSERT INTO ... VALUES (...)

    这可能是你写insert语句最常用的一种,标准用法为:

    INSERT INTO 表名> [ 列名1> [ , … 列名n>] ]VALUES (值1) [… , (值n) ];
    INSERT INTO table(column1,column2...)VALUES (value1,value2,...), (value1,value2,...),...;

    语法说明如下:

    INSERT ... SET ...

    insert ... set语句一次只能插入一条数据,可以向表中插入部分列的值,这种方式更为灵活。

    INSERT INTO 表名>SET 列名1> = 值1>, 列名2> = 值2>, …

    INSERT INTO ... SELECT ...

    INSERT INTO…SELECT…FROM 语句用于快速地从一个或多个表中取出数据,并将这些数据作为行数据插入另一个表中。

    SELECT 子句返回的是一个查询到的结果集,INSERT 语句将这个结果集插入指定表中,结果集中的每行数据的字段数、字段的数据类型都必须与被操作的表完全一致。

    举个例子,假如test表和test_bak表结构完全一致,我们想把test表中的数据插入到test_bak表中,那么我们可以这么操作:

    INSERT INTO test_bak select * from test;

    INSERT ... ON DUPLICATE KEY UPDATE

    如果要插入的新行违反主键(PRIMARY KEY)或UNIQUE约束,则MySQL会报错,此语法就是为了解决此错误。当数据库中存在某个记录时,执行这条语句会更新它,而不存在这条记录时,会插入它。

    下面举个例子为大家演示下效果:

    CREATE TABLE `student` ( `xuehao` int(11) primary key, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    mysql> select * from student;+--------+------+------+| xuehao | name | age |+--------+------+------+| 1001 | aaa | 18 || 1002 | bbb | 19 || 1003 | ccc | 20 |+--------+------+------+
    insert into student (xuehao,name,age) values (1003,'ccc',19) on DUPLICATE KEY UPDATE age = 19;
    mysql> select * from student;+--------+------+------+| xuehao | name | age |+--------+------+------+| 1001 | aaa | 18 || 1002 | bbb | 19 || 1003 | ccc | 19 |+--------+------+------+
    update student set age = 19 where xuehao = 1003;

    REPLACE INTO ... VALUES ...

    replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。2. 否则,直接插入新数据。

    同样举个例子说明下:

    mysql> select * from student;+--------+------+------+| xuehao | name | age |+--------+------+------+| 1001 | aaa | 18 || 1002 | bbb | 19 || 1003 | ccc | 19 |+--------+------+------+
    replace into student values (1003,'ccc',17);
    mysql> select * from student;+--------+------+------+| xuehao | name | age |+--------+------+------+| 1001 | aaa | 18 || 1002 | bbb | 19 || 1003 | ccc | 17 |+--------+------+------+
    

    2.更新数据

    update语句用于更新表数据,官方推荐语法为:

    UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET assignment_list [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
    value: {expr | DEFAULT}
    assignment: col_name = value
    assignment_list: assignment [, assignment] ...

    同样的,这里只给大家介绍常用的单表更新语法:

    UPDATE 表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ][ORDER BY 子句] [LIMIT 子句]

    语法说明如下:

    3.删除数据

    delete语句用于删除表数据,官方文档推荐语法:

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [PARTITION (partition_name [, partition_name] ...)] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

    使用 DELETE 语句从单个表中删除数据,语法格式为:

    DELETE FROM 表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

    语法说明如下:

    总结:

    本文主要介绍了三种DML语句的语法,看似简单,其实其中各种选项还是很复杂的,特别是insert语句,经常用到的选项就有很多。在这里也要提醒大家,执行update或delete语句时一定要小心,不使用where条件会更新或删除全部数据哦。

    以上就是详解mysql DML语句的使用的详细内容,更多关于mysql DML语句的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • MySQL数据操作-DML语句的使用
    • MySQL的DML语言操作实例
    • MySQL DML语句整理汇总
    • 快速学习MySQL基础知识
    • MySQL学习之数据库操作DML详解小白篇
    上一篇:深入了解mysql长事务
    下一篇:详解MySQL分区表
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解mysql DML语句的使用 详解,mysql,DML,语句,的,使用,