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();