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 使用者可以將...