類相關
阿新 • • 發佈:2020-08-23
索引底層
mysql優化
事務ACID原則
事務:要麼都成功,要麼都失敗
ACID原則:
原子性:要麼都成功,要麼都失敗
一致性:事務前後的資料完整性要保持一致
隔離性:多個使用者併發訪問資料庫時,資料庫為每一個使用者開啟的事務,不能被其他事務的操作資料所幹擾,事務之間要相互隔離
永續性:事務一旦提交則不可逆,被持久化到資料庫中
隔離所導致的問題:
髒讀:一個事務讀取了另一個事務未提交的資料
幻讀(虛讀):在一個事務內讀到了其他事務插入的資料,導致前後讀取不一致
三大正規化
1NF
原子性:保證每一列不可再分
2NF
前提:滿足第一正規化
每張表只描述一件事情
3NF
前提:滿足第一二正規化
確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關
規範性和效能問題
關聯查詢的表不超過3張,考慮商業化的需求和目標(成本,使用者體驗),資料庫的效能更加重要,有時會故意給某些表增加一些冗餘欄位,從多表查詢變為單表查詢,還會故意增加一些計算列,從大資料量查詢降低為小資料量的查詢
JDBC程式
package com.yl.servlet;
import java.sql.*;
public class JDBCDemo {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//1.載入驅動
Class.forName("com.mysql.jdbc.Driver");//固定寫法,載入驅動,具體寫法查詢版本
//2.使用者資訊和url
String url = "jdbc:mysql://localhost:3306/資料庫名?useUnicode=true&characterEncoding=utf8&useSSL=true";//useSSL=false
String username = "root";
String password = "1234";
//3.連線成功,資料庫物件
Connection connection = DriverManager.getConnection(url, username, password);
//4.執行SQL的物件
Statement statement = connection.createStatement();
//5.執行SQL的物件去執行SQL,可能存在結果,檢視返回結果
String sql = "";
ResultSet resultSet = statement.executeQuery(sql);//執行查詢操作
statement.execute(sql);//執行任何操作都可
statement.executeUpdate();//更新、插入、刪除操作都可
//如果是查詢
while(resultSet.next()){
//檢視程式碼
}
//6.釋放連線
resultSet.close();
statement.close();
connection.close();
}
}