如何管理我们的MySQL数据库

前言

一、查看数据库的信息

1.1 查看库信息

1.2 查看表信息

1.3 查看表结构的详细信息

二、SQL语言分类

2.1 DDL:数据定义语言

2.2 DML:数据操纵语言

2.3 DQL:数据查询语言

2.4 DCL:数据控制语言

前言

昨天我们已经学会了如何配置我们的MySQL数据库,今天我们就来谈谈怎么具体的对我们的数据库进行增删改查。

※重要说明:接下来的操作中,我们如果不做特殊说明,每次进行命令操作之后,需要用“;”进行结尾来操作。

一、查看数据库的信息

1.1 查看库信息
mysql> show databases;  ##查看数据库的信息       ※切记,“databases”后面跟着“s”,因为数据库不可能只有一个!
+--------------------+
| Database           |
+--------------------+
| information_schema |
| admin              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)
1.2查看表信息
mysql> use $数据库名  ##首先要在哪边数据库内查看
mysql> show tables   ##然后查数据库内表的信息,切记“s”不能忘

mysql> use 测试;  ##调用的数据库名
Database changed  ##数据库更改
mysql> show tables;  ##查看数据库内表信息
+------------------+
| Tables_in_测试   |
+------------------+
| 测试1            |
+------------------+
1 row in set (0.00 sec)
1.3 查看表结构的详细信息
mysql> describe 数据库.表  ##查看数据库中表的详细信息,用"."连接,"describe"可以缩写成"desc"

mysql> describe 测试.测试1;  ##查看“测试”数据库中“测试1”的表的结构信息
+-----------+----------+------+-----+---------+-------+
| Field     | Type     | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| 测试名    | char(16) | NO   | PRI | NULL    |       |
+-----------+----------+------+-----+---------+-------+
1 row in set (0.00 sec)

二、SQL语言分类

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和[程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL可以分为六类,这边我们会具体介绍里面用的比较多的四类:

  • 数据定义语言DDL:Data Definition Language):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。※用的比较多※
  • 数据操作语言DML:Data Manipulation Language):其语句包括动词INSERT、UPDATE和DELETE。它们分别用于添加、修改和删除。 ※用的比较多※
  • 数据查询语言DQL:Data Query Language):也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。※用的比较多※
  • 数据控制语言DCL:Data Control Language):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象数据库对象)的访问。某些RDBMS可用GRANT或REVOKE控制对表单单个列的访问。※用的比较多※
  • 事务控制语言TCL:Transaction Control Language):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
  • 指针控制语言CCL:Cursor Control Language,):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
2.1 DDL:数据定义语言

DDL语言课用于创建数据库对象,如库、表、索引等

创建数据库 
mysql> create database $数据库名

mysql> create database 测试;  ##创建一个名为测试的数据库
Query OK, 1 row affected (0.00 sec)

创建表
mysql> create table 表名(字段定义)

mysql> create table 测试1(测试名 char(16) not null,primary key(测试名));  ##创建一个名为测试1的表
Query OK, 0 rows affected (0.01 sec)
※定义字段解释:
测试名 char(16):定义该表的字段名为测试名,最多16个字段
not null:该字段不为空
primary key:定义该表的主键索引,这边先做了解,我们会接下来的索引章节中,具体说明

我们可以用上面的查询语句来查看这个库的具体情况:

ear管控 mysql 管理mysql_mysql

我没还可以通过DDL语言来进行数据库或者表的删除,使用的命令是drop

删除数据表
mysql> drop table 数据库.表名  ##删除数据库中的指定表

mysql> drop table 测试.测试1;  ##删除测试数据库中的名为测试1的表
Query OK, 0 rows affected (0.01 sec)


删除数据库
mysql> drop database 数据库名  ##删除指定数据库

mysql> drop database 测试;     ##删除名为测试的数据库
Query OK, 0 rows affected (0.01 sec)

最后用命令检查下,数据库是否已经被删除

ear管控 mysql 管理mysql_数据库_02

2.2 DML:数据操作语言

DML语句用于对表中的数据进行管理

主要用到插入、更新、删除等操作

  • INSERT:插入新数据
  • UPDATE:更新原有数据
  • DELETE:删除不需要的数据

下面我们通过创建一个名为成绩的数据库,里面存放学生的学号,姓名以及成绩:

mysql> create table 成绩(学号 INT(3) NOT NULL, 姓名 CHAR(8) NOT NULL, 成绩 INT(3) NOT NULL,primary key(学号));
新建的数据库里面为空

接着进行增加新数据操作,用INSERT命令

插入新数据:
INSERT INTO 表名(字段1,字段2) VALUES(字段1的值,字段2的值)

mysql> insert into 成绩(学号,姓名,成绩) values('20','李雷','98');
或者我们要插入的数据含有表中的所有字段值,指定字段可以省略
mysql> insert into 班级.成绩 values('21','韩梅梅','100');

ear管控 mysql 管理mysql_数据库_03

接着我们将成绩进行更新操作,用UPDATE命令

更新数据:
update 表名 SET 字段名1=值1,字段名2=值2 where 条件表达

mysql> update 班级.成绩 set 成绩='99' where 学号='20';
Query OK, 0 rows affected (0.01 sec)
Rows matched: 1  Changed: 0  Warnings: 0

然我们看看结果如何

ear管控 mysql 管理mysql_sql_04

可以出成绩已经更新

接下来我们对表中的信息进行删除,用DELETE命令

DELETE FROM 表名 where 条件语句

mysql> delete from 班级.成绩 where 学号='20';
Query OK, 1 row affected (0.01 sec)

输出过看看呢

ear管控 mysql 管理mysql_数据库_05

李雷那一行就被我删除了。

2.3 DQL:数据查询语言

DQL语言是用于查询数据表中符合条件的数据记录,只有SELECT命令,前面我们其实已经介绍过这个语言结构了,这边我们再具体说下

SELECT命令可以分为两类情况:一种是不指定条件,我们上面用的就是不指定条件,查看表中的内容,第二种是指定条件,我们来看下语句

查询不指定条件
SELECT 字段1,字段2 FROM 表名

mysql> select 成绩 from 班级.成绩;   ##这是看表中包含的所有成绩信息
+--------+
| 成绩   |
+--------+
|    100 |
+--------+
1 row in set (0.00 sec)

mysql> select 成绩 f^Cm 班级.成绩;   ##这是看表中包含的所有信息
mysql> select * from 班级.成绩;
+--------+-----------+--------+
| 学号   | 姓名      | 成绩   |
+--------+-----------+--------+
|     21 | 韩梅梅    |    100 |
+--------+-----------+--------+
1 row in set (0.00 sec)

还有一种是查询指定条件指定字段的用法

SELECT 字段名1,字段名2 FROM 表名 where 条件表达式

mysql> select 姓名 from 班级.成绩 where 学号='21';  ##在表中查查询学号为21的数据的姓名
+-----------+
| 姓名      |
+-----------+
| 韩梅梅    |
+-----------+
1 row in set (0.00 sec)
2.4 DCL: 数据控制语言

DCL语句设置用户权限(用户若是不存在时,就新建用户)

GRANT是赋予权限

REVOKE是移除权限

GRANT 权限列表 ON 数据库名.表名 TO 用户名@用户地址 IDENTIFIED BY 密码

mysql> grant select on 班级.成绩 to 'gao'@'localhost' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

要验证是否赋予权限,我们需要退出数据库的当前账户

ear管控 mysql 管理mysql_数据库_06

说明我们已经赋予了查看数据库的权限

这个是在本机上赋予权限,那么能不能给别的主机赋予权限呢?答案当然是可以的

mysql> grant all on 班级.* to 'li'@'20.0.0.40' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
为“li”这个账户配置所有权限

然后我没在开启另一台数据库服务器进行远程登录验证,我这边设置了一台20.0.0.40的服务机

ear管控 mysql 管理mysql_字段_07

可以看出,可以远程登录。验证成功!

经验总结

其实老铁们在敲命令的时候会发现,好多的报错都是因为自己的输入的英文字符错误,或者是少了半边括号,或者是中文跟因为切换之后标点符号的问题,所以我希望老铁们在输入的时候,可以细心,细心,再细心,特别是输入中文与英文混合的时候要时刻注意标点符号的问题,我自己在操作过程中好多次都是标点符号的问题,遇到报错了,也不好慌,看看是哪个字段的,好好排查下,往往就是我说的一些上述原因。毕竟我们了解到还是基本,但是往往一些较为复杂的语句都是从基础开始怼起来的,基础牢了对以后的学习工作都会有帮助的。

成功!

经验总结

其实老铁们在敲命令的时候会发现,好多的报错都是因为自己的输入的英文字符错误,或者是少了半边括号,或者是中文跟因为切换之后标点符号的问题,所以我希望老铁们在输入的时候,可以细心,细心,再细心,特别是输入中文与英文混合的时候要时刻注意标点符号的问题,我自己在操作过程中好多次都是标点符号的问题,遇到报错了,也不好慌,看看是哪个字段的,好好排查下,往往就是我说的一些上述原因。毕竟我们了解到还是基本,但是往往一些较为复杂的语句都是从基础开始怼起来的,基础牢了对以后的学习工作都会有帮助的。