连接查询
1.左连接查询(table1 left join table2)
以左表为准,去右表找数据,如果没有匹配的数据,则以null补空位,所以输出结果数>=左表原数据数
2.右连接查询(table1 right join table2)
反之
3.内连接(table1 inner join table2或者table1,table2(省略inner join 写为、,))
查询结果是左右连接的交际(即左右连接的结果去除null项后的并集(去除了重复项))
4.外连接(mysql暂不支持)
即左右连接结果的并集,不去除null项
PS:每次比较都是用一项去与另一个表的所有记录做比较
SELECT dept.deptno 部门编号,sum(emp.sal) 总工资,count(emp.empno) 部门人数,dept.dname 部门名称
from emp right JOIN dept on emp.deptno = dept.deptno GROUP BY dept.deptno
PS:表名后面也可以跟AS+新表名
SELECT *,dept.dname 部门名称 FROM (select deptno,sum(sal),count(empno) from emp GROUP BY deptno) a INNER JOIN dept on a.deptno = dept.deptno
BETWEEN A AND B 大于A小于B
PS:查询的结果就是一个表,可以当做表来操作
例:SELECT a.deptno 部门编号,a.ss 总和,a.ce 人数,dept.dname 部门名称 FROM (select deptno,sum(sal) ss,count(empno) ce
from emp GROUP BY deptno) a INNER JOIN dept on a.deptno = dept.deptno
分页查询
SELECT * FROM TABLENAME LIMIT start,num;//充第start(从0开始)行开始,一共num行
如:limit 0,1就是差第一行
JAVA:连接数据库
String url = "jdbc:mysql://localhost:3306/jdbctest";
String user = "root";
String password = "123456";
Class.forName(driver);
Connection con = DriverManager.getConnection(url,user,password);
if(!con.isClosed){
System.out.println("连接成功");
}