1.什么是聚集索引?
樹形結構將數據組織和存儲起來,起到加速查詢的效果
2.主鍵索引怎么添加?
(1)聚集索引(主鍵索引)的添加方式,創建時添加
方式一:
Create table t1(
id int primary key,
)
方式二:
Create table t1(
Id int,
Primary key(id)
)
?
(2)唯一索引創建時添加:
方式一:
Create table t1(
Id int unique,
)
?方式二:
Create table t1(
Id int,
unique key uni_name (id)
)
?
(3)表創建完了之后添加:
Alter table 表名 add primary key(id)
(4)刪除主鍵索引:
Alter table 表名 drop primary key;
?
普通索引:
(4)創建:
Create table t1(
Id int,
Index index_name(id)
)
?
Alter table s1 add index index_name(id);
Create index index_name on s1(id);
?
(5)刪除:
Alter table s1 drop index u_name;
DROP INDEX 索引名 ON 表名字;
?
Show create table 表名;
?
3.Sql優化神器explain :
查看一下sql的預執行效率
4.數據備份
導出: mysqldump -h ip -P 3306? -u 用戶名 -p密碼 -B? 庫名.表名> 路徑 庫名.sql
導入?: mysql -u 用戶名 -p密碼 < 路徑 庫名.sql
5.
創建用戶,指定權限
創建用戶:root用戶 超級管理員
Use mysql
Create user ‘用戶名’@’%’ identified by ‘密碼’
?
用戶:chao(*.* 代表所有庫,所有表)
分配權限:Grant select,insert,update on *.* to ‘chao’@’%’;
?
Revoke all on 庫名.表名 from ‘chao’@’%’;
Flush privileges;
?
6.觸發器(娜姐:對數據的增刪改查之前或者之后,自動觸發SQL語句)
Delimiter //
Create trigger t_name before(after) insert(update\delete) on 表名 for each row
Begin
Select * from xx;
?
End //
Delimiter ;
?
7.注意,這個還需要多理解
存儲過程:
Create procedure p1(
In n1 int,
Out n2 int,
Inout n3 int
)
?
Begin
If while
End
#上邊是主要代碼?
?
Set @res = 1;
Set @res2 = 2
Call p1(1,@res,@res2); #調用
Select @res,@res2;
Cursor.callproc(‘p1’,(1,2,3))
Cursor.fetchall()
?
Sql=’select @_p1_0,@_p1_1,@_p1_2;’
Cursor.execute(sql)
Cursor.fetchall()
8.
事務:
四大特性:原子性\一致性\隔離性\持久性
Start transaction;
一堆sql語句
如果失敗了
?
Declare exit handler for sqlexception(sqlwarning) #聲明退出處理對于sql異常
begin
Rollback;
End
?
Commit;
9.數據庫集群 :
當網站的訪問量比較大的時候,查看自己的信息(存儲在數據庫里邊的數據),但是數據量非常大的訪問,首先連接數據庫,一個數據庫承受的數據比較多,承受不住多開幾個數據庫,將性能分散,通過算法實現,這個算法寫在python程序中.
10.數據庫讀寫分離
? 一個數據庫專門讀操作,一個數據庫專門 寫操作,寫的被分到讀的庫里.
11.主從復制&&高可用 :?
別人訪問數據庫,數據庫崩了,公司為了不出現這種情況,需要實時備份數據,(包括增量備份//實時備份//雙機備份),binlog(日志文件),主庫崩了,客戶端都要連接這個主機,備份的數據庫要頂上用,高可用就是瞬間替換之前的數據庫.