如何管理我们的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:定义该表的主键索引,这边先做了解,我们会接下来的索引章节中,具体说明
我们可以用上面的查询语句来查看这个库的具体情况:
我没还可以通过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)
最后用命令检查下,数据库是否已经被删除
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');
接着我们将成绩进行更新操作,用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
然我们看看结果如何
可以出成绩已经更新
接下来我们对表中的信息进行删除,用DELETE命令
DELETE FROM 表名 where 条件语句
mysql> delete from 班级.成绩 where 学号='20';
Query OK, 1 row affected (0.01 sec)
输出过看看呢
李雷那一行就被我删除了。
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)
要验证是否赋予权限,我们需要退出数据库的当前账户
说明我们已经赋予了查看数据库的权限
这个是在本机上赋予权限,那么能不能给别的主机赋予权限呢?答案当然是可以的
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的服务机
可以看出,可以远程登录。验证成功!
※经验总结:
其实老铁们在敲命令的时候会发现,好多的报错都是因为自己的输入的英文字符错误,或者是少了半边括号,或者是中文跟因为切换之后标点符号的问题,所以我希望老铁们在输入的时候,可以细心,细心,再细心,特别是输入中文与英文混合的时候要时刻注意标点符号的问题,我自己在操作过程中好多次都是标点符号的问题,遇到报错了,也不好慌,看看是哪个字段的,好好排查下,往往就是我说的一些上述原因。毕竟我们了解到还是基本,但是往往一些较为复杂的语句都是从基础开始怼起来的,基础牢了对以后的学习工作都会有帮助的。
成功!
※经验总结:
其实老铁们在敲命令的时候会发现,好多的报错都是因为自己的输入的英文字符错误,或者是少了半边括号,或者是中文跟因为切换之后标点符号的问题,所以我希望老铁们在输入的时候,可以细心,细心,再细心,特别是输入中文与英文混合的时候要时刻注意标点符号的问题,我自己在操作过程中好多次都是标点符号的问题,遇到报错了,也不好慌,看看是哪个字段的,好好排查下,往往就是我说的一些上述原因。毕竟我们了解到还是基本,但是往往一些较为复杂的语句都是从基础开始怼起来的,基础牢了对以后的学习工作都会有帮助的。