SQL一些比较复杂的操作语句,不断更新中。。。。。。。

实习已然两个半月了,并没有进入正轨,而明星程序员萧井陌建议我辞职,确实在理。
所以在考虑中。这段时间,用到的sql语句,也是重新让我觉得SQL也是一门大学问,并不是只有简单的查找删。下面,是一些觉得有必要记住的SQL语句。

drop procedure if exists insertt;#如果存在储存过程则删除
delimiter $$                     #创建一个储存过程
create procedure insertt()
begin
set @a=12;     #学号
set @b=1003;       #班级编号
set @c=1014; 
set @f="";
set @j=0;
set @k=2;
set @l=1;  #手机号
while @a<256 do     #如果@a<2000010001则返回true,继续执行

insert into tbl_resource_info values(@a,@b,@c,@d,@e,@f,@g,@h,@i,@j,@k,@l,@m,@n);
set @a=@a+1;
set @c=@c+1;

end while;
end $$
delimiter ;
 
#执行存储过程插入数据
call insertt();

批量更新某一列
UPDATE tbl_resource_info
	  SET GROUPID = 1004
WHERE ID > 60 AND ID < 250

复制某一列到另一列
UPDATE tbl_resource_info
	  SET Content = NAME
WHERE ID > 62 AND ID < 214

sql语句优化:
一:SELECT studentId,studentName,studentCODE FROM tbl_student_info WHERE studentId IN (SELECT studentId FROM tbl_parents_student_map WHERE USERID = ?);

优化为:SELECT s.STUDENTID,s.STUDENTNAME,s.STUDENTCODE FROM tbl_student_info s,tbl_parents_student_map t WHERE s.STUDENTID=t.STUDENTID AND t.USERID='?';

二:SELECT studentId,studentName,studentCODE FROM tbl_student_info WHERE studentId IN (SELECT studentId FROM tbl_parents_student_map
 WHERE USERID = (SELECT USERID FROM tbl_user_extend_info WHERE ECSHOPUSERID = '?'));

优化为:SELECT s.STUDENTID,s.STUDENTNAME,s.STUDENTCODE FROM tbl_student_info s,tbl_parents_student_map t,tbl_user_extend_info u 
WHERE s.STUDENTID=t.STUDENTID AND t.USERID=u.USERID AND u.ECSHOPUSERID='?';



debug
观察感觉出问题的变量与需要的变量之间的不同
这个语句是先查询某个属性,然后作为字段查询。这句话,受益匪浅。
SELECT s.id,(select c.classname from tbl_class_info c where c.classid=s.classid) as classname,s.studentname,s.studentcode,s.sex from tbl_student_info s 
where s.nurid= '11'
and (select c.classname from tbl_class_info c where c.classid=s.classid) like  "%这个那个%";
连接字符串,表示在值的前后连接 ’%‘,
select * from t_sys_demo_tab1 where 1=1 and dm_str like concat('%',concat(#{demoTab1Query.dm_str,jdbcType= VARCHAR},'%'))
 
插入一条记录,在mybatis,mysql
insert into t_sys_demo_tab1 (dm_uid,dm_str,dm_num,dm_int,dm_date,dm_time) 
values (
#{dm_uid,jdbcType= VARCHAR},
#{dm_str,jdbcType= VARCHAR},
#{dm_num,jdbcType= NUMERIC},
#{dm_int,jdbcType= INTEGER},
#{dm_date,jdbcType= DATE},
#{dm_time,jdbcType= TIMESTAMP})
select @@identity 查看这条记录的主键编号
插入一条记录,在mybatis,oracle
 
<selectKey resultType="Integer" keyProperty="auto_id" order="BEFORE">
select seq_sys_demo_tab1.nextVal from dual//获取即将插入的记录的主键id
</selectKey>
//插入记录
insert into t_sys_demo_tab1 (auto_id,dm_uid,dm_str,dm_num,dm_int,dm_date,dm_time)
values (
#{auto_id,jdbcType= NUMERIC},
#{dm_uid,jdbcType= VARCHAR},
#{dm_str,jdbcType= VARCHAR},
#{dm_num,jdbcType= NUMERIC},
#{dm_int,jdbcType= INTEGER},
#{dm_date,jdbcType= DATE},
#{dm_time,jdbcType= TIMESTAMP})
</insert>

根据上表,提取出来部分的需要的字段。<div>SELECT NAME JTGJSHOW,VALUE JTGJ FROM G_CODE WHERE PID=191428193265000503 AND VALUE IN (2,3) order by JTGJ
</div>

又更新在这里了,好长一段时间没有更新博客,今天用到了想到了联表删除/查询。这里记录一下具体的目的和sql语句,给予oracle。具体内容如下:



这两个表,我知道第二个表的login_name,那么怎么删除和查找第一个表对应的记录呢。

具体方法如下:

链接查询,当然可以删除 select * from  t_sys_user_info a join t_sys_sp_users b on A.USER_ID = b.user_id where B.LOGIN_NAME like '%lin%';

内链接:select * from t_sys_user_info where user_id = (select user_id from t_sys_sp_users where login_name like 'lindi');"="号可以用“in”。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值