MySql学习

1.MySql获得上次自增id

用"SELECT LAST_INSERT_ID()"即可,注意要用上次insert的那个connection进行查询;

用DBUtils和DBCP的例子:

           Connection con = DBPool.getConnection();
            QueryRunner qr = new QueryRunner();
            id = args == null ? qr.update(con,sql):qr.update(con,sql,args);
            id =  (Long)qr.query(con, "SELECT LAST_INSERT_ID()", new ScalarHandler(1));

2.count

1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;
2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = 'value’ 这种查询;
3.杜绝SELECT COUNT(COL) FROM tablename的出现。

转载: http://hi.baidu.com/wrjgg/item/f5b823b4e1dca79918469729

3.两个表连接查询 JOIN语句

先看两个表:

表A记录如下:
aID        aNum
1           a20050111
2           a20050112
3           a20050113
4           a20050114
5           a20050115
表B记录如下:
bID        bName
1            2006032401
2           2006032402
3           2006032403
4           2006032404
8           2006032408

 

left join:

SELECT * FROM a
LEFT JOIN  b 
ON a.aID =b.bID

结果:

aID        aNum                   bID           bName
1            a20050111         1               2006032401
2            a20050112         2              2006032402
3            a20050113         3              2006032403
4            a20050114         4              2006032404
5            a20050115         NULL       NULL

 

说明:

结果以a表为基础,b表没有的以NULL表示

right join

SELECT  * FROM a
RIGHT JOING b 
ON a.aID = b.bID

 

结果:

aID        aNum                   bID           bName
1            a20050111         1               2006032401
2            a20050112         2              2006032402
3            a20050113         3              2006032403
4            a20050114         4              2006032404
NULL    NULL                   8              2006032408

说明:

和left相反

inner join

SELECT * FROM  a
INNER JOIN  b
ON a.aID =b.bID

等同:

SELECT * 
FROM a,b
WHERE a.aID = b.bID

 

结果:

aID        aNum                   bID           bName
1            a20050111         1               2006032401
2            a20050112         2              2006032402
3            a20050113         3              2006032403
4            a20050114         4              2006032404

说明:

很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
LEFT JOIN操作用于在任何的 FROM 子句中,

如果只需要一个表的内容,可以如下:

SELECT a.* FROM  a
INNER JOIN  b
ON a.aID =b.bID

你可能感兴趣的:(MySql学习)