一.使用JDBC API對數據庫進行CRUD(create,receive,update,delete)操作,開發JDBC的步驟是:
package com.yjw.j3;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Test {
public static void main(String[] args) {
Connection c = null;
Statement s = null;
ResultSet r = null;
try {
//1.加載數據庫驅動(提供一個jdbc的數據庫驅動的名稱)
Class.forName("com.mysql.jdbc.Driver");
//2.獲取數據庫連接
String a = "jdbc:mysql://localhost:3306/school";
c = DriverManager.getConnection(a, "root", "root");
//3.獲取Statment對象(該對象用于對數據庫進行CRUD操作)
s = c.createStatement();
//4.執行SQL語句
String sql = "SELECT id,classname FROM t_class";
r = s.executeQuery(sql);
while(r.next()){
int id = r.getInt("id");
String b = r.getString("classname");
System.out.println("id"+id+"\t"+"classname"+b);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
//5.釋放連接
r.close();
} catch (Exception e2) {
e2.printStackTrace();
}finally{
try {
//5.釋放連接
s.close();
} catch (Exception e3) {
e3.printStackTrace();
}finally{
try {
//5.釋放連接
c.close();
} catch (Exception e4) {
e4.printStackTrace();
}
}
}
}
}
}
二.在statement類的對象調用executeUpdate()方法用來對數據進行insert update,delete操作,該方法返回影響數據庫的行數,對象調用executeQuery()方法用來對數據進行select操作,輸出要使用while迭代器
三.釋放連接時對象的順序不能變,釋放的順序和創建對象的順序相反
四.如果操作的事本地的數據庫,在連接數據庫時,有三種方法
1.”jdbc:mysql://本地ip:端口號/數據庫名字”
2.”jdbc:mysql://localhost:端口號/數據庫名字”
3.”jdbc:mysql:///數據庫名字”
五.如果不知道數據庫列的數據類型,可以通過這三步在控制臺上查看
1.輸入:mysql –u用戶名 –p密碼
2.輸入:use 數據庫名
3.輸入: desc 表名
一.在java中的異常中,Throwable類有兩個子類,Error和Exception,在Exception類中有兩個子類,RuntimeException(運行時異常)和非運行時異常,運行時異常是指只有在運行時才會報錯的異常,不會編譯錯,但是非運行時異常是會編譯錯的,在運行前就報錯了。
二.在cry {語句1}catch(Exception e){語句2}finally{語句3}語句中,語句1放的是可能會發生異常的語句,語句2放的是發生異常后執行的語句,語句3放的是一定會執行的語句,不管有異常沒有,
三。PrintStackTrace()方法用于輸出有關的異常信息,包括異常的原因,以及該異常發生在類的第幾行代碼中,getMessage()方法用于返回異常相關的詳細信息,但是無法跟蹤到具體的行。
四.在自定義異常中,如果是繼承自Exception類時,有兩種方法處理
1.在有可能發生異常的方法中,在這個方法名后利用throws跑出自定義異常,
在對象調用此方法的時,需要對象自己利用try catch語句處理此方法
2在有可能發生異常的方法中,自己利用try catch語句處理異常,在對象調用此方法時,不在需要對象自己利用try catch語句處理此方法,直接調用方法就可以
五.在自定義異常中,如果繼承自RuntimeException類時,在對象調用此方法的時,需要對象自己利用try catch語句處理此方法。
一.在內連接中的等值連接中,適用于兩個表,且兩個表中都有共同的一項,根據這一項來連接兩表中其他的項,但是如果不在where中約束兩表中共同的一項相等,會產生笛卡爾積。
比如select stuname,score from t_student,t_scores where t_student.id=t_sccores.stu_id;
標準的內連接是 select stuname,scores from t_student inner join t_scores on
T_student.id=t_scores.stu_id;
二.左連接會全部顯示左邊的信息,比如 select stuname,score from t_student
Left join t_scores on t_student.id=t_scores.stu_id;
三.只要是幾個表的連接查詢,都要在其中直接連接的兩個表中找到相同的項,作為紐帶,查詢其他的列。
四.表之間的關系包括1對1,1對多,多對多,其中1對1 時比如建立人的表和身份證表,他們是1對1的,在建立身份證表時,表的id號不是自動增長的,并且id即使身份證表的主鍵,也是人表的外鍵,也就是說id不但不能重復,還要一定時人表中存在的,1對1的。
在1對多時,比如人表和銀行卡表,一個人可以有多個銀行卡,但是一個銀行卡只能屬于一個人,所以把人的id放在銀行卡表中,作為人表的外鍵,也就是說,在1對多時,在多的表中存放1的主鍵。
在多對多時,比如學生表和課程表,一個學生可以選多個課,一個課可以有多個學生上課,這就是多對多的情況,需要建立第三張關系表,在關系表中包括學生表和課程表的倆主鍵,這倆主鍵也是關系表的主鍵,
在mysql中,group by 分組后,可用sun()來計算每組的莫一列的內容和,比如價格總額,數量總額,count()是用來計算列的個數和,不是內容和,
在查詢中,關鍵字的使用順序是1.select,2.from,3.where,4.group by,5.having,
6.order by,7.limit
在子查詢中又是可以把子查詢分解為幾個單表查詢,最后再整合在一起
在相關子查詢中,比如SELECT customers.cust_id, customers.cust_name,(SELECT COUNT(*) FROM orders WHERE orders.cust_id=customers.cust_id) FROM customers;中是先在customers表中拿到第一個cust_id 帶到小括號里進行比對,如果有相同的就計算總和,沒有相同的為0,以此類推,最后算出結果,。
數據庫就是用來保存有組織數據的容器,數據庫軟件應該成為DBMS(數據庫管理系統),數據庫是通過DBMS來操作的容器。用戶不能直接操作數據庫,是通過數據庫管理系統來操作數據庫的,常見的數據庫管理系統有SQLServer,MYSQL,Oracle,Db2等。
數據庫元素包括視圖,存儲過程,觸發器,用戶,表等。SQL的全稱是Structured Query Language結構化查詢語言,所有的DBMS都支持SQL語言,并且會在SQL語言中有一些發展,SQL語言是不區分大小寫的。