您的位置:首页 > 数据库 > MySQL

mysql的查询及连接JDBC数据库

2016-08-12 20:20 567 查看

查询记录

查询表达式

每个表达式表示想要的一列,必须至少一个。

多个类之间以英文逗号分隔。

“*”号表示所有列

例如

只查询id和name两列

SELECT id,name FROM student;

WHERE

条件表达式

对记录进行过滤,如果没有指定WHERE自居,则显示所有记录。

在WHERE表达式中,可以使用MySQL支持的杉树或运算符。

例如:

查询id为偶数的记录

SELECT * FROM student WHERE id%2=0;

GROUP BY

查询结果分组

例如

按照分数分组,并且降序排列

SELECT * FROM student GROUP BY score DESC;

HAVING

分组条件

例如:

按照分数分组,并且只显示大于60分的

SELECT * FROM student GROUP BY score HAVINGscore > 60;

ORDER BY

对查询结果进行排序

例如:

按照id降序排列

SELECT * FROM student ORDER BY id DESC;

LIMIT

限制查询结果返回的数量

例如:

返回查询结果中的第二条记录

SELECT * FROM student LIMIT2;

返回2条记录,从第一条记录开始(记录从0开始编号);

SELECT * FROM student LIMIT 1,2;

输出分数最高的3名学生记录

SELECT * FROM student WHERE name LIKE ‘L%’;

子查询

概念

子查询(Subquery)是指出现在其他SQL语句内的Select子句。

例如:

SELECT * FROM T1 WHERE col1=(SELECT col2FROM t2);

其中SELECT * FROM t1,称为OuterQuery/Out

SELECT col2 FROM t2,称为SubQuery

注意

子查询指嵌套在查询内部,且必须始终出现在圆括号内。

子查询可以包含多个关键字或条件,如果GROUP BY,ORDER BY,LIMIT,函数等。

子查询的外层查询可以是:SELECT,INSERT,UPDATE,SET 或DO.

子查询返回值

子查询可以返回标量,一行,一列,或子查询。

使用比较运算符的子查询

=,>,<,>=,<=,!=

例如:查询高于班级平均分的学生

方法一先求平均值,然后查询

SELECT AVG(score) FROM student;

SELECT * FROM student WHEREscore>=(SELECT AVG(score) FROM student);

多表连接查询

      

使用on关键字来设定连接条件,使用WHERE关键字进行结果集记录的过滤。

INNER JOIN 内连接

多个表的交集

LEFT(OUTER)JOIN 左外连接

左表和多个表的交集

RIGHT(OUTER)JOIN 右外连接

右表和多个表的交集

例:

SELECT * FROM user RIGHT JOIN province ONprovince id=user.pid;

常用函数

字符函数

[NOT]LIKE

模式匹配

例:

SELECT * FROM student WHERE name LIKE ’L%’;

查找名字以L开头的学生信息

%表示匹配任意个字符 _表示匹配任意一个字符

比较函数

IS [NOT]NULL

是否为空

例:

SELECT * FROM student WHERE name IS NULL;

查找名字为null的学生信息

聚合函数

AVG()平均值

MAX()最大值

MIN()最小值

SUM()求和

COUNT()求数量

JDBC

概念

JDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它是由一组用Java语言编写的类和接口组成。

使用JDBC连接数据库步骤

1加载JDBC驱动程序,不同的数据库加载的驱动不一样

Class.forName("com.mysql.jdbc.Driver");
2建立连接。通过DriverManager类的getConnection方法建立连接时,需要注意getConnection会抛出SQLException异常,需要在try/catch块中捕获。
String url = "jdbc:mysql://localhost/bookshop";
String user = "root";
String password = "123456";
Connection con = DriverManager.getConnection(url, user, password);

3.创建Statement对象 用来向数据库发送查询和命令 大部分数据库驱动程序允许在同一个连接中打开多个并行的Statement对象,创建好Statement对象之后,就可以使用它来进行数据库的操作了。

Statement state = con.createStatement();
4.结果集处理。

//查询数据
ResultSet set = state.executeQuery("SELECT * FROM user");

while(set.next()){
String name = set.getString("name");
System.out.println(name);
}

//更新记录
state.executeUpdate("UPDATE user SET pass = '000' WHERE id = 1");

//插入记录
state.executeUpdate("INSERT user (name, pass)VALUES('Herry', '124')");

//删除记录
state.executeUpdate("DELETE FROM user WHERE id = 1");
5.关闭连接。关闭连接的同时,还要关闭对应的Statement和ResultSet对象。

set.close();
state.close();
con.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息