您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java數據庫知識點有哪些”,在日常操作中,相信很多人在Java數據庫知識點有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java數據庫知識點有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
知識點1:SQL的select語句完整的執行順序。
(1)from子句組裝來自不同數據源的數據;
(2)where子句基于指定的條件對記錄行進行篩選;
(3)group by子句將數據劃分為多個分組;
(4)使用聚集函數進行計算;
(5)使用having子句篩選分組;
(6)計算所有的表達式;
(7)select的字段;
(8)使用order by對結果集進行排序。
知識點2:SQL 之聚合函數
聚合函數是對一組值進行計算并返回單一的值的函數,它經常與select語句中的group by子句一同使用。
(1)avg():返回的是指定組中的平均值,空值被忽略。
(2)count():返回的是指定組中的項目個數。
(3)max():返回指定數據中的最大值。
(4)min():返回指定數據中的最小值。
(5)sum():返回指定數據的和,只能用于數字列,空值忽略。
(6)group by():對數據進行分組,對執行完group by之后的組進行聚合函數的運算,計算每一組的值。最后用having 去掉不符合條件的組,having子句中的每一個元素必須出現在select列表中。
知識點3:SQL之連接查詢
外連接:
左連接(左外連接):以左表作為基準進行查詢,左表數據會全部顯示出來,右表如果和左表匹配的數據則顯示相應字段的數據,如果不匹配則顯示為 null。
右連接(右外連接):以右表作為基準進行查詢,右表數據會全部顯示出來,左表如果和右表匹配的數據則顯示相應字段的數據,如果不匹配則顯示為 null。
全連接:先以左表進行左外連接,再以右表進行右外連接。
內連接:顯示表之間有連接匹配的所有行。
知識點4:SQL之sql注入
通過在 Web 表單中輸入(惡意)SQL 語句得到一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行 SQL 語句。舉例:當執行的 sql 為 select * from user where username = “admin” or “a”=“a”時,sql 語句恒成立,參數 admin 毫無意義。防止 sql 注入的方式:
(1)預編譯語句:如,select * from user where username = ?,sql 語句語義不會發生改變,sql 語句中變量用?表示,即使傳遞參數時為“admin or ‘a’= ‘a’”,也會把這整體當做一個字符創去查詢。
(2)Mybatis 框架中的 mapper 方式中的 # 也能很大程度的防止 sql 注入($無法防止 sql 注入)。
知識點5:Mysql性能優化
(1)當只要一行數據時使用 limit 1
查詢時如果已知會得到一條數據,這種情況下加上 limit 1 會增加性能。因為 mysql 數據庫引擎會在找到一條結果停止搜索,而不是繼續查詢下一條是否符合標準直到所有記錄查詢完畢。
(2)選擇正確的數據庫引擎
Mysql 中有兩個引擎 MyISAM 和 InnoDB,每個引擎有利有弊。MyISAM 適用于一些大量查詢的應用,但對于有大量寫功能的應用不是很好。甚至你只需要update 一個字段整個表都會被鎖起來。而別的進程就算是讀操作也不行要等到當前 update 操作完成之后才能繼續進行。另外,MyISAM 對于 select count(*)這類操作是超級快的。
InnoDB 的趨勢會是一個非常復雜的存儲引擎,對于一些小的應用會比 MyISAM 還慢,但是支持“行鎖”,所以在寫操作比較多的時候會比較優秀。并且,它支持很多的高級應用,例如:事物。
(3)用 not exists 代替 not in
Not exists 用到了連接能夠發揮已經建立好的索引的作用,not in 不能使用索引。Not in 是最慢的方式要同每條記錄比較,在數據量比較大的操作紅不建議使用這種方式。
(4)對操作符的優化,盡量不采用不利于索引的操作符
如:in not in is null is not null <>等某個字段總要拿來搜索,為其建立索引:Mysql 中可以利用 alter table 語句來為表中的字段添加索引,語法為:alter table 表明add index (字段名);
知識點6:Mysql 數據庫架構圖
知識點7:Mysql性能優化
下面代碼創建了一個叫 pr_add 的 MySQL 存儲過程,這個 MySQL 存儲過程有兩個 int 類型的輸入參數“a”、“b”,返回這兩個參數的和。
(1)drop procedure if exists pr_add; (備注:如果存在 pr_add 的存儲過程,則先刪掉)
(2)計算兩個數之和(備注:實現計算兩個整數之和的功能)
create procedure pr_add ( a int, b int ) begin declare c int; if a is null then set a = 0;
end if;
if b is null then set b = 0; end if;
set c = a + b;
select c as sum;
知識點8:MySQL 中文亂碼問題完美解決方案
解決亂碼的核心思想是統一編碼。我們在使用 MySQL 建數據庫和建表時應盡量使用統一的編碼,強烈推薦的是 utf8 編碼,因為該編碼幾乎可以兼容世界上所有的字符。
數據庫在安裝的時候可以設置默認編碼,在安裝時就一定要設置為 utf8 編碼。設置之后再創建的數據庫和表如果不指定編碼,默認都會使用 utf8 編碼,省去了很多麻煩。數據庫軟件安裝好之后可以通過如下命令查看默認編碼:
(1)查詢數據庫軟件使用的默認編碼格式
show variables like “%colla%”;
show varables like “%char%”
(2)修改數據庫默認編碼為 utf8
SET character_set_client='utf8';
SET character_set_connection='utf8';
SET character_set_results='utf8';
(3)創建數據庫的時候指定使用 utf8 編碼
CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
(4)創建表的時候指定使用 utf8 編碼
CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(5)修改具體某數據庫或表的編碼
ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
到此,關于“Java數據庫知識點有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。