Mysql入门日常收集整理常见的mysql sql技巧
《Mysql入门日常收集整理常见的mysql sql技巧》要点: MYSQL入门废话不多说了,直接给大家贴代码了. MYSQL入门1,数字辅助表 MYSQL入门
//创建表
create table test(id int unsigned not null primary key);
delimiter //
create procedure pnum(cnt int unsigned)
begin
declare i int unsigned default 1;
insert into num select i;
while i*2 < cnt do
insert into num select i+id from num ;
set i=i*2;
end while;
end
//
delimiter ;
#####列值不连续问题:
表a中id值为1,2,3,100,101,110,111
set @q=0;
select id,@q:=@q+1 as cn from a;
#####对不连续的进行分组
set @a=0;
select min(id) as start_v,max(id) as end_v from (
select id,cn,id-cn as diff from (
select id,@a:=@a+1 as cn from pi) as p ) as pp group by diff;
#####对不连续的值填充
use test;
DROP TABLE if EXISTS pincer;
create table pincer(a int UNSIGNED);
insert into pincer values(1),(2),(5),(100),(101),(103),(104),(105);
select a+1 as start,(select min(a)-1 from pincer as ww where ww.a>qq.a) as end from pincer as qq where
not exists (select * from pincer as pp where qq.a+1=pp.a)
and a<(select max(a) from pincer);
################
select id,num,ranknum,diff from (select id,num-ranknum as diff from (select id,if(@id=id,@rownum:=@rownum+1,@rownum:=1) ranknum,@id:=id from tt,(select @rownum:=0,@id:=null) a ) b) c group by id,diff having count(*)>=2;
################
MYSQL入门2,生日问题 MYSQL入门
select name,birthday,if(cur>today,cur,next) as birth_day
from(
select name,today,date_add(cur,interval if(day(birthday)=29 && day(cur)=28,1,0) day)as cur,date_ad(next,interval if(day(birthday)=29 && day(next)=28,0) day) as next
from(
select name,date_add(birthday,interval diff year) as cur,interval diff+1 year) as next,from(
select concat(laster_name,'',first_name) as name,birth_date as birthday,(year(now())-year(birth_date) )as diff,now() as today
from employees) as a
) as b
) as c
MYSQL入门3,日期问题----计算工作日 MYSQL入门
create table sals(id int,date datetime,cost int,primary key(id);
select date_add('1900-01-01',interval floor(datediff(date,'1900-01-01')/7)*7 day)
as week_start,date_add('1900-01-01','1900-01-01')/7*7+6 day)
as week_end,sum(cost) from sales;
计算工作日(指定2个日期段 有多少工作日)
create procedure pgetworkdays (s datetime,e datetime)
begin
select floor(days/7)*5+days%7
case when 6 between wd and wd+days%7-1 then 1 else 0 end
case then 7 between wd and wd+days%7-1 then 1 else 0 end
from
(select datediff(e,s)+1 as days,weekday(s)+1 as wd) as a;
end;
MYSQL入门mysql sql语句大全 MYSQL入门1、说明:创建数据库 MYSQL入门2、说明:删除数据库 MYSQL入门drop database dbname MYSQL入门3、说明:备份sql server MYSQL入门4、说明:创建新表 MYSQL入门create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) MYSQL入门5、说明:删除新表 MYSQL入门drop table tabname MYSQL入门6、说明:增加一个列 MYSQL入门7、说明:添加主键: Alter table tabname add primary key(col) MYSQL入门8、说明:创建索引:create [unique] index idxname on tabname(col….) MYSQL入门删除索引:drop index idxname MYSQL入门注:索引是不可更改的,想更改必须删除重新建. MYSQL入门9、说明:创建视图:create view viewname as select statement MYSQL入门删除视图:drop view viewname MYSQL入门10、说明:几个简单的基本的sql语句 MYSQL入门11、说明:几个高级查询运算词 MYSQL入门12、说明:使用外连接 MYSQL入门A、left (outer) join: MYSQL入门13、对数据库进行操作: MYSQL入门分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名 MYSQL入门14.如何修改数据库的名称: MYSQL入门sp_renamedb 'old_name','new_name' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |