原创

MySQL常用命令大全

常用查询数据库信息命令

#下面的tb_me为表名,db_me为数据库名#查看所有数据库
show databases;
#使用这个数据库
use db_me;
#显示所有表名
show tables;
#简单描述表结构,字段类型
desc tb_me;
#查看列名和备注
select column_name, column_comment from information_schema.columns where table_schema =(select database()) and table_name = 'tb_me';
#查看表的注释
select table_name,table_comment from information_schema.tables where table_schema = (select database()) and table_name ='tb_me'
#查看表生成的DDL
show create table tb_me;
show create table tb_me\G;

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;(注:uroot之间可以不用加空格,其它也一样)

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=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 “”;

常用命令:

GRANT ALL PRIVILEGES ON *.* TO 'gameboys'@'%' IDENTIFIED BY 'gameboys1234';

GRANT ALL PRIVILEGES ON *.* TO 'gameboys'@'127.0.0.1' IDENTIFIED BY 'gameboys1234';

FLUSH PRIVILEGES;

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 语句可以通告MySQLdb_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();

MySQLSELECT命令类似于其他编程语言里的print或者write,你可以用它来显示一个字符串、数字、数学表达式的结果等等。如何使用MySQLSELECT命令的特殊功能呢?

1) 显示MYSQL的版本

mysql> select version();
+------------+
| version() |
+------------+
| 5.6.45-log |
+------------+
1 row in set (0.00 sec)

2) 显示当前时间

mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2019-08-01 10:02:48 |
+---------------------+
1 row in set (0.00 sec)

3) 显示年月日

mysql> SELECT DAYOFMONTH(CURRENT_DATE); 
+--------------------------+
| DAYOFMONTH(CURRENT_DATE) |
+--------------------------+
| 1 |
+--------------------------+
1 row in set (0.00 sec)
mysql> SELECT MONTH(CURRENT_DATE);
+---------------------+
| MONTH(CURRENT_DATE) |
+---------------------+
| 8 |
+---------------------+
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) 当计算器用

mysql> select ((4 * 4) / 10 ) + 25;
+----------------------+
| ((4 * 4) / 10 ) + 25 |
+----------------------+
| 26.6000 |
+----------------------+
1 row in set (0.00 sec)

9.create table:创建数据表

数据表属于数据库,在创建数据表之前,应该使用语句USE <数据库名>指定操作是在哪个数据库中进行,如果没有选择数据库,会抛出No database selected的错误。 

创建数据表的语句为CREATE TABLE,语法规则如下: 

CREATE  TABLE <表名>
(
字段名1,数据类型[列级别约束条件] [默认值],
字段名2,数据类型[列级别约束条件] [默认值],
……
[表级别约束条件]
);

使用CREATE TABLE创建表时,必须指定以下信息: 

1)要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如DROPALTERINSERT等。 

2)数据表中每一个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。 

创建员工表tb_emp1,结构如下表所示。

字段名称

数据类型

备注

id

INT(11)

员工编号

name

VARCHAR(25)

员工名称

depId

INT(11)

所在部门编号

salary

FLOAT

工资

首先创建数据库,SQL语句如下:

CREATEDATABASE 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> SHOWTABLES;
+-----------------------+
| Tables_in_ test_db|
+----------------------+
| tb_emp1|
+----------------------+
1 row in set (0.00 sec)

可以看到,test_db数据库中已经有了数据表tb_tmp1,数据表创建成功。 

10. desc:获取表结构

MySQL中,查看表结构可以使用DESCRIBESHOW 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_dept2SQL语句如下: 

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,向表中插入值20102010SQL语句如下: 

首先创建表tmp3: 

CREATE TABLE tmp3(y YEAR );

向表中插入数据: 

mysql> INSERT INTO tmp3values(2010),('2010');

13. select from:查询表中数据

MySQL从数据表中查询数据的基本语句为SELECT语句。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 [查询条件];

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字段值改为LiMingSQL语句如下: 

UPDATE person SET age = 15, name=’LiMing’ WHERE id = 11;
#在原来值基础上增加值
update user set age=age+1 where id=1;

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_deptment3SQL语句如下: 

ALTERTABLE tb_dept3RENAME tb_deptment3;

18. mysqldump:备份数据库

mysqldump备份数据库语句的基本语法格式如下: 

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

user表示用户名称;host表示登录用户的主机名称;password为登录密码;dbname为需要备份的数据库名称;tbnamedbname数据库中需要备份的数据表,可以指定多个需要备份的表;右箭头符号>告诉mysqldump将备份数据表的定义和数据写入备份文件;filename.sql为备份文件的名称。 

【例】使用mysqldump命令备份数据库中的所有表,执行过程如下: 

打开操作系统命令行输入窗口,输入备份命令如下: 

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

Enter password: **

输入密码之后,MySQL便对数据库进行了备份,在C:\backup文件夹下面查看刚才备份过的文件。 

19.mysql和source:还原数据库

对于已经备份的包含CREATEINSERT语句的文本文件,可以使用mysql命令导入到数据库中。 

备份的sql文件中包含CREATEINSERT语句(有时也会有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> sourceC:\backup\booksDB_20130301.sql

命令执行后,会列出备份文件booksDB_20130301.sql中每一条语句的执行结果。source命令执行成功后,booksDB_20130301.sql中的语句会全部导入到现有数据库中。 

20.mysqlhotcopy:快速恢复数据库

mysqlhotcopy备份后的文件也可以用来恢复数据库,在MySQL服务器停止运行时,将备份的数据库文件复制到MySQL存放数据的位置(MySQLdata文件夹),重新启动MySQL服务即可。如果以根用户执行该操作,必须指定数据库文件的所有者,输入语句如下: 

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

【例】从mysqlhotcopy复制的备份恢复数据库,输入语句如下: 

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

执行完该语句,重启服务器,MySQL将恢复到备份状态


正文到此结束
本文目录