mysql 常用命令

1、连接Mysql

格式: mysql -h主机地址 -u用户名 -p用户密码

1、连接到本机上的MYSQL。

1
mysql -h localhost -u user -p password

2、退出MYSQL命令: exit (回车)

1
exit;

2、用户相关操作

  1. 进入到mysql数据库下
1
2
mysql> use mysql
Database changed
  1. 对新用户增删改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.创建用户:
# 指定ip:192.118.1.1的mjj用户登录
create user 'alex'@'192.118.1.1' identified by '123';
# 指定ip:192.118.1.开头的mjj用户登录
create user 'alex'@'192.118.1.%' identified by '123';
# 指定任何ip的mjj用户登录
create user 'alex'@'%' identified by '123';

2.删除用户
drop user '用户名'@'IP地址';


3.修改用户
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';

4.修改密码
set password for '用户名'@'IP地址'=Password('新密码');
  1. 对当前的用户授权管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#查看权限
show grants for '用户'@'IP地址'

#授权 mjj用户仅对db1.t1文件有查询、插入和更新的操作
grant select ,insert,update on db1.t1 to "alex"@'%';

# 表示有所有的权限,除了grant这个命令,这个命令是root才有的。mjj用户对db1下的t1文件有任意操作
grant all privileges on db1.t1 to "alex"@'%';
#mjj用户对db1数据库中的文件执行任何操作
grant all privileges on db1.* to "alex"@'%';
#mjj用户对所有数据库中文件有任何操作
grant all privileges on *.* to "alex"@'%';

#取消权限

# 取消mjj用户对db1的t1文件的任意操作
revoke all on db1.t1 from 'alex'@"%";

# 取消来自远程服务器的mjj用户对数据库db1的所有表的所有权限

revoke all on db1.* from 'alex'@"%";

取消来自远程服务器的mjj用户所有数据库的所有的表的权限
revoke all privileges on *.* from 'alex'@'%';
  1. MySql备份命令行操作
1
2
3
4
5
6
7
8
9
10
11
12
# 备份:数据表结构+数据
mysqdump -u root db1 > db1.sql -p


# 备份:数据表结构
mysqdump -u root -d db1 > db1.sql -p

#导入现有的数据到某个数据库
#1.先创建一个新的数据库
create database db10;
# 2.将已有的数据库文件导入到db10数据库中
mysqdump -u root -d db10 < db1.sql -p

3、数据库相关操作

  1. 创建数据库

    1
    2
    create database `mydb` character set utf8 collate utf8_general_ci;
    create database `mydb` character set utf8mb4 collate utf8mb4_unicode_ci;
  2. 显示数据库

    1
    show databases;
  3. 切换到数据库 (xingke)

    1
    use xingke
  4. 删除数据库(xingke)

    1
    drop database xingke;

4、表相关操作

4.1,创建表

语法

以下为创建MySQL数据表的SQL通用语法:

1
CREATE TABLE table_name (column_name column_type);

以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl:

1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

实例解析:

  • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
  • ENGINE 设置存储引擎,CHARSET 设置编码。

实例

以下为创建数据表 runoob_tbl 实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
root@host# mysql -u root -p
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> CREATE TABLE runoob_tbl(
-> runoob_id INT NOT NULL AUTO_INCREMENT,
-> runoob_title VARCHAR(100) NOT NULL,
-> runoob_author VARCHAR(40) NOT NULL,
-> submission_date DATE,
-> PRIMARY KEY ( runoob_id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)
mysql>

4.2,添加数据

语法

以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:

1
2
3
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );

如果数据是字符型,必须使用单引号或者双引号,如:”value”。

实例

以下实例中我们将向 runoob_tbl 表插入三条数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
root@host# mysql -u root -p password;
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("学习 PHP", "菜鸟教程", NOW());
Query OK, 1 rows affected, 1 warnings (0.01 sec)
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("学习 MySQL", "菜鸟教程", NOW());
Query OK, 1 rows affected, 1 warnings (0.01 sec)
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("JAVA 教程", "RUNOOB.COM", '2016-05-06');
Query OK, 1 rows affected (0.00 sec)
mysql>

4.3 修改数据

语法

以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法:

1
2
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
  • 你可以同时更新一个或多个字段。
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以在一个单独表中同时更新数据。

实例

1
UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=3;

4.4 查询数据

语法

以下为在MySQL数据库中查询数据通用的 SELECT 语法:

1
2
3
4
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

实例

1
select * from runoob_tbl;

4.5 删除表

语法

以下为删除MySQL数据表的通用语法:

1
DROP TABLE table_name ;

实例

以下实例删除了数据表runoob_tbl:

1
DROP TABLE runoob_tbl;

5、数据导入导出

5.1 导出

1
2
3
4
#数据库导出
mysqldump -u user -p databases > name.sql
#数据库导入
source /home/abc/abc.sql;

5.2导入

1
source /home/abc/abc.sql;