首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL数据库应用总结—MySQL数据库数据的插入、更新和删除操作

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表名2where查询条件;】

更新表数据:【update表名set字段名1=值1, 字段名2=值2, …字段名n=值nwhere(更新条件);

删除表数据:【deletefrom表名where删除条件;】

详解:

插入表数据

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

1

为表的所有字段插入数据

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

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

命令语句

查看当前所有数据库:showdatabases;

创建数据库:createdatabase db_data;

选择数据库:usedb_data;

创建包含字段表:createtable 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 intotb_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 intotb_person(age,id,name,info)values(29,2,'Suse','Dancer');

insert intotb_personvalues(3,'Mary',28,'Musician');

执行结果:

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

2

为指定字段插入数据

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

案例

在tb_person表中插入一条新纪录, name值为Tom,age值为27,SQL语句及运行结果如下:

命令语句

insert intotb_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 intotb_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语句如下:

命令语句

insert intotb_personvalues(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语句组合的语句,即可快速地从一个或多个表中 向另一个表中插入多个记录。基本语法格式如下

外键对应的是参照完整性,一个表的外键可以是空值,如果不为空值,怎每一个外键值必须等于另一个表中主键的某个值。

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

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

命令语句

createtabletb_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 intotb_person2values(10,'Halen',20,'Student'),(11,'Beckham', 32,'Police');

执行结果如下:

案例

从表tb_person2中查询所有记录,并将其插入到表tb_person中,使用SQL语句如下:

命令语句

insert intotb_person (id,name,age,info)selectid,name,age,infofromtb_person2;

执行结果:

由结果可以看到,insert语句执行后,tb_person表中多了两条记录,这两条记录和tb_person2表中的记录完全相同,数据转移成功。这里的id字段为自增的主键,在插入的时候要保证该字段值的唯一性,如果不能确定,可以在插入的时候忽略该字段,只插入其他字段的值。

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

更新表数据

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

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

1

更新一条记录

案例

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

命令语句

select*fromtb_personwhereid=11;

update tb_person set age=11,name='Hanmeimei'whereid=11;

执行结果:

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

提示:update语句以where语句结束,通过where子句指定被更新的记录所需要满足的条件,如果忽略where子句,MySQL将更新表中所有的行。

2

更新多条记录

案例

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

命令语句

select*fromtb_personwhereagebetween6 and 25;

updatetb_personsetinfo='Student'whereagebetween6and25;

执行结果:

由结果可以看到,update语句执行后,成功将表中符合条件的6条记录的info字段值都改为student。

删除表数据

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

1

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

删除一条记录

案例

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

命令语句

select*fromtb_personwhereid=11;

deletefromtb_personwhereid=11;

执行结果:

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

2

删除多条记录

案例

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

命令语句

select*fromtb_personwhereagebetween6and25;

deletefromtb_personwhereagebetween6and25;

执行结果:

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

3

删除所有记录

案例

删除表tb_person2中所有记录,使用SQL语句如下:

命令语句

select*fromtb_person2;

deletefromtb_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表名2where查询条件;】

更新表数据:【update表名set字段名1=值1, 字段名2=值2, …字段名n=值nwhere(更新条件);

删除表数据:【deletefrom表名where删除条件;】

end

欢迎关注互动|未来科技008

微信ID:seali_521

欢迎关注互动|十年之前diary

微信ID:Lseali_521

十年之前diary

文学随笔,生活点滴

广读胸中有本,勤写笔下生辉

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180312G07IBX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券