MySQL常用命令

來源:互聯網
上載者:User

標籤:索引   tiny   原理   之間   process   掃描   rand   unix   利用   

Mysql常用命令

note:粗體字部分是使用者需要根據自己的實際情況替換的部分,斜體部分為可選內容,#開頭的命令是在終端中執行,>開頭的命令是在mysql中執行

1. 登陸mysql
  • # mysql -u username -p (斷行符號後輸入密碼)
  • # msyql -uroot -p123(root為使用者名稱,123為密碼 -u和root中間,-p和123中間沒有空格)
  • 遠端連線mysql
    用法:# mysql -uusername -ppassword -h host -P 連接埠號碼 -D databases
    樣本:# mysql -uroot -p123456 -h 192.168.1.91 -P 3306 -D test
2. 執行sql檔案
  • > source /path/source.sql;
  • # mysql -uroot -p123 < source.sql
3.1 Database Backup

假設要備份temp這個資料庫:

  • # mysqldump -uroot -p123 temp > dump.sql

假設要備份temp這個資料庫中的表table1和table2:

  • # mysqldump -uroot -p123 temp table1 table2 > dump.sql

利用gzip壓縮資料:

  • # mysqldump -uroot -p123 temp table1 table2 | gzip > dump.sql.gz

備份多個資料庫:

  • # mysqldump -uroot -p123 --databases db1 [db2 db3..] > dump.sql

增加where條件:

  • # mysqldump -uroot -p123 temp table --where="" > dump.sql

當不能使用mysqldump時

  • # mysql -uroot -p123 -Ddatabase -e "select concat(‘insert into table values (‘,id,‘)‘"
3.2 資料庫恢複
  • # mysql -uroot -p123 temp < dump.sql

從壓縮檔直接恢複:

  • # gunzip < dump.sql.gz | mysql -uroot -p123 temp
4. 表結構修改
  • 4.1 增加一個新列用法:> alter table tablename add 列名 類型 約束條件;
    樣本:> alter table user add name varchar(32) not null default ‘unknow‘;
  • 4.2 刪除列用法:> alter table tablename drop column 列名;
    樣本:> alter table user drop column name;
  • 4.3 重新命名列用法:> alter table tablename change 原列名 新列名 原類型 約束條件;
    樣本:> alter table user change name nickname varchar(32) not null default ‘unknow‘;
  • 4.4 改變列的類型用法:> alter table tablename change 列名 列名 新類型 約束條件;
    樣本:> alter table user change name name tinyint not null default ‘0‘;
    用法:> alter table tablename alter column 列名 新類型;
    樣本:> alter table user alter column name tinyint;
  • 4.5 重新命名表用法:> alter table tablename1 rename tablename2;
    樣本:> alter table user rename new_user;
  • 4.6 加索引用法:> alter table tablename add index 索引名(欄位名1[,欄位名2 …]);
    樣本:> alter table user add index name_age(name,age);
  • 4.7 加主關鍵字的索引用法:> alter table tablename add primary key(id);
    樣本:> alter table user add primary key(id);
  • 4.8 加唯一限制條件的索引用法:> alter table tablename add unique 索引名(欄位名);
    樣本:> alter table user add unique index_name(name);
  • 4.9 刪除某個索引用法:> alter table tablename drop index 索引名;
    樣本:> alter table user drop index_name;
5. 查看錶的索引資訊
  • > show index from tablename;
6. sql效能分析
  • sql使用索引情況,掃描的行數
    > explain select * from user;
7. 資料庫正在執行的sql

> show processlist;

8. 隨機數

mysql機函數rand(),會產生大於等於0,小於1(0到1)之間的小數,floor函數都可以把小數變為整數整數

  • 0到99的隨機數
    > select floor(rand()*100);
  • 1到99的隨機數
    > select floor(1+rand()*99);
9. 建立使用者

建立使用者前需確保沒有使用者名稱為""的使用者,如果有需要先刪除
> select user,password from mysql.user;
> delete from mysql.user where user = ‘‘;
> create User 使用者命 IDENTIFIED BY ‘密碼‘;
> GRANT ALL ON 表名.* TO 使用者命;
> flush privileges; (授權後還要重新整理系統許可權表)
給使用者賦予許可權
用法:> GRANT 操作 ON 庫名.表名 TO 使用者名稱; (庫名表名可以用*匹配)
樣本:> GRANT SELECT, INSERT,UPDATE ON temp.user TO newuser;

10. 清空表中資料

用法:# mysqldump -u使用者名稱 -p密碼 --add-drop-table --no-data 資料庫 | mysql -u使用者名稱 -p密碼 資料庫
樣本:# mysqldump -uroot -p123 --add-drop-table --no-data temp | mysql -uroot -p123 temp
樣本:# mysqldump -uroot -p123 --add-drop-table --no-data temp | grep user | mysql -uroot -p123 temp
原理說明:根據mysqldump的備份參數,包括drop table和建表create table語句,其實是先把database裡的所有表drop後,再重建表結構。

11. 大量刪除指定表

用法:# mysqldump -u使用者名稱 -p密碼 --add-drop-table --no-data 資料庫 | grep \^DROP | grep 條件 | mysql -u使用者名稱 -p密碼 資料庫
樣本:# mysqldump -uroot -p123 --add-drop-table --no-data temp | grep \^DROP | grep user | mysql -uroot -p123 temp

12. 啟動mysql
  • # service mysqld start
  • # /etc/inint.d/mysqld start
13. 關閉mysql
  • # service mysqld start
  • # /etc/inint.d/mysqld start
14. 重啟mysql
  • # service mysqld restart
  • # /etc/inint.d/mysqld restart
15. 設定mysql終端編碼
  • 在終端中使用msyql中文經常會亂碼,這個時候可以set names utf8;
16. 禁止mysql緩衝結果
  • select SQL_NO_CACHE count(*) from tablename; 需要注意這個是禁止查詢的結果放入緩衝中,而不是禁止從緩衝中查詢
17. 查詢n次的耗時
  • select benchmark(n, (select COUNT(*) FROM tablename)); 測試表明測試的語句不會被緩衝
    benchmark會重複計算運算式n次,benchmark函數只能測量數字運算式的效能,雖然說運算式可以是一個子查詢,但子查詢返回的只能是單個值
18. 變數
  • 測試表明使用變數,不會做任何緩衝,對比使用SQL_NO_CACHE,SQL_NO_CACHE會緩衝一些sql分析,執行計畫
    > set @id := 0;
    > select COUNT(*) FROM tablename where id > @id;
19. 查詢行數比較多的表

> select table_name,table_rows from information_schema.tables order by table_rows desc limit 10;

20. 不產生binlog的刪除資料方式

> truncate tablename;

21. 秒數和日期轉換

> FROM_UNIXTIME(1466780897)
> UNIX_TIMESTAMP(‘2016-05-25 00:00:00‘)

22. 查出的列拼成一行

> select group_concat(id) from tablename;

MySQL常用命令

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.