入门MySQL——DML语句篇

  

<强>前言:

  

在上篇文章中,主要为大家介绍的是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;>   <李> 或<代码>值值子句,该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。   
  

<强>插入……集……

  

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

  
 <代码类=" 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语句篇