1. 程式人生 > >mysql的查詢及連線JDBC資料庫

mysql的查詢及連線JDBC資料庫

查詢記錄

查詢表示式

每個表示式表示想要的一列,必須至少一個。

多個類之間以英文逗號分隔。

“*”號表示所有列

例如

只查詢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();