MySQL常用命令

來源:互聯網
上載者:User

標籤:opera   視圖   cond   備份   匯入   seh   分組   cal   condition   

MySQL 常用命令大全

1. mysql:串連資料庫

mysql 命令使用者串連資料庫。 mysql 命令格式: mysql -h 主機地址 -u 使用者名稱 -p 使用者密碼

1) 串連到本機上的 MYSQL 首先開啟 DOS 視窗,然後進入目錄 mysql\bin,再鍵入命令 mysql -u root -p,斷行符號後提示你

輸密碼。注意使用者名稱前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼。

如果剛安裝好 MYSQL,超級使用者 root 是沒有密碼的,故直接斷行符號即可進入到 MYSQL 中了,

MYSQL 的提示符是: mysql> 2) 串連到遠程主機上的 MYSQL

假設遠程主機的 IP 為:110.110.110.110,使用者名稱為 root,密碼為 abcd123。則鍵入以下命令: mysql -h110.110.110.110 -u root -p 123;(註:u 與 root 之間可以不用加空格,其它也一樣)

3) 退出 MYSQL 命令 exit (斷行符號)

2. mysqladmin:修改使用者密碼

mysqladmin 命令用於修改使用者密碼。

mysqladmin 命令格式:mysqladmin -u 使用者名稱 -p 舊密碼 password 新密碼

1) 給 root 加個密碼 ab12

首先在 DOS 下進入目錄 mysql\bin,然後鍵入以下命令:

mysqladmin -u root -password ab12

註:因為開始時 root 沒有密碼,所以-p 舊密碼一項就可以省略了。

2) 再將 root 的密碼改為 djg345

mysqladmin -u root -p ab12 password djg345

3. grant on:新增使用者

grant on 命令用於增加新使用者並控制其許可權。

grant on 命令格式:grant select on 資料庫.* to 使用者名稱@登入主機 identified by “密碼”;

1) 增加一個使用者 test1,密碼為 abc,讓他可以在任何主機上登入,並對所有資料庫有查詢、插入、修改、刪除的許可權。首先用 root 使用者連入 MYSQL,然後鍵入以下命令:

grant select,insert,update,delete on *.* to [[email protected]”%][email protected]”%[/email]” Identified by “abc”;

但增加的使用者是十分危險的,你想如某個人知道 test1 的密碼,那麼他就可以在 internet 上

的任何一台電腦上登入你的 mysql 資料庫並對你的資料可以為所欲為了,解決辦法如下。

2) 增加一個使用者 test2 密碼為 abc,讓他只可以在 localhost 上登入,並可以對資料庫 mydb 進行查詢、插入、修改、刪除的操作(localhost 指本地主機,即 MYSQL 資料庫所在的那台主機),這樣使用者即使用知道 test2 的密碼,他也無法從 internet 上直接存取資料庫,只能通過 MYSQL 主機上的 web 頁來訪問了。

grant select,insert,update,delete on mydb.* to [[email protected]][email protected][/email] identified by

“abc”;

如果你不想 test2 有密碼,可以再打一個命令將密碼消掉。

grant select,insert,update,delete on mydb.* to [[email protected]][email protected][/email] identified by “”;

4. create:建立資料庫

create 命令用於建立資料庫。

create 命令格式:create database <資料庫名>; 注意:建立資料庫之前要先串連 Mysql 伺服器。

1) 建立一個名為 xhkdb 的資料庫:

mysql> create database xhkdb;

2) 建立資料庫並分配使用者:

a:CREATE DATABASE 資料庫名;

b:GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 資料庫名.* TO

資料庫名@localhost IDENTIFIED BY ‘密碼‘; c:SET PASSWORD FOR ‘資料庫名‘@‘localhost‘ = OLD_PASSWORD(‘密碼‘); 依次執行 3 個命令完成資料庫建立。

注意:中文 “密碼”和“資料庫”是戶自己需要設定的。

5. show databases:顯示資料庫

show databases 命令用於顯示所有資料庫。

show databases 命令格式:show databases; (注意:最後有個 s)例如:mysql> show databases;

6. drop database:刪除資料庫

drop 命令用於刪除資料庫。

drop 命令格式:drop database <資料庫名>; 例如,刪除名為 xhkdb 的資料庫:

mysql> drop database xhkdb;

[例子 1] 刪除一個已經確定存在的資料庫:

mysql> drop database drop_database; Query OK, 0 rows affected (0.00 sec)

[例子 2] 刪除一個不確定存在的資料庫:

mysql> drop database drop_database;

ERROR 1008 (HY000): Can‘t drop database ‘drop_database‘; database doesn‘t exist

// 發生錯誤,不能刪除‘drop_database‘資料庫,該資料庫不存在。

mysql> drop database if exists drop_database; Query OK, 0 rows affected, 1 warning (0.00 sec)

//產生一個警告說明此資料庫不存在

mysql> create database drop_database; // 建立一個資料庫 Query OK, 1 row affected (0.00 sec)

mysql> drop database if exists drop_database; // if exists 判斷資料庫是否存在,不存在也不產生錯誤

Query OK, 0 rows affected (0.00 sec)

7. use:使用資料庫

use 命令可以讓我們來使用資料庫。

use 命令格式: use <資料庫名>;

例如,如果 xhkdb 資料庫存在,嘗試存取它:

mysql> use xhkdb;

工具提示:Database changed

1) use 語句可以通告 MySQL 把 db_name 資料庫作為預設(當前)資料庫使用,用於後續語句。該資料庫保持為預設資料庫,直到語段的結尾,或者直到出現下一個不同的 use 語句:

mysql> USE db1;

mysql> SELECT COUNT(*) FROM mytable; # selects from db1.mytable mysql> USE db2;

mysql> SELECT COUNT(*) FROM mytable; # selects from db2.mytable

2) 使用 USE 語句為一個特定的當前的資料庫做標記,不會阻礙您訪問其它資料庫中的表。下面的例子可以從 db1 資料庫訪問 author 表,並從 db2 資料庫訪問 editor 表:

mysql> USE db1; mysql> SELECT author_name,editor_name FROM author,db2.editor -> WHERE author.editor_id = db2.editor.editor_id;

use 語句被設立出來,用於與 Sybase 相相容。 有些網友問到,串連以後怎麼退出。其實,不用退出來,use 資料庫後,使用 show databases

就能查詢所有資料庫,如果想跳到其他資料庫,用 use 其他資料庫名字就可以了。

8. select:當前串連的資料庫

select 命令表示當前選擇(串連)的資料庫。

select 命令格式:mysql> select database();

MySQL 中 SELECT 命令類似於其他程式設計語言裡的 print 或者 write,你可以用它來顯示一個字串、數字、數學運算式的結果等等。如何使用 MySQL 中 SELECT 命令的特殊功能呢?

1) 顯示 MYSQL 的版本

mysql> select version(); +-----------------------+

| version() |

+-----------------------+

| 6.0.4-alpha-community |

+-----------------------+

1 row in set (0.02 sec)

2) 顯示目前時間

mysql> select now();

+---------------------+

| now() |

+---------------------+

| 2009-09-15 22:35:32 |

+---------------------+

1 row in set (0.04 sec)

3) 顯示年月日

SELECT DAYOFMONTH(CURRENT_DATE);

+--------------------------+

| DAYOFMONTH(CURRENT_DATE) |

+--------------------------+

| 15 |

+--------------------------+

1 row in set (0.01 sec)

SELECT MONTH(CURRENT_DATE);

+---------------------+

| MONTH(CURRENT_DATE) |

+---------------------+

| 9 |

+---------------------+

1 row in set (0.00 sec)

SELECT YEAR(CURRENT_DATE);

+--------------------+

| YEAR(CURRENT_DATE) |

+--------------------+

| 2009 |

+--------------------+

1 row in set (0.00 sec)

4) 顯示字串

mysql> SELECT "welecome to my blog!";

+----------------------+

| welecome to my blog! |

+----------------------+

| welecome to my blog! |

+----------------------+

1 row in set (0.00 sec)

5) 當計算機用

select ((4 * 4) / 10 ) + 25; +----------------------+

| ((4 * 4) / 10 ) + 25 |

+----------------------+

| 26.60 |

+----------------------+

1 row in set (0.00 sec)

6) 串接字串

select CONCAT(f_name, " ", l_name) AS Name from employee_data where title = ‘Marketing Executive‘;

+---------------+

| Name |

+---------------+

| Monica Sehgal | | Hal Simlai |

| Joseph Irvine |

+---------------+

3 rows in set (0.00 sec)

注意:這裡用到 CONCAT()函數,用來把字串串接起來。另外,我們還用到以前學到的 AS 給結果列‘CONCAT(f_name, " ", l_name)‘起了個假名。

9. create table:建立資料表

資料表屬於資料庫,在建立資料表之前,應該使用語句“USE <資料庫名>”指定操作是在哪個資料庫中進行,如果沒有選擇資料庫,會拋出“No database selected”的錯誤。建立資料表的語句為 CREATE TABLE,文法規則如下:

CREATE TABLE <表名>

(

欄位名 1,資料類型 [列層級約束條件] [預設值], 欄位名 2,資料類型 [列層級約束條件] [預設值],

??

[表層級約束條件]

);

使用 CREATE TABLE 建立表時,必須指定以下資訊:

(1) 要建立的表的名稱,不區分大小寫,不能使用 SQL 語言中的關鍵字,如 DROP、ALTER、

INSERT 等。

(2) 資料表中每一個列(欄位)的名稱和資料類型,如果建立多個列,要用逗號隔開。

建立員工表 tb_emp1,結構如下表所示。

表 tb_emp1 表結構

欄位名稱

資料類型

備忘

id

INT(11)

員工編號

name

VARCHAR(25)

員工名稱

deptId

INT(11)

所在部門編號

salary

FLOAT

工資

首先建立資料庫,SQL 陳述式如下:

CREATE DATABASE test_db;

選擇建立表的資料庫,SQL 陳述式如下:

USE test_db;

建立 tb_emp1 表,SQL 陳述式為:

CREATE TABLE tb_emp1

(

id INT(11), name VARCHAR(25), deptId INT(11), salary FLOAT

);

語句執行後,便建立了一個名稱為 tb_emp1 的資料表,使用 SHOW TABLES;語句查看資料

表是否建立成功,SQL 陳述式如下:

mysql> SHOW TABLES;

+-----------------------+

| Tables_in_ test_db |

+----------------------+

| tb_emp1 |

+----------------------+

1 row in set (0.00 sec)

可以看到,test_db 資料庫中已經有了資料表 tb_tmp1,資料表建立成功。

10. desc:擷取表結構

在 MySQL 中,查看錶結構可以使用 DESCRIBE 和 SHOW CREATE TABLE 語句。

DESCRIBE/DESC 語句可以查看錶的欄位資訊,其中包括:欄位名、欄位資料類型、是否為主鍵、是否有預設值等。文法規則如下:

DESCRIBE 表名;

或者簡寫為:

DESC 表名;

SHOW CREATE TABLE 語句可以用來顯示建立表時的 CREATE TABLE 語句,文法格式如下:

SHOW CREATE TABLE <表名\G>;

使用 SHOW CREATE TABLE 語句,不僅可以查看錶建立時候的詳細語句,而且還可以查

看儲存引擎和字元編碼。

如果不加’\G’參數,顯示的結果可能非常混亂,加上參數’\G’之後,可使顯示結果更加直觀,

易於查看。使用 SHOW CREATE TABLE 查看錶 tb_emp1 的詳細資料,SQL 陳述式如下:

mysql> SHOW CREATE TABLE tb_emp1;

11. drop table:刪除資料表

在 MySQL 中,使用 DROP TABLE 可以一次刪除一個或多個沒有被其他表關聯的資料表。語

法格式如下:

DROP TABLE [IF EXISTS]表 1, 表 2, . . . 表 n;

其中“表 n”指要刪除的表的名稱,後面可以同時刪除多個表,只需將要刪除的表名依次寫在

後面,相互之間用逗號隔開即可。如果要刪除的資料表不存在,則 MySQL 會提示一條錯誤資訊,

“ERROR 1051 (42S02): Unknown table ‘表名‘”。參數“IF EXISTS”用於在刪除前判斷刪除的表是否存在,加上該參數後,再刪除表的時候,如果表不存在,SQL 陳述式可以順利執行,但是會發出警告(warning)。

在前面的例子中,已經建立了名為 tb_dept2 的資料表。如果沒有,讀者可輸入語句,建立該

表,SQL 陳述式如例 4.8 所示。下面使用刪除語句將該表刪除。刪除資料表 tb_dept2,SQL 陳述式如下:

DROP TABLE IF EXISTS tb_dept2;

12. insert into:向表中插入資料

INSERT INTO 語句用於向表格中插入新的行。文法如下:

INSERT INTO 表名稱 VALUES (值 1, 值 2,....)

我們也可以指定所要插入資料的列:

INSERT INTO table_name (列 1, 列 2,...) VALUES (值 1, 值 2,....)

【例】建立資料表 tmp3,定義資料類型為 YEAR 的欄位 y,向表中插入值 2010,’2010’,SQL 陳述式如下:首先建立表 tmp3:

CREATE TABLE tmp3( y YEAR );

向表中插入資料:

mysql> INSERT INTO tmp3 values(2010),(‘2010‘);

13. select from:查詢表中資料

MySQL 從資料表中查詢資料的基本語句為 SELECT 語句。SELECT 語句的基本格式是:

SELECT

{* | <欄位列表>}

[

FROM <表 1>,<表 2>...

[WHERE <運算式>

[GROUP BY <group by definition>]

[HAVING <expression> [{<operator> <expression>}...]]

[ORDER BY <order by definition>]

[LIMIT [<offset>,] <row count>]

]

SELECT [欄位 1,欄位 2,…,欄位 n]

FROM [表或視圖]

WHERE [查詢條件];

其中,各條子句的含義如下:

{* | <欄位列表>}包含星號萬用字元選欄位列表,表示查詢的欄位,其中欄位列至少包含一個欄位名稱,如果要查詢多個欄位,多個欄位之間用逗號隔開,最後一個欄位後不要加逗號。

FROM <表 1>,<表 2>...,表 1 和表 2 表示查詢資料的來源,可以是單個或者多個。

WHERE 子句是可選項,如果選擇該項,將限定查詢行必須滿足的查詢條件。

GROUP BY <欄位>,該子句告訴 MySQL 如何顯示查詢出來的資料,並按照指定的欄位分組。

[ORDER BY <欄位 >],該子句告訴 MySQL 按什麼樣的順序顯示查詢出來的資料,可以進行的排序有:升序(ASC)、降序(DESC)。

[LIMIT [<offset>,] <row count>],該子句告訴 MySQL 每次顯示查詢出來的資料條數。

14. delete from:刪除記錄

從資料表中刪除資料使用 DELETE 語句,DELETE 語句允許 WHERE 子句指定刪除條件。 DELETE 語句基本文法格式如下:

DELETE FROM table_name [WHERE <condition>];

table_name 指定要執行刪除操作的表;“[WHERE <condition>]”為選擇性參數,指定刪除條件,

如果沒有 WHERE 子句,DELETE 語句將刪除表中的所有記錄。

【例】在 person 表中,刪除 id 等於 11 的記錄,SQL 陳述式如下:

mysql> DELETE FROM person WHERE id = 11; Query OK, 1 row affected (0.02 sec)

15. update set:修改表中的資料

MySQL 中使用 UPDATE 語句更新表中的記錄,可以更新特定的行或者同時更新所有的行。

基本文法結構如下:

UPDATE table_name

SET column_name1 = value1,column_name2=value2,……,column_namen=valuen WHERE (condition);

column_name1,column_name2,……,column_namen 為指定更新的欄位的名稱; value1,

value2,……valuen 為相對應的指定欄位的更新值;condition 指定更新的記錄需要滿足的條件。更新多個列時,每個“列-值”對之間用逗號隔開,最後一列之後不需要逗號。

【例】在 person 表中,更新 id 值為 11 的記錄,將 age 欄位值改為 15,將 name 欄位值改為

LiMing,SQL 陳述式如下:

UPDATE person SET age = 15, name=’LiMing’ WHERE id = 11;

16. alter add:增加欄位

添加欄位的文法格式如下:

ALTER TABLE <表名> ADD <新欄位名> <資料類型>

[約束條件] [FIRST | AFTER 已存在欄位名];

新欄位名為需要添加的欄位的名稱;“FIRST”為選擇性參數,其作用是將新添加的欄位設定為表的第一個欄位;“AFTER”為選擇性參數,其作用是將新添加的欄位添加到指定的“已存在欄位名”的後面。

【例】在資料表 tb_dept1 中添加一個沒有完整性條件約束的 INT 類型的欄位 managerId(部門經理編號),SQL 陳述式如下:

ALTER TABLE tb_dept1 ADD managerId INT(10);

17. rename:修改表名

MySQL 是通過 ALTER TABLE 語句來實現表名的修改的,具體的文法規則如下:

ALTER TABLE <舊錶名> RENAME [TO] <新表名>;

其中 TO 為選擇性參數,使用與否均不影響結果。

【例】將資料表 tb_dept3 改名為 tb_deptment3,SQL 陳述式如下:

ALTER TABLE tb_dept3 RENAME tb_deptment3;

18. mysqldump:備份資料庫

mysqldump 備份資料庫語句的基本文法格式如下:

mysqldump –u user –h host –ppassword dbname[tbname, [tbname...]]> filename.sql

user 表示使用者名稱稱;host 表示登入使用者的主機名稱;password 為登入密碼;dbname 為需要備份的資料庫名稱;tbname 為 dbname 資料庫中需要備份的資料表,可以指定多個需要備份的表;右箭頭符號“>”告訴 mysqldump 將備份資料表的定義和資料寫入備份檔案;filename.sql 為備份檔案的名稱。

【例】使用 mysqldump 命令備份資料庫中的所有表,執行過程如下:開啟作業系統命令列輸入視窗,輸入備份命令如下:

C:\ >mysqldump -u root -p booksdb > C:/backup/booksdb_20130301.sql

Enter password: **

輸入密碼之後,MySQL 便對資料庫進行了備份,在 C:\backup 檔案夾下面查看剛才備份過的檔案。

19. mysql source:還原資料庫

對於已經備份的包含 CREATE、INSERT 語句的文字檔,可以使用 mysql 命令匯入到資料庫

中。

備份的 sql 檔案中包含 CREATE、INSERT 語句(有時也會有 DROP 語句)。mysql 命令可以

直接執行檔案中的這些語句。其文法如下:

mysql –u user –p [dbname] < filename.sql

user 是執行 backup.sql 中語句的使用者名稱;-p 表示輸入使用者密碼;dbname 是資料庫名。如果 filename.sql 檔案為 mysqldump 工具建立的包含建立資料庫語句的檔案,執行的時候不需要指定資料庫名。

【例 1】使用 mysql 命令將 C:\backup\booksdb_20130301.sql 檔案中的備份匯入到資料庫中,輸入語句如下:

mysql –u root –p booksDB < C:/backup/booksdb_20130301.sql

執行該語句前,必須先在 MySQL 伺服器中建立 booksDB 資料庫,如果不存在恢複過程將會出錯。命令執行成功之後 booksdb_20130301.sql 檔案中的語句就會在指定的資料庫中恢複以前的表。如果已經登入 MySQL 伺服器,還可以使用 source 命令匯入 sql 檔案。source 語句文法如下:

source filename

【例 2 】使用 root 使用者登入到伺服器,然後使用 source 匯入本地的備份檔案

booksdb_20110101.sql,輸入語句如下:

--選擇要恢複到的資料庫 mysql> use booksDB;

Database changed

--使用 source 命令匯入備份檔案

mysql> source C:\backup\booksDB_20130301.sql

命令執行後,會列出備份檔案 booksDB_20130301.sql 中每一條語句的執行結果。source 命令執行成功後,booksDB_20130301.sql 中的語句會全部匯入到現有資料庫中。

20. mysqlhotcopy:快速恢複資料庫

mysqlhotcopy 備份後的檔案也可以用來恢複資料庫,在 MySQL 伺服器停止運行時,將備份的資料庫檔案複製到 MySQL 存放資料的位置(MySQL 的 data 檔案夾),重新啟動 MySQL 服務即可。如果以根使用者執行該操作,必須指定資料庫檔案的所有者,輸入語句如下:

chown -R mysql.mysql /var/lib/mysql/dbname

【例】從 mysqlhotcopy 複製的備份恢複資料庫,輸入語句如下:

cp -R /usr/backup/test usr/local/mysql/data

執行完該語句,重啟伺服器,MySQL 將恢複到備份狀態。

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.