資料庫知識

2021-10-06 03:30:49 字數 1259 閱讀 5085

1.表中的列只能含有原子性(不可再分)的值

資料庫表中的字段都是單一屬性的,不可再分。

2.屬性完全依賴於主鍵

要求資料庫表中的每個例項或行必須可以被惟一地區分。為實現區分通常需要為表加上乙個列,以儲存各個例項的惟一標識。這個惟一屬性列被稱為主關鍵字或主鍵、主碼。

3.屬性不依賴於其它非主屬性

要求乙個資料庫表中不包含已在其它表中已包含的非主關鍵字資訊。

1、最好全值匹配; 

2、最左字首法則:如果索引了多列,查詢從索引的最左前列開始,且不能跳過索引中的列; 

3、不在索引列上做任何操作(計算,函式,型別轉換),會導致索引失效而轉向全表掃瞄;  

4、盡量使用覆蓋索引,只訪問索引的查詢(索引列和查詢列一致),減少select *; 

b+樹的葉子節點的非主鍵索引會儲存當前索引的值和主鍵,在查詢時查詢欄位是索引,會直接從索引中獲取值

這叫做覆蓋索引

5、mysql在使用不等於的時候無法使用索引會導致全表掃瞄; 

6、is null,is not null 也無法使用索引; 

7、like 以萬用字元開頭%索引會失效,變成全表掃瞄; 

8、字串不加單引號,索引失效; 

9、少用 or,如果條件中有or,即使其中有條件帶索引也不會使用

mysql 儲存過程中的關鍵語法

宣告語句結束符,可以自定義:

delimiter $$

或delimiter //

宣告儲存過程:

create procedure demo_in_parameter(in p_in int)
儲存過程開始和結束符號:

begin .... end
mysql> delimiter $$  #將語句的結束符號從分號;臨時改為兩個$$(可以是自定義)

mysql> create procedure delete_matches(in p_playerno integer)

-> begin

->   delete from matches

-> where playerno = p_playerno;

-> end$$

query ok, 0 rows affected (0.01 sec)

mysql> delimiter;  #將語句的結束符號恢復為分號

資料庫知識

1 資料庫的建立 建立格式 create table table name 字段 其中,字段包含三部分內容 名稱 域 逗號 域即資料型別,資料庫包含5中資料型別 integer real text blob null 2 改變表 altertable 命令可以改變表的結構,sqlite版的alter...

資料庫知識

關於資料庫的知識點 表的子查詢,聯合查詢,連線查詢 子查詢 查詢中巢狀查詢。把子查詢的結果作為父查詢的查詢物件 如 select from select cname,cid from tblclass union select dname,did from department as t1 orde...

資料庫知識

dml data manipulation language 資料庫操作語言 update,insert,delete 資料庫在執行dml時,是先把資料放到記憶體的回滾段 rollback 如果執行提交 commit 時,才把回滾段裡的資料儲存到資料庫中,如果還沒執行提交 commit 使用者可以將...