更新時間:2020-02-17 10:06:34 來源:動力節點 瀏覽2893次
一.數據庫的設計
1. 規范設計數據庫的步驟:
收集信息、標識實體、標識實體屬性、標識實體之間的關系
2. E-R圖:實體——關系圖(Entity-Relationship),用來表示實體的組成部分和實體之間的關系。
矩形名詞代表實體,橢圓名詞代表屬性,菱形動詞表示關系
3. 數據庫模型圖UML:數據庫模型圖是在詳細設計步驟時繪制的清晰表示各個實體(數據表),各個字段(列),標識了主外鍵關系的一個模型圖,作用是更直觀的展現數據庫各個實體以及實體之間的關系。
4. 映射基數:映射基數指的是各個數據實體之間的關聯關系,常見映射基數有以下幾種:
一對一1:1 一對多1:N
多對一N:1 多對多M:N
5. 三大范式:三大范式(3NF)是規范設計數據庫必須遵循的標準,是設計數據庫的規范,其中三個范式的具體含義如下:
第一范式(1NF):確保每列的原子性(每列都是不可再分的最小數據單元)
第二范式(2NF):確保每列都和主鍵相關(每個表只描述一件事情)
第三范式(3NF):每列都和主鍵直接相關,不能間接相關(除主鍵列以外的其他列不傳遞依賴于主鍵列)
6. 三大范式對性能的影響:有時為了方便檢索數據庫中的數據,會在設計數據庫時適當添加冗余字段,以空間換取時間。其次,在嚴格遵循使用三大范式設計數據庫時會對數據庫的性能產生影響。因此實際設計數據庫時,既需要考慮三大范式,也需要考慮數據庫的系統性能。
二.初識MySQL
1. MySQL是Oracle公司旗下的又一強大的關系型數據庫,目前由企業版和社區版兩種版本供用戶下載使用。
2. 安裝MySQL需要遵循的步驟:
①官網下載MySQL,啟動安裝程序
②設置默認端口號,默認為3306,設置MySQL服務名,默認服務名為MySQL
③設置數據庫默認字符集,默認選中latin1(ISO-8859-1),建議設置為utf8,對中文兼容性更好
④勾選安裝時自動配置環境變量,也可在安裝后手動像配置jdk一樣配置MySQL環境變量
⑤選擇安裝路徑,完成安裝。
3. 啟動MySQL常用DOS命令
①啟動MySQL服務
netstartmysql;
②關閉MySQL服務
netstopmysql;
③登錄MySQL服務器
mysql-uroot-p密碼;
mysql-uroot-p;
Enterpassword:輸入密碼
④退出MySQL服務器:
exit;
⑤查看系統幫助
HELP指令
4. 回顧SQL語言(StructQueryLanguage)結構化查詢語言
SQL語言組成:
DDL數據定義語言,定義數據庫、表、約束
DML數據操作語言:數據增刪改
DQL數據查詢語言:數據查詢
DCL數據控制語言:權限的管理和回收等
TCL事務控制語言:事務的處理(此處僅作了解)
①DDL數據定義語言:
創建數據庫:
DROPDATABASEIFEXISTS數據庫名
CREATEDATABASE數據庫名
創建數據庫表:
DROPTABLEIFEXISTS數據表名
CREATETABLE表名
(
列名 數據類型 列的特征(null/notnull),約束等
)
添加約束:
ALTERTABLE表名ADDCONSTRAINT約束名 約束類型 約束內容
修改表結構:
ALTERTABLE表名RENAME新表名(修改表名稱)
ALTERTABLE表名ADD列名數據類型列的特征(添加列)
ALTERTABLE表名CHANGE原列名新列名數據類型列的特征(修改列名和列的特征)
ALTERTABLE表名DROPCOLUMN列名(刪除列)
DML數據操作語言:
插入數據:
①一次插入一條記錄
INSERTINTO表名(列名)VALUES(值)
②一次插入多條記錄
插入已存在表中:
INSERTINTO表名(列名)VALUES(值),(值),(值)....
插入新表中:自動創建新表
CREATETABLE表名(SELECT語句)
修改數據
UPDATE表名SET列名=值WHERE更新條件
刪除數據
DELETEFROM表名WHERE刪除條件
清空表中數據
TRUNCATETABLE表名
DELETEFROM表名
DQL數據查詢語言:
SELECT列名FROM表名
WHERE查詢條件
GROUPBY分組
HAVING分組篩選
ORDERBY排序(ASC升序,默認值/DESC降序)
LIMIT行偏移量,行數
DCL數據控制語言
創建用戶:
CREATEUSER用戶名
IDENTIFIEDBY密碼
創建用戶并授權:
GRANT權限ON數據庫名.表名
TO用戶名@`localhost`
IDENTIFIEDBY密碼
修改用戶密碼:
DOS命令:mysqladmin-u用戶名-ppassword新密碼
SQL命令:
SETPASSWORDFOR用戶名@`localhost`=PASSWORD(新密碼)
刪除用戶:
DROPUSER用戶名1@`localhost`,用戶名2@主機名
查看所有用戶:
USEmysql;
SELECT*FROM`user`;
拓展SHOW語句
①查看所有數據庫
SHOWDATABASES;
②查看當前數據庫的所有數據庫表
USE數據庫名;
SHOWTABLES;
③查看默認字符集
SHOWVARIABLESLIKE‘character_set_%’
④查看表結構
DESCRIBE表名
DESC表名
⑤查看導出文件路徑
SHOWVARIABLESLIKE‘secure%’
三.子查詢
SELECT列名FROM表名
WHERE列名=(子查詢)
注意:以上語句中的子查詢只能返回唯一結果(因為使用的是關系運算符,關系運算符左右兩邊的值只能返回唯一結果),如果返回多條記錄,將引發querymorethan1row異常
IN/NOTIN子查詢
SELECT列名FROM表名
WHERE列名IN(子查詢語句)/NOTIN(子查詢語句)
IN子查詢作用:判斷某列的值是否存在于某個范圍內,類似于OR運算符的作用,IN后面子查詢查詢出的結果作為列舉值并逐個與IN前面的列值判斷,如果IN前面的列值為其中之一,則返回true,都不匹配返回false
NOTIN運算符作用:進行IN子查詢的取反操作,及如果如果IN前面的列值為子查詢查詢出的結果的其中之一,則返回false,都不匹配返回true
EXISTS/NOTEXISTS子查詢
SELECT列名FROM表名
WHEREEXISTS(子查詢)/NOTEXISTS(子查詢)
EXISTS作用:判斷某列的值是否存在于子查詢語句查詢的結果中,僅判斷是否存在。如果存在返回true,不存在返回false
NOTEXISTS作用:作用同上,但是是對EXISTS的結果進行取反操作。即不存在返回true,存在返回false
四:MySQL常用函數
字符串函數:
CONCAT()拼接
UPPER()轉換為大寫
LOWER()轉換為小寫
SUBSTRING()截取字符串
日期函數:
NOW()當前系統日期和事件
CURDATE()當前系統日期
CURTIME()當期系統時間
DATEDIFF()日期差
數學函數:
CEIL()向上取整
FLOOR()向下取整
ROUND()四舍五入
RAND()返回0-1之間的隨機數
五.事務、視圖、索引、備份和恢復、數據導入和導出
事務:事務是一個整體,必須同時執行,要么成功,要么失敗,從而保證數據庫中數據狀態一致。
事務的特性(ACID):
原子性:事務是不可再分的最小邏輯工作單元,必須同時執行,要么全部執行,要么都不執行。
一致性:事務在開始前和提交回滾后,數據庫中的數據保持一致狀態。
隔離性:事務和事務之間相互獨立,互不干涉。
持久性:事務成功提交或回滾后,對數據庫數據造成的影響是持久的。
語法:
開啟事務
BEGIN;
STARTTRANSACTION;
提交事務
COMMIT;
回滾事務
ROLLBACK;
視圖:視圖可以理解為虛擬表,是表數據的引用。視圖可以互相嵌套,主要用來做查詢,可以增刪改數據,將會同步引用的表的數據。
創建視圖:
CREATEVIEW視圖名
刪除視圖
DROPVIEW視圖名
查看視圖
SELECT*FROMview_name
索引:索引用來提高數據檢索速度,提高數據查詢的性能。
索引類型:普通索引、主鍵索引、全文索引、空間索引、唯一索引、組合索引。
創建索引
CREATE(UNIQUE/FULLTEXT/SPATIAL)INDEXindex_name
ONtable_name(column_name)
刪除索引
DROPINDEXindex_nameFROMtable_name
查看索引
SHOWINDEXFROMtable_name
備份和恢復:
備份數據庫
DOS命令:mysqldump-uroot-p密碼數據庫名>文件名
恢復數據庫
DOS命令:mysql-uroot-p密碼數據庫名<文件名
SQL命令:
USE數據庫名;
SOURCE數據庫備份文件名
導出數據:
SELECT...INTOOUTFILE文件名
導入數據:
LOADDATAINFILE文件名INTOTABLE表名
六.JDBC
1.JDBC:Java連接數據庫技術,全程JavaDataBaseConnectivity
2.JDBCAPI:使用JDBC常用接口訪問和操作數據庫
3.使用JDBC訪問和操作數據庫步驟(純Java方式)
首先在項目中BuildPathMySQL數據庫JAR包
①加載驅動Class.forName(“com.mysql.jdbc.Driver”);
②獲取鏈接
Connectionconn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/數據庫名”,”root”,”root”);
參數:連接字符串、用戶名、密碼
③獲取Statement或PreparedStatement接口實例
Statementstmt=conn.createStatement();
PreparedStatementpstmt=conn.preparedStatement(sql語句);
④編寫SQL語句
⑤調用Statement或PreparedStatement接口方法執行數據庫操作
booleanexecute()查詢SQL返回true,其他SQL返回false
IntexecuteUpdate()執行增刪改,返回受影響的行數Int類型
ResultSetexecuteQuery()執行查詢,返回查詢結果集ResultSet對象
⑥處理查詢結果
resultSet.next()前進到下一行記錄中,讀到記錄返回true,沒有讀到記錄返回false
getXX()獲取每行記錄中每列的值
⑦關閉連接,釋放資源
先關閉ResultSet,在關閉Statement或PreparedStatement,最后關閉Connection,注意checked異常處理。
七.DAO模式
數據持久化:數據持久化就是將程序中的數據在瞬時狀態和持久狀態之間相互轉換的機制。
DAO層:數據訪問層,負責實現數據持久化,對數據庫數據的增刪改查,降低代碼耦合度,提高內聚性。
DAO模式組成:
DAO接口、DAO接口實現類、Entity實體類,BaseDao數據庫鏈接和關閉工具類
Properties類:負責讀取數據庫配置文件中的驅動、連接字符串、用戶名、密碼等數據庫參數信息
讀取步驟:
①創建Properties類的實例
Propertiesproperties=newProperties();
②將配置文件讀入InputStream流
InputStreaminputStream=BaseDao.class.getClassLoader().getResourceAsStream(“配置文件名”);
③調用Properties類實例的load()方法讀取流
Properties.load(inputStream);//.注意處理checked異常
④調用Properties類的實例的getProperty(Stringkey)方法根據配置文件中的key映射獲取到相應的value值
Stringdriver=properties.getProperty(“driver”);
....
實體類標準定義:
①類名public
②屬性private
③屬性名和映射表的字段名盡量保持一致,采用駝峰命名法。
④提供公有的getter/setter方法封裝屬性
⑤最好實現java.io.Serializable接口,支持序列化機制。
數據庫相關視頻教程
oracle數據庫教程:http://m.dabaquan.cn/v22/
數據庫plsql教程:http://m.dabaquan.cn/v23/
jdbc數據庫教程:http://m.dabaquan.cn/v24/
數據庫mysql教程:http://m.dabaquan.cn/v21
Java實戰項目視頻之egov項目視頻教程【免費下載】:http://m.dabaquan.cn/v83/
Java學生成績管理系統視頻教程【免費下載】:http://m.dabaquan.cn/v51/
以上就是動力節點Java培訓機構小編介紹的“Java數據庫編程實例教程總結”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習