關係型資料庫作業

2021-10-02 04:52:39 字數 3038 閱讀 4564

1)innodb的優勢在於提供了良好的事務處理、崩潰修復能力和併發控制。缺點是讀寫效率較差,占用的資料空間相對較大。(磁碟表,支援事務處理,innodb還支援外來鍵)

2)myisam是mysql中常見的儲存引擎,曾經是mysql的預設儲存引擎。myisam的表儲存成3個檔案。檔案的名字與表名相同。拓展名為frm、myd、myi。(myisam:磁碟表,不支援事務,支援表級鎖,b+tree索引)

3) memory是mysql中一類特殊的儲存引擎。它使用儲存在記憶體中的內容來建立表,而且資料全部放在記憶體中。每個基於memory儲存引擎的表實際對應乙個磁碟檔案。該檔案的檔名與表名相同,型別為frm型別。該檔案中只儲存表的結構。而其資料檔案,都是儲存在記憶體中,因為它是把資料存到記憶體中,如果記憶體出現異常就會影響資料。如果重啟或者關機,所有資料都會消失。因此,基於memory的表的生命週期很短,一般是一次性的。(memory記憶體表,不支援事務,表級鎖,hash索引)

1、原子性(atomicity):事務中的全部操作在資料庫中是不可分割的,要麼全部完成,要麼均不執行。

2、一致性(consistency):幾個並行執行的事務,其執行結果必須與按某一順序序列執行的結果相一致。

3、隔離性(isolation):事務的執行不受其他事務的干擾,事務執行的中間結果對其他事務必須是透明的。

4、永續性(durability):對於任意已提交事務,系統必須保證該事務對資料庫的改變不被丟失,即使資料庫出現故障。

note:隔離級別需要根據併發情況進行設定,將資料庫設計成單執行緒,可以防止所有的執行緒安全問題,自然也就保證了隔離型的問題,但是如果這樣,那麼效率就會極其低下。如果兩個執行緒併發修改,一定會相互搗亂,這時必須利用鎖機制防止多個執行緒的併發修改。如果兩個執行緒併發查詢,沒有執行緒安全問題。

對於設計資料庫提出了一些規範,這些規範被稱為正規化:

第一正規化(1nf):列不可拆分 , 即無重複的域。

指資料庫表的每一列都是不可分割的基本資料項。

符合第一正規化的特點就有:有主關鍵字、主鍵不能為空、主鍵不能重複,欄位不可以再分。

第二正規化(2nf):唯一標識 ,即擁有實體的唯一標識(eg: 身份證、id號等)。

指每個表必須有且僅有乙個資料元素為主關鍵字(primary key),其他資料元素與主關 鍵字一一對應。這種關係為函式依賴。

符合第二正規化的特點就有:滿足第一正規化的前提下,消除部分函式依賴。

符合第三正規化的特點就有:不存在非主屬性對碼的傳遞性依賴以及部分性依賴

note:三大正規化只是一般設計資料庫的基本理念,可以建立冗餘較小、結構合理的資料庫。(需求》效能》表結構)

1)char是指固定長度的變數型別,char型別在查詢時比varchar更有效率

2)varchar是長度不固定的變數型別,varchar儲存資料時不會浪費空間

使用者提交帶有惡意的資料與sql語句進行字串方式的拼接,從而影響了sql語句的語義,最終產生資料洩露的現象

如何防止sql注入?

sql語句引數化(使用%s佔位符來傳遞引數)

1). 儲存引擎選擇:如果資料表需要事務處理,應該考慮使用 innodb,因為它完全符合 acid 特性。如果不需要事務處理,使用預設儲存引擎 myisam 是比較明智的

2). 對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引

3). 應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄

4). 應盡量避免在 where 子句中使用 != 或 <> 操作符,否則將引擎放棄使用索引而進行全表掃瞄

5). 應盡量避免在 where 子句中使用 or 來連線條件,如果乙個欄位有索引,乙個字段沒有索引,將導致引擎放棄使用索引而進行全表掃瞄6). update 語句,如果只更改 1、2 個字段,不要 update 全部字段,否則頻繁呼叫會引起明顯的效能消耗,同時帶來大量日誌7). 對於多張大資料量(這裡幾百條就算大了)的表 join,要先分頁再 join,否則邏輯讀會很高,效能很差。

更新高崎的出生日期為1996-12-12.

統計員工總人數

統計入職時間超過2年的員工姓名

查詢最晚入職員工的所有資訊

查詢最早入職員工的所有資訊

查詢成績在85到90分之間的學生姓名、課程名和成績(between and /inner join)

查詢高等數學成績最高的學生名和學生分數(max)

查詢李軍選修的課程名稱(distinct)

關係型資料庫 非關係型資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...

關係型資料庫 非關係型資料庫

2019 02 25 20 38 36 關係型資料庫和非關係型資料的比較 一 關係型資料庫 關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的乙個資料組織 優點 1 易於維護 都是使用表結構,格式一致 2 使用方便 sql語言通用,可用於複雜查詢 3 複雜操作 支援sql,可用於乙個表...

關係型資料庫與非關係型資料庫

關係型資料庫與非關係型資料庫的區別 非關係型資料庫的優勢 1.效能 nosql是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過sql層的解析,所以效能非常高。2.可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。關係型資料庫的優勢 1.複雜查詢 可...