MySQL-数据操作语言(DML)

MySQL-数据操作语言(DML)

1、数据插入(添加数据)

(1)有3种形式

形式1: 

insert into  表名(字段名1,字段名2,....) values (值a1,值a2, .....), (值b1,值b2, .....),..... ;

②形式2:

insert into  表名1(字段名1,字段名2,....)select  字段名1,字段名2,....  from  表名2; 

③形式3:

insert  into  表名  set  字段名1=值1,字段名2=值2, ..... ;

(2)解释说明:

①形式1和形式2,可以一次插入多条数据;

②不管哪种形式,在“字段”和“值”之间,都有“一一对应”关系。

③值的形式,通常是这样:数字直接写,字符串和时间加单引号,但如果是函数值,则不能加引号

④观念问题:不管那种形式,都要理解为:插入数据的单位是“行”;

⑤有的字段通常无需插入数据,此时不应该出现该字段名:auto_increment, timestamp,

(3)其他类似插入数据的语句:

①载入外部“形式整齐”的数据:

load  data  infile  ‘文件完整名(含路径)’  into  table  表名;

②复制一个表的结构和数据:

create  table  表名1  select  *  from  表名2;

2、删除数据

1、基本语法形式:

delete from 表名 [where条件] [order排序] [limit限定];

2、解释说明:

①观念问题:删除也是应该以理解为“以行为单位”进行的。 

②删除语句中,where条件通常都要写上,因为如果不写,则就删除了所有数据,应用中极少如此。

③order排序子句和limit限定子句,应用中通常不需要。

  ③.①order排序子句用于设定删除数据的先后顺序。

  ③.②limit限定子句用于限定在设定的顺序情况下删除指定的某些行。

3、类似删除语句truncate:

truncate [table] 表名;用于直接删除整个表(结构)并重新创建该表。

①删除整个表(数据和结构都没有了)

②重新创建该表(全新表)。

③跟delete 语句不带where条件,有什么区别?

主要影响的是类似:auto_increment这种类型的字段值:

truncate结果会重新计算,delete还能继续增长。

3、修改数据

(1)基本语法:

update 表名 set 字段名1=值表达式1,字段名2=值表达式2,....[where条件] [order排序] [limit限定];

(2)语法说明

①观念问题:仍然要理解为更新是以“行”为单位进行的,虽然可以指定只更新其中的部分字段。

② where条件子句,在应用中,同样几乎都必须有,否则很可能就失去意义,类似delete

③order排序子句通常不需要,用于将要更新的数据指定更新的顺序。

④limit限定子句通常不需要,用于将要更新的数据的指定顺序去更新部分(局部)数据,比如:前500行。

⑤字段的值可以是表达式,或直接值,或函数,如果是直接值,同样遵循insert语句中的值的写法。

4、一个问题:复制表

(1)复制表方法1:

create table tab2 like tab1; //复制结构了

insert into tab2 select * from tab1; //复制数据

这种方法可以比较完整。

(2)复制表方法2:

create table tab2 select * from tab1; //同时复制结构和数据

这种方法可能会丢一些结构信息,比如:索引,约束,自增长属性

原文地址:https://www.cnblogs.com/wjglm/p/9466425.html