1. 程式人生 > 其它 >MySql系列 (一): MySql基礎

MySql系列 (一): MySql基礎

1、資料庫劃分

資料庫一般分為兩種:關係型資料庫和非關係型資料庫。

關係型資料庫:將複雜的資料規定成一系列二維表的形式,對關係型資料庫的操作一般是對一個或多個有關聯的表進行資料項的儲存查詢。

Mysql、Oracle就是常見的關係型資料庫。

非關係型資料庫:以鍵值對、文件、搜尋引擎的形式儲存資料,事特定結構儲存的資料集合。

Redis是典型的鍵值對形式、MongDB是文件形式、ES是搜尋引擎形式的非關係型資料庫。

2、MySql架構

MySql的層次結構大體可以分成四個層次:


(圖片來源於網路)

連線層:負責客戶端的連線,授權認證、安全處理、連線池等在這一層做相應處理。

服務層:處理sql語句的解析與優化,及快取和內建函式處理。

儲存引擎層:負責MySql資料的儲存和提取,連通檔案系統為服務層提供資料的存取服務。

檔案系統:MySql資料真正存放的地方,MySql資料檔案儲存在同級data目錄下。

3、Java連線MySql

原理是載入java的MySql驅動與資料庫建立連線,一般步驟就是:連線資料庫 -> 執行查詢 -> 返回結果。

程式碼示例
\\簡單java連線mysql例子:
public class MySqlDemo {

    private static final String USER = "root";
    private static final String PASSWORD = "root";
    private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";


    public static void main(String[] args) {
        Connection conn = null;
        Statement stm = null;
        try{
            // 註冊 JDBC 驅動
            Class.forName(JDBC_DRIVER);

            // 開啟連結
            System.out.println("連線資料庫...");
            conn = DriverManager.getConnection(DB_URL,USER,PASSWORD);

            // 執行查詢
            System.out.println(" 例項化Statement物件...");
            stm = conn.createStatement();
            String sql;
            sql = "SELECT id, name, age FROM user";
            ResultSet rs = stm.executeQuery(sql);

            while(rs.next()){
                // 通過欄位檢索
                int id  = rs.getInt("id");
                String name = rs.getString("name");
                String age = rs.getString("age");

                System.out.println(String.format("id=%s,name=%s,age=%s",id,name,age));
            }
            // 完成後關閉
            rs.close();
            stm.close();
            conn.close();
        }catch(SQLException se){
            // 處理 JDBC 錯誤
            se.printStackTrace();
        }catch(Exception e){
            // 處理 Class.forName 錯誤
            e.printStackTrace();
        }finally{
            // 關閉資源
            try{
                if(stm!=null){
                    stm.close();
                }
            }catch(SQLException se2){
            }// 什麼都不做
            try{
                if(conn!=null){
                    conn.close();
                }
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        System.out.println("end!");
    }
}

4、專案中使用MySql

Mysql在java專案的使用,一般都是將連線屬性寫在配置檔案,同時配合一個持久層的框架MyBatis、Spring Data等對資料庫的連線和操作語句進行管理。

關於學習到的一些記錄與知識總結