Java菜鳥學習日記11

數據庫
  • DBMS:數據庫管理系統
    • 是由多個程序構成的,專門用來管理大量數據的計算機系統
    • 服務端
      • Server:提供數據存儲、檢索、計算等服務的網絡程序+系統服務
      • Notifier:通知應用

    • 管理端
      • Workbench:英文、圖形化的數據庫管理客戶端
      • Navicat:中文、圖形化的。。。
      • Shell:英文、命令行字符界面
      • phpAdmin:具備管理MySQL數據庫的功能=BS架構
    • 開發工具包
      • Connector/J:Java使用的數據庫驅動(連接工具)
      • 文檔
      • 示例代碼
  • 數據庫分類
    • 關係型數據庫
      • MySQl
      • Oracle
      • SQL Server
      • 。。。
      • 用來存放規則的數據,通常要支持事務(在商業交易環境中,通過事務可以保證數據的正確性)
      • 能夠支持的數據量,事務數據百萬級、非事務型數據千萬
      • 性能和速度、併發能力:一般
    • NoSQL(非關係型數據庫)
      • Redis:Key-Value:內存 速度非常塊
      • Hbase:Key-Value:大數據存儲
      • MongDB:文檔型(JSON對象):千萬級,速度比較快
      • 。。。
  • 設計數據表
    • 數據分析
      • 識別數據對象(一開始是粗略的),如學生信息
      • 分解數據屬性
        • 最好的方法是討論
          • 和項目組內部的人討論
          • 和客戶討論(在需求調研時詳細詢問)
        • 分解結果詳細記錄,準備進一步識別數據對象和第二層分解
        • 分解時注意的細節
          • 類型是什麼
            • 用簡單類型能否表示
            • 如果是複雜類型的話,初步分解
            • 長度
            • 隨時間或環境變化是否會改變
            • 值的取值範圍
            • 會不會有無值的情況
            • 默認值是什麼
      • 分解屬性和識別數據對象需要反覆多次
    • 創建表
      • 命名規範
        • 表明及字段名全部小寫,單數使用單數,單詞之間用_分隔
      • 根據需求合理設置字段屬性
    • 填充數據進行功能驗證
      • 能夠方便的查詢出所需要的數據結果(連接多個表才能得到的最複雜數據)
    • 填充更多數據進行性能驗證
      • 填充指定量的數據,並且注意數據的質量,驗證增刪改查的性能
    • 數據的基本字段
      • 自增:向表中插入新數據時,不需插入,而是會自動生成,規則是本列最大值+1(通常)
      • 主鍵用來唯一表示一條數據
        • 通常使用id充當。如果數據字段中有一個字段可以確保唯一性,並且是整數或比較短的字段串也可以充當主鍵
        • 有一些表沒有id,也可以使用2個表甚至更多個列組合作爲主鍵,只要能夠保證組合的唯一性即可
        • 主鍵一定有索引功能的。通過主鍵查找數據速度很快。
      • 邏輯刪除
        • 業務上已經不需要該數據,系統中也看不到,但數據庫中並沒有刪除它
        • 系統在篩選數據時故意把它們排除掉了(status!=-2)
  • SQL語句
    • 查詢所有數據(返回所有列)
      • Select * From 表名
    • 返回指定列
      • Select 列名,列名,列名 From 表名(如果列名有關鍵字衝突,則需要用``包裹:ESC下邊的符號)
    • 插入數據
      • insert into 表名 (列名,列名,列名)Value(值,值,值)
    • 查詢條件
      • Select * From 表名 Where 邏輯表達式
        • status <>=-2:不等於-2
        • status !=-2:不等於-2
        • status > -2:大於-2
    • 邏輯運算符
      • AND
      • OR
      • 需要時加()
    • 更新數據
      • Update 表名
        • Set 列名=值,
          • 列名=值,
            • 列名=值
      • Where 邏輯表達式
    • 刪除數據(刪除後無法恢復)
      • Delete From 表名
      • Where 邏輯表達式
    • IN列表
      • Select * From 表名 Where id in(3,4,5,6,7)
    • 查詢數據條數
      • Select Count(1) AS 列的別名 From 表名 Where 邏輯表達式
  • JDBC
    • JDBC是JDK中連接和操作數據庫的類的統稱
    • 它包含Java.sql包下的多個類和接口,定義了:
      • Connection:數據庫連接
      • DriverManager:數據庫驅動管理
      • Statement:定義了SQL語句和執行SQL語句的方法
      • ResultSet:數據查詢結果集
    • 上面的JDBC類或接口並沒有提供完整數據庫連接和操作能力
    • JDBC的具體實現是由各個數據庫廠商提供的,通常在安裝數據時,可以獲取到這個數據庫的JDBC實現(驅動包)
    • 這樣設計的原因
      • 當時SUN沒有數據庫產品,主流的數據庫都是其他廠商的產品
      • JDK爲了統一數據庫訪問的代碼,定義了JDBC的基本類和接口,由數據庫廠商實現(如果不提供統一的數據庫訪問類,則會導致數據庫訪問的類變得混亂,沒有標準)
      • 寫代碼時,不會在代碼中直接使用廠商提供的類,而是使用JDK中的類,這就導致廠商提供的類不會被加載
      • 所以就要使用Class.forName("驅動類的名字"),驅動類加載時,靜態初始化代碼就會執行,驅動相關的信息就可以註冊到DroverMannager等類中
    • JDBC流程
  • @WebServlet("/JDBC")
    • 這一個註解,目標是取代web.xml中的<servlet>和<swevlet-mapping>配置
    • 使用註解有利也有弊,早起Servlet不支持註解,後來(Servlet3)才支持大量使用註解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章