MySQL数据库数据的插入、更新和删除操做

SQL语法预览:
为表全部字段插入数据; 【insert into 表名(字段名1,字段名2,…) values (值1,值2,…);】web

为表指定字段插入数据; 【insert into 表名(指定字段名1,指定字段名2,…) values (值1,值2,…);】数据库

为表同时插入多条数据; 【insert into 表名(字段名1,字段名2,…) values (值1,值2,…),(值1,值2,…),…;】bash

将查询结果插入数据表中:【insert into 表名1 (表1字段名1,表1字段名2,…) select (表2字段名1,表2字段名2,…) from 表名2 where 查询条件;】svg

更新表数据:【update 表名 set 字段名1=值1, 字段名2=值2, …字段名n=值n where (更新条件);
`删除表数据:【delete from 表名 where 删除条件;】``spa

-------------------->详解:3d

1、 插入数据

在MySQL中,可使用insert语句向数据库表中插入数据记录,插入数据的方式有:插入完整的记录、插入记录的一部分、插入另外一个查询结果,下面将一一进行讲解!code

1. 为表的全部字段插入数据

语法结构:insert into 表名(字段名1,字段名2,…) values (值1,值2,…);xml

注意:使用该语句时字段列和数据值的数量必须相同,本章将以数据库db_data下表tb_person为例进行介绍,建立语句以下:blog

命令语句:token

查看当前全部数据库show databases;

建立数据库:create database db_data;

选择数据库:use db_data;

建立包含字段表

create table tb_person(id int(11) unsigned not null auto_increment,name char(40) not null default ' ', age int(11) not null default 0,info char(50) null,primary key(id));

执行结果以下:
在这里插入图片描述

向表中的全部字段插入值的方法有两种:一种是指定全部字段名,另外一种是彻底不指定字段名

案例:在tb_person表中插入一条新纪录,id值为1,name值为Green,age值为30,info值为Lawyer。

命令语句:

insert into tb_person(id,name,age,info) values(1,'Green',30,'Lawyer');

执行插入操做以前,使用select语句查看表中数据,结果显示当前表为空,没有数据,接下来执行插入操做,结果以下:
在这里插入图片描述

能够看到插入记录成功。在插入数据时。指定了tb_person表的全部字段,所以将为每个字段插入新的值。

insert语句后面的列名称顺序能够不是person表定义时的顺序。即插入数据时,不须要按照表定义的顺序插入,只要保证值的顺序与字段的顺序相同就能够。

使用insert插入数据时,容许字段名为空,此时,须要为表的每个字段制定值,而且值的顺序必须和数据表中定义字段时的顺序相同。

案例:在tb_person表中分别插入两条新纪录,id值为2和3,name值为Suse和Mary,age值为29和28,info值为Dancer和Musician。

命令语句:

insert into tb_person(age,id,name,info) values(29,2,'Suse','Dancer');

insert into tb_person values(3,'Mary',28,'Musician');

执行结果以下:
在这里插入图片描述

提示:虽然使用insert插入数据时能够忽略插入数据的列名称,可是values关键字后面的值不只要求完整而且顺序必须和定义表时的顺序相同。若是表的结构被修改,如对表进行增长、删除或者位置改变等操做,则用这种方式插入数据时的顺序也要改变。若是指定列名称,则不会受到表结构改变的影响。

2. 为表的指定字段插入数据

为表的指定字段插入数据,就是用insert语句为部分字段插入值,而其余字段的值为定义表时的默认值。

案例:在tb_person表中插入一条新纪录, name值为Tom,age值为27。

命令语句:

insert into tb_person(name,age) values ('Tom',27);

执行结果:

在这里插入图片描述
查询结果显示,id字段自动添加了一个整数值4,在这里,id字段为表的主键,不能为空,系统会自动为该字段插入自增的序列值。在插入记录时,若是某些字段没有指定插入值,MySQL将插入定义字段时的默认值。

在本例插入语句中,每有指定info字段的值,查询结果显示,info字段在定义时默认为null,所以系统自动为该字段插入空值。

提示:要保证每一个插入值的类型和对应列的数据类型匹配,若是类型不一样,将没法插入,而且会产生错误。

3. 为表同时插入多条记录

用insert语句能够同时为数据表中插入多条记录,插入时指定多个值列表,每一个值列表之间用逗号隔开,基本语法格式以下:

语法结构:insert into 表名(字段名1,字段名2,…) values (值1,值2,…),(值1,值2,…),…;

案例:在tb_person表中,为字段name、age和info指定插入值,同时插入3条记录,SQL语句以下:

命令语句:

insert into tb_person(name,age,info) values('Evans',26,'Secretary'),('Dale',23,'Cook'),('Edison',25,'Singer');

执行结果:
在这里插入图片描述

由结果能够看到,inset语句执行后,tb_person表中添加了3条记录,其中name、age和info字段分别为指定值,id字段为MySQL添加的默认的自增值。

使用insert语句同时插入多条记录时,MySQL会返回一些在执行单行插入时没有的额外信息,这些信息包含数的字符串的意思分别以下:

record:代表插入的记录条数。
duplicates:代表插入时被忽略的记录,缘由多是这些记录包含了重要的主键值。
warnings:代表有问题的数据值,例如发生哦数据类型转换。
案例:在数据表tb_person,不指定插入字段,同时插入两条记录,SQL语句以下:

命令语句:

bash insert into tb_person values(8,'Harry',21,'Magician'),(null 'Harriet',23,'Pianist');

执行结果:
在这里插入图片描述

由结果能够看到,insert语句执行后,tb_person表中添加了2条记录。表名tb_person的后面没有指定插入字段列表,所以values关键字后面的多个值列表都要为每条记录的每个字段指定插入值,而且这些值的顺序必须和tb_person表中定义字段时的顺序相同。带有auto_increment属性的id字段插入null值,系统会自动为该字段插入惟一的自增编号。

提示:一个同时插入多行记录的insert语句等同于多个单行插入记录的insert语句,可是一次插入多行记录的insert语句在处理时效率更高。因此在插入多条记录时,最好选择使用一次插入多行记录的方式插入。

4. 将查询结果插入表中

insert语句还能够将select语句查询的结果插入到表中。若是想要从另外一个表中合并我的信息到tb_person表,不须要逐个输入一条记录的值,只须要使用一条insert语句和一条select语句组合的语句,便可快速地从一个或多个表中 向另外一个表中插入多个记录。

基本语法格式以下:

语法结构:insert into 表名1 (表1字段名1,表1字段名2,…) select (表2字段名1,表2字段名2,…) from 表名2 where 查询条件;

建立表tb_person2,并插入两条记录:

命令语句:

create table tb_person2(id int(11) unsigned not null auto_increment,name char(40) not null default ' ', age int(11) not null default 0,info char(50) null,primary key(id));

insert into tb_person2 values (10,'Halen',20,'Student'),(11,'Beckham',32,'Police');

执行结果以下:
在这里插入图片描述

案例:从表tb_person2中查询全部记录,并将其插入到表tb_person中,使用SQL语句以下:

命令语句:

insert into tb_person (id,name,age,info) select id,name,age,info from tb_person2;

执行结果:
在这里插入图片描述

由结果能够看到,insert语句执行后,tb_person表中多了两条记录,这两条记录和tb_person2表中的记录彻底相同,数据转移成功。这里的id字段为自增的主键,在插入的时候要保证该字段值的惟一性,若是不能肯定,能够在插入的时候忽略该字段,只插入其余字段的值。

提示:这个例子中使用的tb_person2表和tb_person表的定义相同,事实上MySQL不关心select返回的列名,它根据列的位置进行插入,select的第1列对应待插入表的第1列,第2列对应待插入表的第2列,等等。

2、 更新数据

在MySQL中,可使用update语句更新表中的记录,能够更新特定的行或者同时更新全部的行。基本语法结构以下:

语法结构:update 表名 set 字段名1=值1, 字段名2=值2, …字段名n=值n where (更新条件);

1. 更新一条记录

案例:在tb_person表中,更新id值为11的记录,age字段值改成11,name字段更名为Hanmeimei,更新操做执行前可使用select语句查看当前的数据,使用的SQL语句以下:

命令语句:

select * from tb_person where id=11;

update tb_person set age=11,name='Hanmeimei' where id=11;

执行结果以下:
在这里插入图片描述

由结果能够看到,id等于11的记录中的name和age字段的值已经被成功修改指定值。

提示:update语句以where语句结束,经过where子句指定被更新的记录所须要知足的条件,若是忽略where子句,MySQL将更新表中全部的行。

2. 更新多条记录

案例:在tb_person表中,更新age字段值为6到25的记录,将info字段值改成Student,更新操做执行前可使用select语句查看当前的数据,使用的SQL语句以下:

命令语句:

select * from tb_person where age between 6 and 25;

update tb_person set info='Student' where age between 6 and 25;

执行结果以下:

在这里插入图片描述
由结果能够看到,update语句执行后,成功将表中符合条件的6条记录的info字段值都改成student。

3、 删除数据

从数据表中删除数据使用delete语句,delete语句容许用where子句指定删除条件。delete语句的基本语法格式以下:删除没有关联的数据表

语法结构: delete from 表名 where 删除条件;

  1. 删除一条记录

案例:删除表tb_person中id=11的记录,使用SQL语句以下:

命令语句:

select * from tb_person where id=11;

delete from tb_person where id=11;

执行结果:
在这里插入图片描述

查询结果为空,说明删除成功。

2. 删除多条记录

案例:删除表tb_person中age在6到25之间的记录,使用SQL语句以下:

命令语句:

select * from tb_person where age between 6 and 25;

delete from tb_person where age between 6 and 25;

执行结果:

在这里插入图片描述
查询结果为空,说明删除成功。

3. 删除全部记录

案例:删除表tb_person2中全部记录,使用SQL语句以下:

命令语句:

select * from tb_person2;

delete from tb_person2;

执行结果:

在这里插入图片描述
查询结果为空,说明删除成功。

提示:若是向删除表中的全部记录,还可使用truncate table 语句,truncate能够直接是年初原来的表并从新建立一个表,其语法结构为truncate table 表名。truncate是直接删除表而不是删除记录,所以执行速度比delete语句快。

本文结束,但愿对你们有所帮助!

SQL语法总结:

为表全部字段插入数据; 【insert into 表名(字段名1,字段名2,…) values (值1,值2,…);】

为表指定字段插入数据; 【insert into 表名(指定字段名1,指定字段名2,…) values (值1,值2,…);】

为表同时插入多条数据; 【insert into 表名(字段名1,字段名2,…) values
(值1,值2,…),(值1,值2,…),…;】

将查询结果插入数据表中:【insert into 表名1 (表1字段名1,表1字段名2,…) select
(表2字段名1,表2字段名2,…) from 表名2 where 查询条件;】

更新表数据:【update 表名 set 字段名1=值1, 字段名2=值2, …字段名n=值n where
(更新条件);删除表数据:【delete from 表名 where 删除条件;】

-------------------------------end----------------------

转自:https://zhuanlan.zhihu.com/p/34438406