mysql联查时为空补全和jdbc获取最后插入生成的id


如何在mysql里实现 oracle里的两表联查    cat.id=dog.id(+)这种 为空补全的方法
left  或者right    outer  join
想在哪一个表补全 就放在 left或者 right

in查询 能够用left semi join 来代替(注意join表不能在select字段中出现)

   jdbc获取最后插入生成的id
   
    ps = conn.prepareStatement("insert into test(name) value(?)",Statement.RETURN_GENERATED_KEYS);  
    ps.setString(1, "test");  
    ps.execute();  
    rs = ps.getGeneratedKeys();  
    int id=0;//保存生成的ID  
    if (rs != null&&rs.next()) {  
        id=rs.getInt(1)  
    }mysql

补充下  由于max(XXXX)函数在mysql里 不知为何
当max(整形time)时候 竟然返回的不是最大的那个整形时间~。~  哭死了  形成逻辑一直不对sql

因此 我用 order by time desc  在加上limit 0,1  这样组合获取到了最大值  
哎   那位大侠能告诉我 为何mysql里max函数很差使。。。。。。
oracle

还有mysql查看慢查询语句函数


mysql的查询语句数
show global status like 'com_select';
mysql的查询链接数
show global status like 'connections';

链接到mysql的ip
netstat -an
进程号
netstat -anb

显示慢查询的次数(默认10秒)
show  status like 'slow_queries';
把慢查询的sql记录到日志中
须要在启动的时候指定慢查询
bin\mysqld.exe --safe-mode --slow-query-log   ( 高版本5.5  在my.ini指定)
bin\mysqld.exe - log-slow-queries=d:/abc.log    (低版本5.0 在my.ini指定)  
先关闭再从新启动(先中止服务)
默认吧日志文件放在my.ini里有个datadir路径下
从新设置慢查询为1秒

设置慢查询为1秒
show variables like 'long_query_time';
set long_query_time=1;


为了存储过程能正常执行,须要把命令结束符号修改成不为;
delimiter $$
修改成$$

处理多条数据的时候
set autocommit==0;
.......
commit;

存储过程里的for循环
repeat
set i=i+1;
.....
until i=max_num
end repeat;日志

相关文章
相关标签/搜索