mysql查询语句及JDBC
一,查询语句关键字
1.分组:GROUP BY,按照某列进行分组显示,该组有几种数据就分几组.可以和聚合函数一起使用.
2.条件:HAVING 和WHERE类似,但是HAVING只能用在GROUP BY后面,可以使用判断字符 = != > <
3.LIMIT:在整个SELECT语句后,是控制显示条数的.两个参数,第一个是从第几条开始,第二个是显示几条
4.查询语句关键字的执行顺序:
SELCET -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> LIMIT
5.代码
SELECT emp.job,emp.hiredate,avg(emp.sal+IFNULL(comm,0)) AS avg_sal;
FROM lan_ou.emp
WHERE hiredate BETWEEN '1980-01-01' AND '1981--12-31'
GROUP BY emp.job
HAVING avg_sal > 1000
ORDER BY avg_sal ASC;
二,JDBC : JAVA连接数据库
1.装载驱动: Class.forName("com.mysql.cj.jdbc.Driver");//将驱动类通过类名加载到内存
2.获得连接: Connection conn = DriverManager //参数:URL ,账户名,密码
.getConnection("jdbc:mysql://localhost:3306/lan_ou","root","123456");
3.获得执行SQL语句的对象: Statement state = conn.createStatement();
4.执行sql语句:
String sql = "SELECT * FROM stu;"; //需要执行的sql语句赋值给字符串变量
int rows = state.executeUpdate(sql);//返回值为int类型,表示该sql语句影响的行数
ResultSet resultSet = state.executeQuery(sql); //resultSet查询语句返回的结果集合
while(resultSet.next()){
String id = resultSet.getString('sid');//根据原类型取数据,可以进行计算等操作
System.out.println(resultSet.getObject("sname");//若用Object,则不能计算等操作
};
5.关闭资源:state.close(); , conn.close();
三,轮子:JDBCUtil
package com.lanou3g.code0426;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtil {
private static Connection conn; //连接对象
static {
// 静态代码块
//当程序第一次加载这个类的时候就会先执行这个类的静态代码块
//并且整个项目只要不停,只会执行一次
//加载mysql驱动,执行一次即可
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/lan_ou","root","123456");
} catch (Exception e) {
e.printStackTrace();
}
}
public static Statement getStatement(){
try {
Statement statement = conn.createStatement();
return statement;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void closeConn(){
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void closeResource(Statement statement){
if(statement != null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}