前言
你还在为“数据该怎么存?数据库咋管?”头疼吗,或是想闯入数据库领域却没头绪——MySQL,绝对是你最友好的“入门钥匙”!
作为开源圈的“顶流”关系型数据库,MySQL凭着“轻量好上手、稳定还能扛”的本事,成了Web开发、数据分析乃至企业系统的“数据管家”首选:小到个人项目存用户信息,大到企业级应用处理海量数据,都有它“大显身手”的机会。
想快速啃下它?本文就是为你定制的“通关指南”:
- 从“mysql和mysqld有啥区别”,“MySQL整体啥架构”这些基础认知,到SQL语句分类帮你捋清逻辑;
- 再到数据库如何创建、查看、修改、删除,数据表怎样搭建、查询、调整、移除——全程“理论+实操”双管齐下,手把手教你掌握核心操作。
跟着学,你很快就能自己搭数据库、管数据表,把“数据管理”从“陌生词”变成“随手能做的技能”,甚至直接用到项目里!现在,开启MySQL的轻松学习之旅吧~
一. 数据库基础
1.1 mysql和mysqld
mysql是基于CS(client - server)模式的一种网络服务,所以其也需要有服务端和客户端:
- mysql是数据库服务的客户端;
- mysqld是数据库服务的服务端。
mysql帮助我们将磁盘上的数据组织管理起来,让我们能够更方便的查找,管理数据。
数据库本质就是:对数据内容存储的一种解决方案,上层直接对数据库进行操作,而不需要再考虑数据在磁盘上是如何存放的,又要如何将数据组织起来,这些工作都有mysql数据库来帮我们解决。
1.2 mysql结构
mysql大体上可以分为4层:
- 最上层:与客户端建立链接,进行限权等上层服务;
- 第二层:识别用户的指令,进行词法分析,同时对接收到的指令进行调优;
- 第三层:存储引擎:负责对各种指令进行具体的方法实现,包含对数据库文件进行增删查改;
- 第四层:文件系统,与磁盘文件进行交互。
1.3 SQL语句分类
SQL语句分为三类:
- DDL : 数据定义语言,维护数据库的存储结构;
- DML : 数据操作语言,进行表内数据的修改;
- DCL : 数据控制语言,负责权限管理和事务。
本文主要介绍DDL方面的语句,即如何对库中的存储接口进行修改。
二. 库的操作
库的操作分为四部分:
- 创建数据库;
- 查看数据库;
- 修改数据库;
- 删除数据库。
2.1 创建数据库
语法: create database (if not exists) 库名 (选项)来创建库;
通过show databases;可以查看mysql中已经存在的数据库。
- 创建一个名为
test的数据库:
在创建库的时候,我们也可以指定该库的两种编码集:
- 数据库编码集——数据存储时采用的编码方式;
- 数据库校验集——用于对数据进行比较,排序的规则,通常被称为"排序规则"。
通过show charset可以查看数据库支持的所有编码方式,show collation查看数据库支持的校验集。
- 创建数据库的时候也可以指定字符集或校验集:在后面紧接着
charset=编码集 collate=校验集即可:
可以通过show create database 库名,显示mysql创建对应数据库的信息。
注意:utf8是utf8mb3是其一个别名,所有通过上图我们确实将库中的编码集进行了成功设置,在查询中未显示校验集,默认使用该编码集的默认校验集。
2.2 查看数据库
-
可以通过
show databases查看所有已经存在的数据库: -
show create database 库名:显示创建库的时候的信息,\G可以将查询结果按 “垂直格式” 展示 -
show processlist用来查看那些用户连接了我们的mysql。
2.3 修改数据库
关于修改数据库,我们只能进行的操作是有限的,最常见的就是修改数据库的编码集和解码集:
alter database 库名 charset=编码集:
2.4 删除数据库
删除数据库很简单:drop database 库名即可。
但是不建议直接将数据库中直接进行删除,应当先备份再删除。
2.4.1 备份
语法: mysqldump -P服务器端口号 -u 用户 -p -B 目标库 > 目标文件
上述这个语句就是用来进行备份的,其中-B选项指的是在进行数据恢复的时候,会自动创建库,不需要我们手动创建库。
2.4.2 恢复
语法:source 备份文件.
在对文件数据进行恢复的时候,要考虑是否需要手动创建一个数据库来存放数据,如果在进行备份的时候添加了-B会自动创建数据库,否则需要手动创建。
实际上述的备份就是将对目标库的所有指令存储起来,而恢复就是将这些存储的指令重新在mysql上执行一边。
三. 表的操作
关于表的操作与库的操作一样,也分为四部分:
- 创建表;
- 查看表;
- 修改表;
- 删除表。
在对表操作之前,我们要向指定要对那个库中的表进行操作:use 库名指定要进行操作的库。
3.1 创建表
create tabel 表名(
fieldl datatype,
field2 datatype,
field3 datatype
) charset=字符集 collate=校验规则 engine=存储引擎;
- field 表示列名;
- datatype 表示列的类型,关于列的类型将单独写一篇文章来进行介绍;
- character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准;
- collate 校验规则,如果没有指定校验规则,也以所在数据库的校验规则为准。
3.2 查看表
查看表分为四种:查看库中存在的所有表,查看表中的数据;查看表的创建信息;查看表中存放那些数据。
-
查看库中含有的表:
show tables。 -
查看表的创建信息:
show create table 表名: -
查看表中存放的数据类型:
desc 表明 -
查看表中的数据,此处需要使用到
select,在后面会出一篇文章详细介绍MySQL中的查询语句,此处直接使用select * from 表明来进行查看:
3.3 修改表
所有修改表的操作都是使用alter table 表名 .....
-
修改表的名字:
alter table 原名 rename (to) 新名: -
将表中新增一列:
alter table 表名 add 列名 属性...: -
对表中的具体一列的属性进行修改:
alter table 表名 modify 列名 属性: -
修改表中某一列的名称:
alter table 表名 change 旧名 新名:
3.4 删除表
- 删除表中的一列还是使用
alter table 表名 drop 列名; - 删除整张表:
drop table 表名.