![]() |
谦和的弓箭 · dataframe在Mysql中批量修改—— ...· 2 月前 · |
![]() |
飘逸的炒饭 · 如何使用并发控制CCL规则_云数据库 ...· 1 周前 · |
![]() |
谈吐大方的大象 · 数据可视化之powerBI基础(十三)熟练使 ...· 9 月前 · |
![]() |
风流的棒棒糖 · IDEA 查找某个 jar ...· 1 年前 · |
![]() |
会开车的山楂 · ora-00942: 表或视图不存在 ...· 1 年前 · |
![]() |
温文尔雅的绿豆 · 谈谈bit(M) 和 tinyint(M) ...· 1 年前 · |
![]() |
欢快的开水瓶 · objectanimator ...· 1 年前 · |
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_pe r son (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
文学随笔,生活点滴
广读胸中有本,勤写笔下生辉
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
扫码关注腾讯云开发者
领取腾讯云代金券