MySQL基本命令

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

Mysql安装方式

MySQL安装方式有三种,一种是RPM方式安装,一种是源码编译安装,一种是通用二进制格式包安装。

RPM方式安装,可以直接使用yum命令安装或者下载RPM包后再安装


yum安装命令:

yum -y install mysql-server

系统会自动解决依赖关系,并将mysql客户端也安装上。


mysql交互模式中的命令类别:

        客户端命令:在客户端执行的命令

        服务器命令:在服务器上执行,并将结果返回给客户端。必须使用语句结束符,默认为封号“;”


MySQL数据库

wKiom1d4vJSyirHlAACTLBqTWRg313.png


mysql安装完成后,默认有3个数据库

information_schema:是mysql运行过程中位于内存中的信息,保存mysql运行时数据,只有mysql启动时才有数据,平时是空的。


test:测试时才用到的数据库


mysql:mysql 的数据库


MySQL数据库目录:

1
2
[root@host2 ~] # ls /var/lib/mysql/
ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.sock   test

可以看到没有information_schema数据库,因为它是存在内存中的。



MySQL常用命令:


DDL:定义数据库对象:

        CREATE:

        ALTER:

        DROP:


DML:数据操纵语言

        INSERT

        UPDATE

        DELETE


DCL数据控制语言

        GRANT:

        REVOKE:


创建数据库:

        CREATE DATABASE db_name;

        CREATE DATABASES IF NOT EXISTS testdb;        

1
2
3
4
5
6
7
8
9
10
11
12
mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.00 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
test                |
| test_db            |
+--------------------+
4 rows  in  set  (0.01 sec)


删除数据库:

        DROP DATABASE db_name;

1
2
3
4
5
6
7
8
9
10
11
mysql> DROP DATABASE test_db;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
test                |
+--------------------+
3 rows  in  set  (0.00 sec)


创建表:

        CREATE TABLE tb_name(col1,col2,...)  col1,col2为字段名

注意:表是依赖于数据库的,所以在创建表之前,一定要指定默认数据库,使用命令

USER DATABASE; 来指定数据库

创建一个表,名为student,包含三个字段,Name、Age、Gender

1
2
3
4
5
6
7
8
9
mysql> CREATE TABLE students(Name CHAR(20) NOT NULL, Age TINYINT UNSIGNED,Gender CHAR(1) NOT NULL);
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW TABLES;
+-------------------+
| Tables_in_test_db |
+-------------------+
| students          |
+-------------------+
1 row  in  set  (0.00 sec)


查看某个数据库中的表

        SHOW TABLES FROM db_name;


查看表结构

        DESC table_name;

1
2
3
4
5
6
7
8
9
mysql> DESC students;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| Name   | char(20)            | NO   |     | NULL    |       |
| Age    | tinyint(3) unsigned | YES  |     | NULL    |       |
| Gender | char(1)             | NO   |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+
3 rows  in  set  (0.00 sec)


删除表:

        DROP TABLE tb_name;


修改表:

        ALTER  TABLE  tb_name;

                MODIFY:修改某个字段,修改字段属性,字段名不改

                CHANGE:改变某个字段,改变字段名称

                ADD:添加字段

                DROP:删除字段


可以通过help命令查询帮助信息:

help CREATE TABLE;


增加一个字段

例如:修改前面创建的student表,增加一个字段课程course,

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> ALTER TABLE students ADD course VARCHAR(100);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC students;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| Name   | char(20)            | NO   |     | NULL    |       |
| Age    | tinyint(3) unsigned | YES  |     | NULL    |       |
| Gender | char(1)             | NO   |     | NULL    |       |
| course | varchar(100)        | YES  |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+
4 rows  in  set  (0.00 sec)


修改字段名称,例如将上面添加的course字段名改为Course

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> ALTER TABLE students CHANGE course Course VARCHAR(100);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC students;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| Name   | char(20)            | NO   |     | NULL    |       |
| Age    | tinyint(3) unsigned | YES  |     | NULL    |       |
| Gender | char(1)             | NO   |     | NULL    |       |
| Course | varchar(100)        | YES  |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+
4 rows  in  set  (0.00 sec)


删除一个字段:

        DROP col_name;



插入数据:     

1
INSERT  INTO  tb_name (col1,col2,...) VALUES|VALUE ( 'STRING' ,NUM...);

上面命令意思是:往某个表中插入数据,字段名为col1,col2,...  插入的值为字符串则,用引号引起来,如果为数值,则直接用数字。如果每一个字段都给值,则不用写字段名称


例如:在students表中插入两条数据,张三和李四

mysql> INSERT INTO students (Name,Gender) VALUE ('ZhangSan','M'),('LiSi','F');

Query OK, 2 rows affected (0.00 sec)

Records: 2  Duplicates: 0  Warnings: 0


查看数据

1
2
3
4
5
6
7
8
mysql> SELECT * FROM students;
+----------+------+--------+--------+
| Name     | Age  | Gender | Course |
+----------+------+--------+--------+
| ZhangSan | NULL | M      | NULL   |
| LiSi     | NULL | F      | NULL   |
+----------+------+--------+--------+
2 rows  in  set  (0.01 sec)


插入一个用户,所有字段都有值

注意,所有字段都有值,就不需要指定字段名

1
2
3
4
5
6
7
8
9
mysql> INSERT INTO students VALUES ( 'ZengChengpeng' ,28, 'M' , 'IT' );
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM students WHERE Name= 'ZengChengpeng' ;
+---------------+------+--------+--------+
| Name          | Age  | Gender | Course |
+---------------+------+--------+--------+
| ZengChengpeng |   28 | M      | IT     |
+---------------+------+--------+--------+
1 row  in  set  (0.00 sec)


修改数据

        UPDATE tb_name SET column=value WHERE 条件

例如:将ZengChengpeng的Course课程名称改为Develop

1
2
3
4
5
6
7
8
9
10
mysql> UPDATE students SET Course= 'Develop'  WHERE Name= 'ZengChengpeng' ;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> SELECT * FROM students WHERE Name= 'ZengChengpeng' ;
+---------------+------+--------+---------+
| Name          | Age  | Gender | Course  |
+---------------+------+--------+---------+
| ZengChengpeng |   28 | M      | Develop |
+---------------+------+--------+---------+
1 row  in  set  (0.00 sec)


SELETE语句:

selete语句分为两种情况,

1
2
3
4
5
6
7
8
9
10
选择:指定以某字段作为搜索码,做逻辑比较,筛选符合条件的行。WHERE指定选择条件
     
投影:指定以某字段作为搜索码,做逻辑比较,筛选符合条件的字段。
mysql> SELECT Name,Course FROM students WHERE Gender= 'M' ;   
+---------------+---------+
| Name          | Course  |
+---------------+---------+
| ZhangSan      | NULL    |
| ZengChengpeng | Develop |
+---------------+---------+


删除数据

        DELECT FROM  tb_name  WHERE 条件;



创建用户:

        CREATE USER 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD';        

删除用户:

        DROP USER 'USERNAME'@'HOST';

        

        HOST:

                IP:

                HOSTNAME:

                NETWORK:

                通配符: 通配符用引号引起来

                        _:下划线匹配任意单个字符:例如172.16.0._

                        %:匹配任意字符:

           jerry@'%' 


用户权限:

添加权限

GRANT pri1,pri2,... ON DB_NAME.TB_NAME TO 'USERNAME'@'HOST'   [IDENTIFIED BY 'PASSWORD'];

pri1  pri2表示权限名称,所有权限用ALL PRIVILEGES表示

取消权限

REVOKE pri1,pri2,... ON DB_NAME.TB_NAME FROM 'USERNAME'@'HOST';



创建用户示例:

1
mysql> CREATE USER  'jerry' @ '%'  IDENTIFIED BY  'jerry' ;


查看用户授权:

        SHOW GRANTS FOR 'USERNAME'@'HOST';

1
2
3
4
5
6
mysql> SHOW GRANTS FOR jerry@ '%' ;
+------------------------------------------------------------------------------------------------------+
| Grants  for  jerry@%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO  'jerry' @ '%'  IDENTIFIED BY PASSWORD  '*09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0'  |
+------------------------------------------------------------------------------------------------------+


示例:给jerry用户test_db这个数据库所有表的所有权限

1
2
3
4
5
6
7
8
9
10
mysql> GRANT ALL PRIVILEGES ON test_db.* TO  'jerry' @ '%' ;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW GRANTS FOR  'jerry' @ '%' ;
+------------------------------------------------------------------------------------------------------+
| Grants  for  jerry@%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO  'jerry' @ '%'  IDENTIFIED BY PASSWORD  '*09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0'  |
| GRANT ALL PRIVILEGES ON `test_db`.* TO  'jerry' @ '%'                                                    |
+------------------------------------------------------------------------------------------------------+
2 rows  in  set  (0.00 sec)

        


取消所有权限:

1
2
3
4
5
6
7
8
9
mysql> REVOKE ALL PRIVILEGES ON test_db.* FROM jerry@ '%' ;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW GRANTS FOR  'jerry' @ '%' ;                      
+------------------------------------------------------------------------------------------------------+
| Grants  for  jerry@%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO  'jerry' @ '%'  IDENTIFIED BY PASSWORD  '*09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0'  |
+------------------------------------------------------------------------------------------------------+
1 row  in  set  (0.00 sec)








本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1795352,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
存储 关系型数据库 MySQL
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
40 0
|
3月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
25 0
|
3月前
|
机器学习/深度学习 SQL 关系型数据库
MySql基础命令(MySql学习——四)
MySql基础命令(MySql学习——四)
20 1
|
1月前
|
SQL 关系型数据库 MySQL
|
3月前
|
SQL 关系型数据库 MySQL
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
79 0
|
17天前
|
关系型数据库 MySQL
如何解决cmd命令窗口无法运行mysql命令的问题
如何解决cmd命令窗口无法运行mysql命令的问题
10 0
|
1月前
|
存储 关系型数据库 MySQL
|
1月前
|
关系型数据库 MySQL Linux
MySQL启动与登录命令详解
【2月更文挑战第27天】
54 1
MySQL启动与登录命令详解
|
1月前
|
SQL 存储 关系型数据库
|
2月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表6、查询优化——1、EXPLAIN命令的使用——2、索引优化
MySQL技能完整学习列表6、查询优化——1、EXPLAIN命令的使用——2、索引优化
22 0