第一部分 前端
1.查看文件的大小:ll -h
2.實時監控一條命令的執行結果:watch -n1 ls -lhmysql
alt+f1---alt+f6:分別切換到linux的6個終端;linux
3.改變語句終結符:\d //sql
4.獨佔表才能作成數據表分區;
修改mysql配置文件,設置爲innodb獨佔表空間:
innodb_file|_per_table=1;//默認是沒有這一項的。數據庫
第二部分:mysql經常使用操做後端
1.複製表結構:create table t2 like t1;服務器
2.複製表數據:insert into t2 select * from t1;
注:這樣有可能會出錯,最好代表字段;只有在兩個表的結構徹底同樣的狀況下,纔會成功。socket
3.建立索引(mysql索引分爲三種:普通索引、UNIQUE索引、PRIMARY KEY索引):
ALTER TABLE table_name ADD INDEX index_name(column_list);
ALTER TABLE table_name ADD UNIQUE(columu_list);
ALTER TABLE table_name ADD PRIMARY KEY(column_list);
注意:也可使用create建立所用,可是create不能用於主鍵索引,通用性沒有alter好;tcp
4.查看索引:show index from t1;函數
5.刪除索引:DROP INDEX index_name ON table_name
或者:ALTER TABLE table_name DROP INDEX index_name
或者:ALTER TABLE table_name DROP PRIMARY KEY
6.建立視圖(視圖:從原表中讀取的數據造成的中間表):
create view v_t1 as select * from t1 where id>5 and id<10;
7.顯示視圖幫助:? view
8.查看視圖:show tables;
9.刪除視圖:drop view v_t1;
10.重排auto_incremnet的值:truncate table tablename 或者 alter table tablename auto_increment=1;
第三部分:mysql內置函數
1.字符串函數:
CONCAT(string2 [,...]) //鏈接字符串
LCASE(string) //轉換成小寫
UCASE(string) //轉換成大寫
LENGTH(string) //string長度
LTRIM(string) //去掉前端空格
RTRIM(string) //去掉後端空格
REPEAT(string,count) //重複count次
REPLACE(str,search_str,replace_str) //在str中用replace_str替換search_str
SUBSTRING(str,position[,length]) //在str的position開始,取length個字符
SPACE(count) //生成count個空格
2.數學函數
BIN(decimal_numeber) //十進制轉二進制
CEILING(number) //向上取整
FLOOR(number) //向下取整
MAX(col) //取最大值,聚合的時候使用
MIN(col) //取最小數,聚合的時候使用
SQRT(number) //開平方
RAND() //返回0-1內的隨機數
3.日期時間函數
NOW() //當前日期和時間
CURDATE() //當前日期
CURTIME() //當前時間
UNIX _TIMESTAMP(date) //返回當前data的unix的時間戳
FROM_UNIXTIME() //返回UNIX時間戳的日期值
WEEK(date) //返回日期date爲一年中的第幾周
YEAR(date) //返回如期date中的年份
DATEDIFF(starttime,endtime) //返回開始時間金和結束時間間隔的天數
第四部分:mysql預處理(待補充)
第五部分:事務處理(MyISAM不支持事務,InnoDB才支持)(待補充)
第六部分:存儲(待補充)
第七部分:觸發器(當修改了一張表的數據的時候,同時也修改了另一張的數據)(待補充)
第八部分:補充
1.外鍵:一張表中的外鍵是另外一張表的主鍵;
注:Innodb類型的表支持外鍵,MyISAM類型的表不支持外鍵,雖然能夠建立成功,可是不起做用。
2.運行狀態查詢
a.只針對mysql
show status; //所有狀態
show status like "com_select%"; //查詢次數
show status like "com_insert%"; //插入次數
b.只針對InnoDB引擎的
show status like "InnoDB_rows%" //查詢全部的
show status like "InnoDB_rows_read"
show status like "InnoDB_rows_updated"
show status like "InnoDB_rows_inserted"
show status like "InnoDB_rows_deleted"
c.其它
show status like "conections";//連接mysql的數量
show status like "Uptime";//服務器已經工做的描述
show status like "Slow_queries";//慢查詢的次數(須要在配置中先開啓,
查看慢查詢相關配置:show variables like "%long%"; )
經過慢查詢日誌來查看那些語句執行的比較慢!!!!
第九部分:索引優化
使用語句:explain、desc
注意點:影響的行數決定了查詢的時間!
1.索引的使用:
a.對於建立了多個索引,只要查詢條件用到了最左邊的列(第一個索引字段),索引就會被用到;反之, 若是沒有用到第一個列,索引就不會用到。
b.使用like查詢,後面若是是常量而且只有%號不在第一個字符,索引才能被用到。
c.若是對於大的文本文件進行搜索,使用全文索引而不使用like"%...%";
d.若是列名是索引,使用column is null將使用到索引,使用column is not null則不會使用到索引;
e.使用or查詢的時候,or前面和後面的兩個字段必須都加上索引,不然索引用不上;
and查詢則只須要一個字段添加索引就會用到索引;
f.where條件對應的字段類型不對,也會用不上索引(如:做爲條件的字段是varchar類型,並添加了索 引,但查詢的時候字段卻使用的是int類型,此時查詢的時候,mysql會放棄使用索引);
2.在某些狀況下,mysql不使用索引會比使用索引搜索更快(不多,mysql本身會判斷)
3.查看索引的使用狀況
使用命令:show status like 'Handler_read%'
結果:
Handler_read_key:表明了一個行被索引讀的次數;若是索引正常工做,它的值會很高;
Handler_read_rnd_next:若是他的值很高,則意味着查詢運行低效,應該創建索引補救。
第十部分:表優化
1.檢查表:check table tablename;
2.優化表:optimize table tablename;
第十一部分:數據的導入導出
1.數據導出:d:\soft\wamp\bin\mysql\mysql5.6.17\bin>mysqldump -uroot -p test > c:/test.sql
2.數據導入:d:\soft\wamp\bin\mysql\mysql5.6.17\bin>mysql -uroot -p test < c:/test.sql
第十二部分:MyISAM
讀鎖:某我的讀鎖了一張表,其它人能夠讀,可是全部人都不可寫增刪改;
寫鎖:某我的讀鎖了一張表,只有本人能夠讀增刪改,其它人都不能夠增刪改,連 讀 也不能夠;
1.加讀鎖:lock table tablename read;
2.加寫鎖:lock table tablename write;
3.解鎖: unlock tables;
第十三部分:服務器的優化
a.四種字符集的選擇:服務器字符集、數據庫字符集、客戶端字符集、鏈接字符集。
設置方法:在mysql配置文件中【client】的屬性:default-character-set=utf8
(控制戶服端字符集和鏈接字符集)
在mysql配置文件中【mysqld】的屬性: character-set-server=utf8
(控制服務器字符集和數據庫字符集以及繼承下來的表的字符集)
還有注意【mysqld】中的校驗字符集: collation-server=utf8-general-ci;主要是做用於排序。
第十四部分:socket問題
mysql配置文件中:
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
有時候登陸的時候因爲socket問題登陸的時候,可使用新的命令,從新制定協議主機等:
命令:mysql -uroot -p密碼 --protocol tcp --hlocalhost
若是socket文件丟失,重啓mysql便可。
第十五部分:MySQL root密碼破解 1.關閉進程或者服務:pkill mysqld 2.跳過用戶受權表:D:\soft\wamp\bin\mysql\mysql5.6.17\bin mysqld_safe --skip-grant-tables --users=mysql& 全部用戶的表都存在於mysql的user表中。 3.修改密碼:update mysql.user set password=password('123') where user= "root" and host="localhost" 4.殺掉進程,重啓mysql便可。