Java數(shù)據(jù)庫編程實例教程總結(jié)

Java數(shù)據(jù)庫編程實例教程總結(jié)

長沙一度軟件培訓      2022-04-04 21:35:01     1

Java數(shù)據(jù)庫編程實例教程總結(jié),  一.數(shù)據(jù)庫的設計  1. 規(guī)范設計數(shù)據(jù)庫的步驟:  收集信息、標識實體、標識實體屬性、標識實體之間的關系  2. E-R圖:

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹



  一.數(shù)據(jù)庫的設計


  1. 規(guī)范設計數(shù)據(jù)庫的步驟:


  收集信息、標識實體、標識實體屬性、標識實體之間的關系


  2. E-R圖:實體——關系圖(Entity-Relationship),用來表示實體的組成部分和實體之間的關系。


  矩形名詞代表實體,橢圓名詞代表屬性,菱形動詞表示關系


  3. 數(shù)據(jù)庫模型圖UML:數(shù)據(jù)庫模型圖是在詳細設計步驟時繪制的清晰表示各個實體(數(shù)據(jù)表),各個字段(列),標識了主外鍵關系的一個模型圖,作用是更直觀的展現(xiàn)數(shù)據(jù)庫各個實體以及實體之間的關系。


  4. 映射基數(shù):映射基數(shù)指的是各個數(shù)據(jù)實體之間的關聯(lián)關系,常見映射基數(shù)有以下幾種:


  一對一1:1    一對多1:N


  多對一N:1    多對多M:N


  5. 三大范式:三大范式(3NF)是規(guī)范設計數(shù)據(jù)庫必須遵循的標準,是設計數(shù)據(jù)庫的規(guī)范,其中三個范式的具體含義如下:


  第一范式(1NF):確保每列的原子性(每列都是不可再分的最小數(shù)據(jù)單元)


  第二范式(2NF):確保每列都和主鍵相關(每個表只描述一件事情)


  第三范式(3NF):每列都和主鍵直接相關,不能間接相關(除主鍵列以外的其他列不傳遞依賴于主鍵列)


  6. 三大范式對性能的影響:有時為了方便檢索數(shù)據(jù)庫中的數(shù)據(jù),會在設計數(shù)據(jù)庫時適當添加冗余字段,以空間換取時間。其次,在嚴格遵循使用三大范式設計數(shù)據(jù)庫時會對數(shù)據(jù)庫的性能產(chǎn)生影響。因此實際設計數(shù)據(jù)庫時,既需要考慮三大范式,也需要考慮數(shù)據(jù)庫的系統(tǒng)性能。


  二.初識MySQL


  1. MySQL是Oracle公司旗下的又一強大的關系型數(shù)據(jù)庫,目前由企業(yè)版和社區(qū)版兩種版本供用戶下載使用。


  2. 安裝MySQL需要遵循的步驟:


 ?、俟倬W(wǎng)下載MySQL,啟動安裝程序


 ?、谠O置默認端口號,默認為3306,設置MySQL服務名,默認服務名為MySQL


  ③設置數(shù)據(jù)庫默認字符集,默認選中l(wèi)atin1(ISO-8859-1),建議設置為utf8,對中文兼容性更好


 ?、芄催x安裝時自動配置環(huán)境變量,也可在安裝后手動像配置jdk一樣配置MySQL環(huán)境變量


 ?、葸x擇安裝路徑,完成安裝。


  3. 啟動MySQL常用DOS命令


 ?、賳覯ySQL服務


  netstartmysql;


 ?、陉P閉MySQL服務


  netstopmysql;


  ③登錄MySQL服務器


  mysql-uroot-p密碼;


  mysql-uroot-p;


  Enterpassword:輸入密碼


 ?、芡顺鯩ySQL服務器:


  exit;


 ?、莶榭聪到y(tǒng)幫助


  HELP指令


  4. 回顧SQL語言(StructQueryLanguage)結(jié)構化查詢語言


  SQL語言組成:


  DDL數(shù)據(jù)定義語言,定義數(shù)據(jù)庫、表、約束


  DML數(shù)據(jù)操作語言:數(shù)據(jù)增刪改


  DQL數(shù)據(jù)查詢語言:數(shù)據(jù)查詢


  DCL數(shù)據(jù)控制語言:權限的管理和回收等


  TCL事務控制語言:事務的處理(此處僅作了解)

   

 ?、貲DL數(shù)據(jù)定義語言:


  創(chuàng)建數(shù)據(jù)庫:


  DROpDATAbaseIFEXISTS數(shù)據(jù)庫名


  CREATEDATAbase數(shù)據(jù)庫名


  創(chuàng)建數(shù)據(jù)庫表:


  DROPTABLEIFEXISTS數(shù)據(jù)表名


  CREATETABLE表名


  (


  列名 數(shù)據(jù)類型 列的特征(null/notnull),約束等


  )


  添加約束:


  ALTERTABLE表名ADDCONSTRAINT約束名 約束類型 約束內(nèi)容


  修改表結(jié)構:


  ALTERTABLE表名RENAME新表名(修改表名稱)


  ALTERTABLE表名ADD列名數(shù)據(jù)類型列的特征(添加列)


  ALTERTABLE表名CHANGE原列名新列名數(shù)據(jù)類型列的特征(修改列名和列的特征)


  ALTERTABLE表名DROPCOLUMN列名(刪除列)


  DML數(shù)據(jù)操作語言:


  插入數(shù)據(jù):


 ?、僖淮尾迦胍粭l記錄


  INSERTINTO表名(列名)VALUES(值)


  ②一次插入多條記錄


  插入已存在表中:


  INSERTINTO表名(列名)VALUES(值),(值),(值)....


  插入新表中:自動創(chuàng)建新表


  CREATETABLE表名(SELECT語句)


  修改數(shù)據(jù)


  UPDATE表名SET列名=值WHERe更新條件


  刪除數(shù)據(jù)


  DELETEFROM表名WHERe刪除條件


  清空表中數(shù)據(jù)


  TRUNCATETABLE表名


  DELETeFROM表名


  DQL數(shù)據(jù)查詢語言:


  SELECt列名FROM表名


  WHERe查詢條件


  GROUPBY分組


  HAVINg分組篩選


  ORDERBY排序(ASC升序,默認值/DESC降序)


  LIMIT行偏移量,行數(shù)


  DCL數(shù)據(jù)控制語言


  創(chuàng)建用戶:


  CREATEUSER用戶名


  IDENTIFIEDBY密碼


  創(chuàng)建用戶并授權:


  GRANT權限ON數(shù)據(jù)庫名.表名


  TO用戶名@`localhost`


  IDENTIFIEDBY密碼


  修改用戶密碼:


  DOS命令:mysqladmin-u用戶名-ppassword新密碼


  SQL命令:


  SETPASSWORDFOR用戶名@`localhost`=PASSWORd(新密碼)


  刪除用戶:


  DROpUSER用戶名1@`localhost`,用戶名2@主機名


  查看所有用戶:


  USEmysql;


  SELECT*FROM`user`;


  拓展SHOW語句


  ①查看所有數(shù)據(jù)庫


  SHOWDATAbaseS;


 ?、诓榭串斍皵?shù)據(jù)庫的所有數(shù)據(jù)庫表


  USE數(shù)據(jù)庫名;


  SHOWTABLES;


 ?、鄄榭茨J字符集


  SHOWVARIABLESLIKE‘character_set_%’


 ?、懿榭幢斫Y(jié)構


  DESCRIBE表名


  DESC表名


 ?、莶榭磳С鑫募窂?/p>


  SHOWVARIABLESLIKE‘secure%’


  三.子查詢


  SELECt列名FROM表名


  WHERe列名=(子查詢)


  注意:以上語句中的子查詢只能返回唯一結(jié)果(因為使用的是關系運算符,關系運算符左右兩邊的值只能返回唯一結(jié)果),如果返回多條記錄,將引發(fā)querymorethan1row異常


  IN/NOTIN子查詢


  SELECt列名FROM表名


  WHERe列名IN(子查詢語句)/NOTIN(子查詢語句)


  IN子查詢作用:判斷某列的值是否存在于某個范圍內(nèi),類似于OR運算符的作用,IN后面子查詢查詢出的結(jié)果作為列舉值并逐個與IN前面的列值判斷,如果IN前面的列值為其中之一,則返回true,都不匹配返回false


  NOTIN運算符作用:進行IN子查詢的取反操作,及如果如果IN前面的列值為子查詢查詢出的結(jié)果的其中之一,則返回false,都不匹配返回true


  EXISTS/NOTEXISTS子查詢


  SELECt列名FROM表名


  WHEReEXISTS(子查詢)/NOTEXISTS(子查詢)


  EXISTS作用:判斷某列的值是否存在于子查詢語句查詢的結(jié)果中,僅判斷是否存在。如果存在返回true,不存在返回false


  NOTEXISTS作用:作用同上,但是是對EXISTS的結(jié)果進行取反操作。即不存在返回true,存在返回false


  四:MySQL常用函數(shù)


  字符串函數(shù):


  CONCAt()拼接


  UPPER()轉(zhuǎn)換為大寫


  LOWER()轉(zhuǎn)換為小寫


  SUBSTRINg()截取字符串


  日期函數(shù):


  NOW()當前系統(tǒng)日期和事件


  CURDATE()當前系統(tǒng)日期


  CURTIME()當期系統(tǒng)時間


  DATEDIFF()日期差


  數(shù)學函數(shù):


  CEIL()向上取整


  FLOOR()向下取整


  ROUND()四舍五入


  RAND()返回0-1之間的隨機數(shù)


  五.事務、視圖、索引、備份和恢復、數(shù)據(jù)導入和導出


  事務:事務是一個整體,必須同時執(zhí)行,要么成功,要么失敗,從而保證數(shù)據(jù)庫中數(shù)據(jù)狀態(tài)一致。


  事務的特性(ACID):


  原子性:事務是不可再分的最小邏輯工作單元,必須同時執(zhí)行,要么全部執(zhí)行,要么都不執(zhí)行。


  一致性:事務在開始前和提交回滾后,數(shù)據(jù)庫中的數(shù)據(jù)保持一致狀態(tài)。


  隔離性:事務和事務之間相互獨立,互不干涉。


  持久性:事務成功提交或回滾后,對數(shù)據(jù)庫數(shù)據(jù)造成的影響是持久的。


  語法:


  開啟事務


  BEGIN;


  STARTTRANSACTION;


  提交事務


  COMMIT;


  回滾事務


  ROLLBACK;


  視圖:視圖可以理解為虛擬表,是表數(shù)據(jù)的引用。視圖可以互相嵌套,主要用來做查詢,可以增刪改數(shù)據(jù),將會同步引用的表的數(shù)據(jù)。


  創(chuàng)建視圖:


  CREATEVIEW視圖名


  刪除視圖


  DROpVIEW視圖名


  查看視圖


  SELECT*FROMview_name


  索引:索引用來提高數(shù)據(jù)檢索速度,提高數(shù)據(jù)查詢的性能。


  索引類型:普通索引、主鍵索引、全文索引、空間索引、唯一索引、組合索引。


  創(chuàng)建索引


  CREATE(UNIQUE/FULLTEXT/SPATIAL)INDEXindex_name


  ONtable_name(column_name)


  刪除索引


  DROpINDEXindex_nameFROMtable_name


  查看索引


  SHOWINDEXFROMtable_name


  備份和恢復:


  備份數(shù)據(jù)庫


  DOS命令:mysqldump-uroot-p密碼數(shù)據(jù)庫名>文件名


  恢復數(shù)據(jù)庫


  DOS命令:mysql-uroot-p密碼數(shù)據(jù)庫名<文件名


  SQL命令:


  USE數(shù)據(jù)庫名;


  SOURCE數(shù)據(jù)庫備份文件名


  導出數(shù)據(jù):


  SELECT...INTOOUTFILe文件名


  導入數(shù)據(jù):


  LOADDATAINFILE文件名INTOTABLE表名


  六.JDBC


  1.JDBC:Java連接數(shù)據(jù)庫技術,全程JavaDatabaseConnectivity


  2.JDBCAPI:使用JDBC常用接口訪問和操作數(shù)據(jù)庫


  3.使用JDBC訪問和操作數(shù)據(jù)庫步驟(純Java方式)


  首先在項目中BuildPathMySQL數(shù)據(jù)庫JAR包


  ①加載驅(qū)動Class.forName(“com.mysql.jdbc.Driver”);


 ?、讷@取鏈接


  Connectionconn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/數(shù)據(jù)庫名”,”root”,”root”);


  參數(shù):連接字符串、用戶名、密碼


 ?、郢@取Statement或PreparedStatement接口實例


  Statementstmt=conn.createStatement();


  PreparedStatementpstmt=conn.preparedStatement(sql語句);


 ?、芫帉慡QL語句


 ?、菡{(diào)用Statement或PreparedStatement接口方法執(zhí)行數(shù)據(jù)庫操作


  booleanexecute()查詢SQL返回true,其他SQL返回false


  IntexecuteUpdate()執(zhí)行增刪改,返回受影響的行數(shù)Int類型


  ResultSetexecuteQuery()執(zhí)行查詢,返回查詢結(jié)果集ResultSet對象


 ?、尢幚聿樵兘Y(jié)果


  resultSet.next()前進到下一行記錄中,讀到記錄返回true,沒有讀到記錄返回false


  getXX()獲取每行記錄中每列的值


 ?、哧P閉連接,釋放資源


  先關閉ResultSet,在關閉Statement或PreparedStatement,最后關閉Connection,注意checked異常處理。


  七.DAO模式


  數(shù)據(jù)持久化:數(shù)據(jù)持久化就是將程序中的數(shù)據(jù)在瞬時狀態(tài)和持久狀態(tài)之間相互轉(zhuǎn)換的機制。


  DAO層:數(shù)據(jù)訪問層,負責實現(xiàn)數(shù)據(jù)持久化,對數(shù)據(jù)庫數(shù)據(jù)的增刪改查,降低代碼耦合度,提高內(nèi)聚性。


  DAO模式組成:


  DAO接口、DAO接口實現(xiàn)類、Entity實體類,baseDao數(shù)據(jù)庫鏈接和關閉工具類


  Properties類:負責讀取數(shù)據(jù)庫配置文件中的驅(qū)動、連接字符串、用戶名、密碼等數(shù)據(jù)庫參數(shù)信息


  讀取步驟:


 ?、賱?chuàng)建Properties類的實例


  Propertiesproperties=newProperties();


 ?、趯⑴渲梦募x入InputStream流


  InputStreaminputStream=baseDao.class.getClassLoader().getResourceAsStream(“配置文件名”);


  ③調(diào)用Properties類實例的load()方法讀取流


  Properties.load(inputStream);//.注意處理checked異常


 ?、苷{(diào)用Properties類的實例的getProperty(Stringkey)方法根據(jù)配置文件中的key映射獲取到相應的value值


  Stringdriver=properties.getProperty(“driver”);


  ....


  實體類標準定義:


 ?、兕惷鹥ublic


  ②屬性private


 ?、蹖傩悦陀成浔淼淖侄蚊M量保持一致,采用駝峰命名法。


 ?、芴峁┕械膅etter/setter方法封裝屬性


 ?、葑詈脤崿F(xiàn)java.io.Serializable接口,支持序列化機制。


  數(shù)據(jù)庫相關視頻教程


  oracle數(shù)據(jù)庫教程:http://www.bjpowernode.com/v22/


  數(shù)據(jù)庫plsql教程:http://www.bjpowernode.com/v23/


  jdbc數(shù)據(jù)庫教程:http://www.bjpowernode.com/v24/


  數(shù)據(jù)庫mysql教程:http://www.bjpowernode.com/v21


  Java實戰(zhàn)項目視頻之egov項目視頻教程【免費下載】:http://www.bjpowernode.com/v83/


  Java學生成績管理系統(tǒng)視頻教程【免費下載】:http://www.bjpowernode.com/v51/



       以上就是長沙一度軟件培訓Java培訓機構小編介紹的“Java數(shù)據(jù)庫編程實例教程總結(jié)”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。


Java編程教程

培訓啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹慎!任何要求預付定金、匯款等方式均存在風險,謹防上當。