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;日誌

相關文章
相關標籤/搜索