溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java數(shù)據(jù)庫知識點有哪些

發(fā)布時間:2021-11-02 15:49:32 來源:億速云 閱讀:151 作者:iii 欄目:編程語言

這篇文章主要介紹“Java數(shù)據(jù)庫知識點有哪些”,在日常操作中,相信很多人在Java數(shù)據(jù)庫知識點有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java數(shù)據(jù)庫知識點有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

知識點1SQLselect語句完整的執(zhí)行順序。

1from子句組裝來自不同數(shù)據(jù)源的數(shù)據(jù);

2where子句基于指定的條件對記錄行進行篩選;

3group by子句將數(shù)據(jù)劃分為多個分組;

4)使用聚集函數(shù)進行計算;

5)使用having子句篩選分組;

6)計算所有的表達式;

7select的字段;

8)使用order by對結(jié)果集進行排序。

知識點2SQL 之聚合函數(shù)

聚合函數(shù)是對一組值進行計算并返回單一的值的函數(shù),它經(jīng)常與select語句中的group by子句一同使用。

1avg():返回的是指定組中的平均值,空值被忽略。

2count():返回的是指定組中的項目個數(shù)。

3max():返回指定數(shù)據(jù)中的最大值。

4min():返回指定數(shù)據(jù)中的最小值。

5sum():返回指定數(shù)據(jù)的和,只能用于數(shù)字列,空值忽略。

6group by():對數(shù)據(jù)進行分組,對執(zhí)行完group by之后的組進行聚合函數(shù)的運算,計算每一組的值。最后用having 去掉不符合條件的組,having子句中的每一個元素必須出現(xiàn)在select列表中。

 

知識點3:SQL之連接查詢

外連接:

左連接(左外連接):以左表作為基準進行查詢,左表數(shù)據(jù)會全部顯示出來,右表如果和左表匹配的數(shù)據(jù)則顯示相應字段的數(shù)據(jù),如果不匹配則顯示為 null。

右連接(右外連接):以右表作為基準進行查詢,右表數(shù)據(jù)會全部顯示出來,左表如果和右表匹配的數(shù)據(jù)則顯示相應字段的數(shù)據(jù),如果不匹配則顯示為 null。

全連接:先以左表進行左外連接,再以右表進行右外連接。

內(nèi)連接:顯示表之間有連接匹配的所有行。

知識點4SQLsql注入

通過在 Web 表單中輸入(惡意)SQL 語句得到一個存在安全漏洞的網(wǎng)站上的數(shù)據(jù)庫,而不是按照設計者意圖去執(zhí)行 SQL 語句。舉例:當執(zhí)行的 sql select * from user where username = “admin” or “a”=“a”時,sql 語句恒成立,參數(shù) admin 毫無意義。防止 sql 注入的方式:

1)預編譯語句:如,select * from user where username = ?,sql 語句語義不會發(fā)生改變,sql 語句中變量用?表示,即使傳遞參數(shù)時為“admin or ‘a’= ‘a’”,也會把這整體當做一個字符創(chuàng)去查詢。

2Mybatis 框架中的 mapper 方式中的 # 也能很大程度的防止 sql 注入($無法防止 sql 注入)。

 

知識點5Mysql性能優(yōu)化

1)當只要一行數(shù)據(jù)時使用 limit 1

查詢時如果已知會得到一條數(shù)據(jù),這種情況下加上 limit 1 會增加性能。因為 mysql 數(shù)據(jù)庫引擎會在找到一條結(jié)果停止搜索,而不是繼續(xù)查詢下一條是否符合標準直到所有記錄查詢完畢。

2)選擇正確的數(shù)據(jù)庫引擎

Mysql 中有兩個引擎 MyISAM InnoDB,每個引擎有利有弊。MyISAM   適用于一些大量查詢的應用,但對于有大量寫功能的應用不是很好。甚至你只需要update 一個字段整個表都會被鎖起來。而別的進程就算是讀操作也不行要等到當前 update 操作完成之后才能繼續(xù)進行。另外,MyISAM 對于 select count(*)這類操作是超級快的。

InnoDB 的趨勢會是一個非常復雜的存儲引擎,對于一些小的應用會比 MyISAM 還慢,但是支持行鎖,所以在寫操作比較多的時候會比較優(yōu)秀。并且,它支持很多的高級應用,例如:事物。

3)用 not exists 代替 not in

Not exists 用到了連接能夠發(fā)揮已經(jīng)建立好的索引的作用,not in 不能使用索引。Not in 是最慢的方式要同每條記錄比較,在數(shù)據(jù)量比較大的操作紅不建議使用這種方式。

4)對操作符的優(yōu)化,盡量不采用不利于索引的操作符

如:in      not in        is null        is not null <>等某個字段總要拿來搜索,為其建立索引:Mysql 中可以利用 alter table 語句來為表中的字段添加索引,語法為:alter table 表明add index (字段名)

知識點6Mysql 數(shù)據(jù)庫架構(gòu)圖

Java數(shù)據(jù)庫知識點有哪些

知識點7Mysql性能優(yōu)化

下面代碼創(chuàng)建了一個叫 pr_add MySQL 存儲過程,這個 MySQL 存儲過程有兩個 int 類型的輸入?yún)?shù)“a”、“b”,返回這兩個參數(shù)的和。

1drop procedure if exists pr_add; (備注:如果存在 pr_add 的存儲過程,則先刪掉)

2)計算兩個數(shù)之和(備注:實現(xiàn)計算兩個整數(shù)之和的功能)

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;

知識點8MySQL 中文亂碼問題完美解決方案

解決亂碼的核心思想是統(tǒng)一編碼。我們在使用 MySQL 建數(shù)據(jù)庫和建表時應盡量使用統(tǒng)一的編碼,強烈推薦的是 utf8 編碼,因為該編碼幾乎可以兼容世界上所有的字符。

數(shù)據(jù)庫在安裝的時候可以設置默認編碼,在安裝時就一定要設置為 utf8 編碼。設置之后再創(chuàng)建的數(shù)據(jù)庫和表如果不指定編碼,默認都會使用 utf8 編碼,省去了很多麻煩。數(shù)據(jù)庫軟件安裝好之后可以通過如下命令查看默認編碼:

1)查詢數(shù)據(jù)庫軟件使用的默認編碼格式

show variables like %colla%”;

show varables like “%char%”

2)修改數(shù)據(jù)庫默認編碼為 utf8

SET character_set_client='utf8';

SET character_set_connection='utf8';

SET character_set_results='utf8';

3)創(chuàng)建數(shù)據(jù)庫的時候指定使用 utf8 編碼

CREATE DATABASE `test`

CHARACTER SET 'utf8'

COLLATE 'utf8_general_ci';

4)創(chuàng)建表的時候指定使用 utf8 編碼

CREATE TABLE `database_user` (

`ID` varchar(40) NOT NULL default '',

`UserID` varchar(40) NOT NULL default '',

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

5)修改具體某數(shù)據(jù)庫或表的編碼

ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

到此,關(guān)于“Java數(shù)據(jù)庫知識點有哪些”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI