1. 程式人生 > >Mysql之檢視、索引、外來鍵、觸發器

Mysql之檢視、索引、外來鍵、觸發器

1、檢視: 1、概念:就是一個假表; 2、作用:直觀,便於我們對資料進行觀察。 3、建立檢視: create view 檢視名 as select 欄位名1,欄位名2 from 表名; 注意:多少個欄位名你自己加。

4、檢視檢視結構:desc 檢視名;
5、檢視檢視全部資料:SELECT * FROM 檢視名;

2、索引: 1、作用:方便快速查詢;對sql的優化非常有幫助。 2、注意: 1、欄位經常被當作查詢物件操作才加索引。 2、一張表裡面與其他表裡面關係重合的,不適合加索引。

3、檢視所有索引:
			show index from 表名;

4、新增主鍵索引:
				alter table 表名 add primary key(欄位名(一般是id));

5、新增唯一索引:
				alter table 表名 add unique(欄位名);
				注意:一張表可以有多個唯一索引,主鍵索引只能有一個。

6、新增全域性索引:
				alter table 表名 add index(表名);

7、刪除索引:
			alter table 表名 drop index 欄位名;

3、外來鍵: 1、作用:就是可以把多張表的關係聯絡起來。 2、解釋:從表的外來鍵對應的都是主表的主鍵。 3、要求:外來鍵的大小、長度、型別必須與主鍵的一樣。 4、給從表新增外來鍵:

	alter table 從表名 add constraint 外來鍵名 foreign key(從表字段名) references 主表名(主表字段名);

	注意:1、從表字段名定義的時候最好與主表主鍵名一樣。
	
		  2、刪除grade表裡id為1那行資料,失敗,因為它有外來鍵關聯,下面新增級聯操作就好了。

5、刪除外來鍵:

	alter table 表名 drop foreign key 外來鍵名;
	
	注意:1、這樣刪除會還有索引,不過沒關係。

6、新增層疊關係,刪除主鍵的資料,從表外來鍵的資料也會刪除:

	alter table 從表名 add constraint 外來鍵名 foreign key(從表字段名) references 主表名(主表字段名) on delete cascade;		

7、新增set null關係,在刪除主表的同時把相關聯的從表資料都設為NULL:

	alter table 從表名 add constraint 外來鍵名 foreign key(從表字段名) references 主表名(主表字段名) on delete set null;
	
	注意:1、刪除主表grade  id為1的資料,然後從表外來鍵欄位那個值為null。

4、觸發器: 1、檢視觸發器:show triggers;

2、新增插入型別的觸發器:	
					create trigger 觸發器名 before insert on emp
					
					   for each row
					  
					insert into jixiao values(NEW.ename,NEW.esalary*0.5);
					
					注意:插入資料的表的欄位個數一定要大於或者等於被觸發的表的欄位個數。
					
					#想emp表插入資料,jixiao表的資料也跟著變化
					
					insert into emp(ename,esalary) value("Rain",200); 					

3、新增修改型別的觸發器:
					create trigger 觸發器名 before update on emp
					
						for each row
						
					update jixiao set jmoney=NEW.esalary;
					
					#emp修改一條資料,jixiao表也會變
					
					update emp set esalary=500;
					
4、刪除觸發器:drop trigger 觸發器名;