資料庫的相關知識

2021-09-21 01:30:31 字數 1470 閱讀 3797

儲存過程是一些預編譯的sql語句,直白的說儲存過程是乙個記錄集,它是由一些sql語句組成的**塊,這些**塊想乙個方法一樣實現一些功能,然後再給這個**塊起乙個名字,在用到這個功能的時候呼叫.

儲存過程是乙個與編譯的**塊,執行的效率比較高

儲存過程替代了大量的sql語句,降低了網路通訊量,提高通訊速率,一定程度上確保資料的安全.

索引是對資料庫中一或多個列的值進行排序的結構,是幫助mysql高效獲取資料的資料結構.

也可以這樣理解:索引就是加快檢索表中資料的方法,資料庫的索引類似書籍的索引.在書籍中,索引允許使用者不許翻閱整個書籍就能夠迅速的找到所需要的資訊,在資料庫中,索引也允許資料庫程式迅速的找到表中的資料,而不必掃瞄整個資料庫.

mysql資料庫幾個基本的索引型別:普通索引,唯一索引,主鍵索引,全文索引.

事務是併發控制的基本單位.它是乙個操作序列,這些操作要麼都執行,要麼都不執行,維護資料庫資料的一致性.

樂觀鎖和悲觀鎖是資料庫管理系統中的併發控制器主要採用的技術手段.

資料庫管理系統中的併發控制器確保多個事務同時訪問資料庫中同一事務時不破壞事務的隔離性和統一性.

悲觀鎖:假定會發生衝突,遮蔽一切可能違反資料完整性的操作.

樂觀鎖:假定不會發生衝突,只是在提交操作的時候檢查是否違反資料完整性.

髒讀:乙個事務讀到了另乙個事務未提交的資料

不可重複讀:乙個事務讀取到了另乙個事務已經提交(update)的資料,引發另乙個事務,在事務中的多次查詢結果不一致.

虛讀/幻讀:乙個事務讀取到了另乙個事務已經提交(insert)的資料,導致另乙個事務,在事務中多次查詢的結果不一致.

1.讀未提交:乙個事務讀到另乙個事務沒有提交的資料.(什麼都解決不了)

2.讀已提交:乙個事務讀到另乙個事務已提交的資料.(解決了髒讀)

3.可重複讀:乙個事務讀到的資料始終保持一致,無論另乙個事務是否提交(解決髒讀,不可重複讀)

4序列化:同時執行乙個事務,相當於事務的單執行緒(全部解決)

mysql的預設隔離級別為:可重複讀

oracle的預設隔離級別為:讀已提交

通常,通過索引查詢資料比全表掃瞄要快.但是我們也必須注意到它的代價.

索引需要空間來儲存,也需要定期維護, 每當有記錄在表中增減或索引列被修改時,索引本身也會被修改. 這意味著每條記錄的insert,delete,update將為此多付出4,5 次的磁碟i/o. 因為索引需要額外的儲存空間和處理,那些不必要的索引反而會使查詢反應時間變慢.

sql中的這三個命令都代表刪除,但是三者有一些的區別:

(1) varchar與char的區別

答:變長和固定長度

(2)varchar(50)中50的涵義

答: 字元最大長度50,所代表的位元組數與字符集有關,比如是utf8佔3個位元組,那麼varchar(50)欄位在表中最大取到150個位元組

(3) int(20)中20的涵義

答:int是型別的數字,在2進製記錄裡,長度最大為20,數字範圍是-219~(219-1);

資料庫相關知識

1儲存過程和函式的區別 儲存過程是使用者定義的一系列sql語句的集合,涉及特定表或其它物件的任務,使用者可以呼叫儲存過程,而函式通常是資料庫已定義的方法,它接收引數並返回某種型別的值並且不涉及特定使用者表。1.事務是什麼?事務是作為乙個邏輯單元執行的一系列操作,乙個邏輯工作單元必須有四個屬性,稱為 ...

資料庫相關知識

innodb和myisam資料庫引擎的區別 對比項innodb myisam事務 外來鍵 索引聚集索引,使用b tree作為索引結構,資料檔案是和 主鍵 索引綁在一起,5.7以前的innodb不支援全文索引支援全文索引,在涉及全文索引領域的查詢效率上myisam速度更快高 主鍵必須有主鍵 使用者沒有...

資料庫索引相關知識

查詢條件欄位和排序字段,新增聯合索引,查詢條件欄位在聯合索引的前面 整數型別比字元型別處理開銷更小 盡量避免null,應該指定列為 not null,使用乙個特殊的值 0,或者空值 來代替null 含有null的列很難進行查詢優化,建立索引的原則 1.對於查詢中很少涉及的列或者重複值比較多的列,不要...