最近复习mysql的时候,看到一些以前不曾看到数据插入方式,于是我这些进行了一些总结
1.插入单条数据
方式一:
INSERT INTO
[表名]([列名],[列名])
VALUES
([列值],[列值]));
或
INSERT INTO
[表名]
VALUES
([列值],[列值]));--这样写列值的个数要与表中字段的个数一样
insert into login(username,password,role,sno) values('好汉3','123',1,'0004');
2.插入多条
方式一:
一条INSERT语句插入批量数据的写法:
INSERT INTO
[表名]([列名],[列名])
VALUES
([列值],[列值])),
([列值],[列值])),
([列值],[列值]));
注意:这并不是标准的SQL语法,因此只能在MySQL中使用
insert into login(username,password,role,sno) values('suan','123',1,'0002'),('好汉1','123',1,'0003');
建议:
在程序中,插入批量数据时,最好使用这种通过一条INSERT语句来一次性插入的方式。这样可以避免程序和数据库建立多次连接,从而增加服务器负荷。
方式二:
insert into login(username,password,role,sno) select '好汉4','123',1,'0005' union all select '好汉5','123',1,'0006';
方式三:
通过存储过程的方式,来一次性插入多条语句
例如:
drop procedure if exists myproc;--如果存在,则删了这个存储过程
--创建存储过程 myproc
delimiter $$ --定义分割符
create procedure myproc()
BEGIN
declare num int;--声明变量
set num=1; --设置初始值
while num<100 do
insert into login(username,password,role,sno)
values(concat('108好汉',num),'123456',1,CONCAT('00',num));
set num=num+1;
END
while ;
end$$
--查询存储过程
--如果是在命令终端用一下的这个语句,因为定义了结束符为这个$$
call myproc()$$
--mysql工具中使用
call myproc();
--查询表
select * from login$$--终端中使用
select * from login;--mysql工具中使用
--删除存储过程
drop procedure myproc$$ --终端
3.判断数据是否存在的,插入数据方式
语法为:
INSERT INTO table ( field1 , field2 , fieldn ) SELECT 'field1' , 'field2' , 'fieldn' FROM DUAL WHERE NOT EXISTS ( SELECT field FROM table WHERE field = ? )
insert into login(username,password,role,sno)
select '好汉6','123',1,'0007'
from dual where not exists (select sno from login where sno = '0007');
注意:其中dual是虚拟表,不要物理创建
参考:https://blog.csdn.net/u012660464/article/details/75529216
https://blog.csdn.net/tomcat_2014/article/details/53377924?utm_source=blogxgwz0