MySQL實用命令,珍藏版

1. mysql:連接數據庫

mysql 命令用戶連接數據庫。
mysql 命令格式:mysql -h 主機地址 -u 用戶名 -p 用戶密碼

  1. 連接到本機上的 MYSQL
    首先打開 DOS 窗口,然後進入目錄 mysql\bin,再鍵入命令 mysql -u root -p,回車後提示輸密碼。注意用戶名前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼。

如果剛安裝好 MYSQL,超級用戶root是沒有密碼的,故直接回車即可進入到 MYSQL 中了,MYSQL 的提示符是:mysql>

  1. 連接到遠程主機上的 MYSQL
    假設遠程主機的 IP 爲:192.168.12.248,用戶名爲 root,密碼爲 123abc。則鍵入以下命令:
    mysql -h192.168.12.248 -u root -p 123abc;(注:u 與 root 之間可以不用加空格,其它也一樣)

  2. 退出 MYSQL 命令
    exit (回車)

2. mysqladmin:修改用戶密碼

mysqladmin 命令用於修改用戶密碼。
mysqladmin 命令格式:mysqladmin -u 用戶名 -p 舊密碼 password 新密碼

  1. 給 root 加個密碼 abc123
    首先在 DOS 下進入目錄 mysql\bin,然後鍵入以下命令:
    mysqladmin -u root -password abc123
    注:因爲開始時 root 沒有密碼,所以-p 舊密碼一項就可以省略了。

  2. 再將 root 的密碼改爲 123abc
    mysqladmin -u root -p abc123 password 123abc

在這裏插入圖片描述

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=test1@”%]test1@”%[/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=test2@localhost]test2@localhost[/email] identified by
    “abc”;
    如果你不想 test2 有密碼,可以再打一個命令將密碼消掉。
    grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/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 個命令完成數據庫創建。
    注意:中文 “密碼”和“數據庫”是戶自己需要設置的。

  1. show databases:顯示數據庫
    show databases 命令用於顯示所有數據庫。
    show databases 命令格式:show databases; (注意:最後有個 s)
    例如:mysql> show databases;

6. drop database:刪除數據庫

drop 命令用於刪除數據庫。
drop 命令格式:drop database <數據庫名>;
例如,刪除名爲 xhkdb 的數據庫:
mysql> drop database xhkdb;

[例子] 刪除一個不確定存在的數據庫:
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)

  1. 顯示字符串
    mysql> SELECT “welecome to my blog!”;
    ±---------------------+
    | welecome to my blog! |
    ±---------------------+
    | welecome to my blog! |
    ±---------------------+
    1 row in set (0.00 sec)

  2. 當計算器用
    select ((4 * 4) / 10 ) + 25;
    ±---------------------+
    | ((4 * 4) / 10 ) + 25 |
    ±---------------------+
    | 26.60 |
    ±---------------------+
    1 row in set (0.00 sec)

  3. 串接字符串
    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 的數據表。如果沒有,讀者可輸入語句,創建該表。

下面使用刪除語句將該表刪除。
刪除數據表 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 ]
[HAVING [{ }…]]
[ORDER BY ]
[LIMIT [,] ]
]
SELECT [字段 1,字段 2,…,字段 n]
FROM [表或視圖]
WHERE [查詢條件];
其中,各條子句的含義如下:
{* | <字段列表>}包含星號通配符選字段列表,表示查詢的字段,其中字段列至少包含一個字段名稱,如果要查詢多個字段,多個字段之間用逗號隔開,最後一個字段後不要加逗號。
FROM <表 1>,<表 2>…,表 1 和表 2 表示查詢數據的來源,可以是單個或者多個。
WHERE 子句是可選項,如果選擇該項,將限定查詢行必須滿足的查詢條件。
GROUP BY <字段>,該子句告訴 MySQL 如何顯示查詢出來的數據,並按照指定的字段分組。
[ORDER BY <字段 >],該子句告訴 MySQL 按什麼樣的順序顯示查詢出來的數據,可以進行的排序有:升序(ASC)、降序(DESC)。
[LIMIT [,] ],該子句告訴 MySQL 每次顯示查詢出來的數據條數。

14. delete from:刪除記錄

從數據表中刪除數據使用 DELETE 語句,DELETE 語句允許 WHERE 子句指定刪除條件。
DELETE 語句基本語法格式如下:
DELETE FROM table_name [WHERE ];
table_name 指定要執行刪除操作的表;“[WHERE ]”爲可選參數,指定刪除條件,
如果沒有 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.sqluser 表示用戶名稱;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 將恢復到備份狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章