<强>前言:强>
在上篇文章中,主要为大家介绍的是DDL语句的用法,可能细心的同学已经发现了。本篇文章将主要聚焦于DML语句,为大家讲解表数据相关操作。
这里说明下DDL与DML语句的分类,可能有的同学还不太清楚。
引用>
DDL(数据定义语言):数据定义语言,用于创建,删除,修改,库或表结构,对数据库或表的结构操作。常见的有创建、修改、删除等。
DML(数据操作语言):数据操纵语言,主要对表记录进行更新(增、删、改)。常见的有插入、更新、删除等。1。插入数据
插入数据主要用到的是插入语法,官方文档同样给出很多选项:
<代码类=" sql语言">插入[LOW_PRIORITY | |延迟HIGH_PRIORITY](忽略) [到]tbl_name (分区(partition_name [partition_name]…)) [(col_name [, col_name]…)) {值|值}(value_list) [(value_list)]… (在复制键更新assignment_list) 插入(LOW_PRIORITY | |推迟HIGH_PRIORITY](忽略) [到]tbl_name (分区(partition_name [partition_name]…)) 设置assignment_list (在复制键更新assignment_list) 插入(LOW_PRIORITY | HIGH_PRIORITY][忽略] [到]tbl_name (分区(partition_name [partition_name]…)) [(col_name [, col_name]…)) 选择…… (在复制键更新assignment_list) 值: {expr |默认} value_list: 价值(价值)…… 任务: col_name=值 assignment_list: (转让、]…代码>有兴趣的同学可以咨询研究下上面的各个选项哦,下面我将分类给大家介绍几个常用的语法。
<强>插入……值(…)强>
这可能是你写插入语句最常用的一种,标准用法为:
<代码类=" sql语言">插入& lt;表名的在[& lt;列名1比;(…& lt;列名n>]] 值(值1)[…,(值n)]; #插入多行 插入表(column1 column2…) 值(value1, value2,…) (value1, value2,…) …;代码>语法说明如下:
<李> <代码>,lt;表名和gt;> 代码:指定被操作的表名。李> <李> <代码>,lt;列名和gt;> 代码:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可以省略,直接采用INSERT<表名祝辞值(…)即可。李> <李> 代码>或<代码>值值子句,该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。李>
<强>插入……集……强>
插入……设置语句一次只能插入一条数据,可以向表中插入部分列的值,这种方式更为灵活。
<代码类=" sql语言">插入& lt;表名的在 设置& lt;列名1比;=& lt;值1的在, & lt;列名2比;=& lt;值2祝辞, … #其中为可以省略代码><强>插入……选择……强>
插入…从语选择…句用于快速地从一个或多个表中取出数据,并将这些数据作为行数据插入另一个表中。
SELECT子句返回的是一个查询到的结果集,插入语句将这个结果集插入指定表中,结果集中的每行数据的字段数,字段的数据类型都必须与被操作的表完全一致。
举个例子,假如测试表和test_bak表结构完全一致,我们想把测试表中的数据插入到test_bak表中,那么我们可以这么操作:
<代码类=" sql语言">插入test_bak select *从测试;代码><强> INSERT…> #假设学生表结构和原始数据如下: 创建表的“学生”( xuehao int(11)主键, “名字”varchar(255)默认为空, “年龄”int(11)默认为空 )引擎=InnoDB默认字符集=utf8; mysql>从学生选择*; + - - - - - - - - - - - - - - - - - - - - - - + + 年龄| | | xuehao |名称 + - - - - - - - - - - - - - - - - - - - - - - + + | 1001 | aaa | | | 1002 | bbb 19 | | ccc 20 | | 1003 | | + - - - - - - - - - - - - - - - - - - - - - - + + #比如我们想插入这条数据,MySQL发现主键重复后会执行后面的更新语句 插入学生(xuehao、名字、年龄) “ccc”值(1003年,19)> #还是上面那个学生表,xuehao是主键原有数据为 mysql>从学生选择*; + - - - - - - - - - - - - - - - - - - - - - - + + 年龄| | | xuehao |名称 + - - - - - - - - - - - - - - - - - - - - - - + + | 1001 | aaa | | | 1002 | bbb 19 | | ccc 19 | | 1003 | | + - - - - - - - - - - - - - - - - - - - - - - + + #如果执行 替换成学生的价值观(1003年,“ccc”, 17); #则新的表数据为 mysql>从学生选择*; + - - - - - - - - - - - - - - - - - - - - - - + + 年龄| | | xuehao |名称 + - - - - - - - - - - - - - - - - - - - - - - + + | 1001 | aaa | | | 1002 | bbb 19 | | | 1003 | ccc 17 | | + - - - - - - - - - - - - - - - - - - - - - - + + #效果等同于将xuehao为1003的行删除,然后再插入新行
入门MySQL——DML语句篇