1.MySQL 数据库怎样把一个表的数据插入到另一个表 本文出自 “夜狼” 博客http://yangfei520.blog.51cto.com/1041581/381568
(id, name)
select id, name
from insertTest
where not exists ( select * from insertTest2
where insertTest2.id=insertTest.id);
(id, name)
SELECT 100, 'liudehua'
FROM dual
WHERE not exists ( select * from insertTest
where insertTest.id = 100);
2.MySQL创建并调用存储过程
带输入参数的存储过程
create procedure proc2(in a int,in b VARCHAR(255))
begin
select * from ss as s where s.user_id = a and s.username = b;
end
//第一种调用方式
call proc2(3,'c');
//第二种调用方式
set @a = 3;
set @b = 'c';
call proc2(@a,@b);
带输出参数的存储过程
create procedure proc3(out a INT)
begin
select count(*) from ss into a;
end
call proc3(@b);
select @b as 'bbb';
3.MySQL中case when的一些用法
//end后跟的为列名,如果没有else的话条件没有达到的值会设为NULL
select user_id,
case
when username ='a' then 'aa'
when username ='c' then 'cc'
else username
end username
from ss
select user_id,
case username
when 'a' then 'aa'
when 'c' then 'cc'
else username
end username
from ss
4.游标的概念
游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集。使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。
5.union和union all区别
在数据库中,union和union all关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
union在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
如:
select * from test_union1
union
select * from test_union2
这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。
而union all只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,union all要比union快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all
向表中快速插入数据
INSERT into ss(username,password,email)
select username,password,email from ss union all
select username,password,email from ss union all
select username,password,email from ss union all
select username,password,email from ss