响应式网站做seo,网站建设与制作德州,太原seo自媒体,wordpress主题 洛米前言#xff1a;在上篇文章中#xff0c;主要为大家介绍的是DDL语句的用法#xff0c;可能细心的同学已经发现了。本篇文章将主要聚焦于DML语句#xff0c;为大家讲解表数据相关操作。这里说明下DDL与DML语句的分类#xff0c;可能有的同学还不太清楚。DDL(Data Definitio…前言在上篇文章中主要为大家介绍的是DDL语句的用法可能细心的同学已经发现了。本篇文章将主要聚焦于DML语句为大家讲解表数据相关操作。这里说明下DDL与DML语句的分类可能有的同学还不太清楚。DDL(Data Definition Language)数据定义语言用于创建、删除、修改、库或表结构对数据库或表的结构操作。常见的有createalterdrop等。DML(Data Manipulation Language)数据操纵语言主要对表记录进行更新(增、删、改)。常见的有insertupdatedelete等。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 valueassignment_list: assignment [, assignment] ...有兴趣的同学可以咨询研究下上面的各个选项哦下面我将分类给大家介绍几个常用的语法。INSERT INTO ... VALUES (...)这可能是你写insert语句最常用的一种标准用法为INSERT INTO [ [ , … ] ]VALUES (值1) [… , (值n) ];#插入多行INSERT INTO table(column1,column2...)VALUES (value1,value2,...), (value1,value2,...),...;语法说明如下 表名 指定被操作的表名。 列名 指定需要插入数据的列名。若向表中的所有列插入数据则全部的列名均可以省略直接采用 INSERT VALUES(…) 即可。 表名VALUES 或 VALUE 子句该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。INSERT ... SET ...insert ... set语句一次只能插入一条数据可以向表中插入部分列的值这种方式更为灵活。INSERT INTO SET , , …#其中 INTO 可以省略INSERT INTO ... SELECT ...INSERT INTO…SELECT…FROM 语句用于快速地从一个或多个表中取出数据并将这些数据作为行数据插入另一个表中。SELECT 子句返回的是一个查询到的结果集INSERT 语句将这个结果集插入指定表中结果集中的每行数据的字段数、字段的数据类型都必须与被操作的表完全一致。举个例子假如test表和testbak表结构完全一致我们想把test表中的数据插入到testbak表中那么我们可以这么操作INSERT INTO test_bak select * from test;INSERT ... ON DUPLICATE KEY UPDATE如果要插入的新行违反主键(PRIMARY KEY)或UNIQUE约束则MySQL会报错此语法就是为了解决此错误。当数据库中存在某个记录时执行这条语句会更新它而不存在这条记录时会插入它。下面举个例子为大家演示下效果#假设student表结构和原始数据如下CREATE TABLE student ( xuehao int(11) primary key, name varchar(255) DEFAULT NULL, age int(11) DEFAULT NULL) ENGINEInnoDB DEFAULT CHARSETutf8;mysql select * from student;--------------------| xuehao | name | age |--------------------| 1001 | aaa | 18 || 1002 | bbb | 19 || 1003 | ccc | 20 |--------------------#比如我们想插入这条数据MySQL发现主键重复后会执行后面的更新语句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. 否则直接插入新数据。同样举个例子说明下#还是上面那个student表xuehao是主键 原有数据为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 |--------------------#效果等同于将xuehao为1003的行删除然后再插入新行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 valueassignment_list: assignment [, assignment] ...同样的这里只给大家介绍常用的单表更新语法UPDATE SET 字段 1值 1 [,字段 2值 2… ] [WHERE 子句 ][ORDER BY 子句] [LIMIT 子句]语法说明如下 表名用于指定要更新的表名称。SET 子句用于指定表中要修改的列名及其列值。其中每个指定的列值可以是表达式也可以是该列对应的默认值。如果指定的是默认值可用关键字 DEFAULT 表示列值。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 子句]语法说明如下 表名指定要删除数据的表名。ORDER BY 子句可选项。表示删除时表中各行将按照子句中指定的顺序进行删除。WHERE 子句可选项。表示为删除操作限定删除条件若省略该子句则代表删除该表中的所有行。LIMIT 子句可选项。用于告知服务器在控制命令被返回到客户端前被删除行的最大值。总结本文主要介绍了三种DML语句的语法看似简单其实其中各种选项还是很复杂的特别是insert语句经常用到的选项就有很多。在这里也要提醒大家执行update或delete语句时一定要小心不使用where条件会更新或删除全部数据哦。