MySQL超详细学习教程,2023年硬核学习路线(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL超详细学习教程,2023年硬核学习路线(一)

前言


这是一篇 MySQL 通关一篇过硬核经验学习路线,包括数据库相关知识,SQL语句的使用,数据库约束,设计等。整理的初衷是为了记录自己的成长,同时帮助到需要学习和查看的朋友。


1. 数据库的相关概念


1.1 数据


数据是指数据库中存储的基本对象,是描述事物的符号记录。


1.2 数据库


数据库是指存放数据的仓库,长期存放在计算机内的有组织可共享的数据集合。


1.1.png


数据库技术解决了数据的持久化存储问题,同时利用数据库管理系统解决了对大量数据操作繁琐的问题。


1.3 数据库管理系统


数据库管理系统是指位于用户和操作系统之间的一层数据管理软件,科学的组织和存储,高效的获取和维护。


1.2.png


我们所说的 MySQL 数据库就是指 MySQL 数据库管理系统,在大家日常的使用习惯中把他叫做 MySQL 数据库。在我们的电脑安装好数据库管理系统软件以后就可以创建数据库来管理数据,同时也可以对数据库中的数据进行增删改查的操作。


1.4 数据库系统


数据库,数据库管理系统,应用程序和数据库管理员共同组成了数据库系统。


1.5 SQL


SQL的英文是 Structured Query Language,简称 SQL,是一种操作关系型数据库的结构化查询语言,我们在操作数据库时经常用到的操作就是查询操作。


SQL定义了操作所有关系型数据库的统一标准,可以使用 SQL 操作所有的关系型数据库管理系统,在使用其他的数据库管理系统时,也同样可以使用 SQL 来操作。


2. MySQL数据库


2.1 MySQL安装


MySQL有很多的安装方式,这里可以使用绿色版,避免了安装版的一些繁琐的操作,直接在官网下载与自己电脑相对应的版本的压缩文件,然后将压缩文件解压到一个非中文的目录中。


1.3.png


这里选择下载的产品版本是 5.7.24 ,原因是各个库支持的最完善且相对于最新版本更加的稳定。


2.2 MySQL配置


2.2.1 添加环境变量

1.4.png


右键此电脑 / 属性 / 高级系统设置 / 环境变量 ,在系统变量中新建变量,命名为 MYSQL_HOME,变量值为刚才 MySQL 的存放路径。


双击系统变量中的 Path,值为 %MySQL_HOME%\bin 。添加环境变量的方式与前面学习配置 Java 环境变量大致相同。


那么,我们为什么要先配置环境变量呢?


平时,我们在命令行窗口中输入一个可执行程序的命令时,Windows 会先在环境变量中的Path所指的路径中寻找,如果找到就直接执行,没找到就在当前工作目录中寻找,如果还没找到,就会报错。


我们添加环境变量的目的就是能够在任意路径下运行配置了环境变量的程序,而不用总是修改工作目录,大大简化了操作。


我们如何验证添加环境变量成功呢?


此时,我们只需要以管理员身份运行命令提示符工具,执行 mysql,如果提示 Can't connect to MySQL server on 'localhost',则环境变量添加成功。


注:此时必须以管理员身份运行命令提示符工具,否则会报错。


2.2.2 新建配置文件


在MySQl的根目录中创建一个配置文件 my.ini ,其内容为:


[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


主要目的是配置数据库的默认编码集为utf-8和默认存储引擎为INNODB。


2.2.3 初始化MySQL


在命令提示符窗口中运行mysqld --initialize-insecure,如果没有出现报错,则证明data目录初始化成功。


mysqld --initialize-insecure


此时当我们再打开查看MySQL目录,已经有data目录生成。


2.2.4 注册MySQL服务


在命令提示符窗口中运行 mysqld -install,此时你的电脑就成功注册了MySQL服务,此时你的电脑就可以称为MySQL服务器。


mysqld -install


2.2.5 启动MySQL服务


在命令提示符窗口中运行net start mysql,此时,我们已经成功启动MySQL服务。


net start mysql


运行net stop mysql即可停止MySQL服务。


net stop mysql


可以通过运行mysqladmin -u root password 1234修改默认账户密码,这里的1234指默认管理员(即root账户)的密码。


mysqladmin -u root password 1234


2.3 MySQL登录和退出


在命令行中运行mysql -uroot -p,按照提示输入密码 ,即登录成功。


mysql -uroot -p密码


登录命令中的参数:


mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)


退出MySQL时:


exit
quit


2.4 MySQL卸载


我们只需要简单的三步就可以完成MySQL的卸载:


第一步:运行net stop mysql


net stop mysql


第二步:运行mysqld -remove mysql


mysqld -remove mysql


第三步:删除MySQL目录及相关的环境变量。


2.5 MySQL数据模型


MySQl 是一个关系型数据库。关系型数据库是建立在关系模型基础上的数据库,简单来说,关系型数据库是由多张能互相连接的二维表组成的数据库。


与关系型数据库对应的是非关系型数据库,关系型数据库有很多的优点,例如,都是使用表结构,格式一致,易于维护。使用通用的 SQL 语言操作,方便快捷,可用于复杂查询等。


1.5.png


我们通过客户端可以用数据库管理系统创建数据库,在数据库中创建表,在表中添加数据。创建的每一个数据库对应到磁盘上都是一个文件夹,而一个数据库下可以创建多张表,文件夹中的 .frm 就是表文件,.MYD是数据文件,通过这两个文件就可以查询到数据展示成二维表的效果。


3. SQL语句


3.1 SQL简介


SQL被称为结构化查询语言,可以用于对所有的关系型数据库进行操作,即我们可以通过SQL语句对数据库、表、数据进行增删改查操作。


SQL定义了操作关系型数据库的统一标准,但是,对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方。


3.2 通用语法


1.6.png


MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。


SQL 语句可以单行或多行书写,以分号结尾。


注释:


单行注释: – 注释内容 或 #注释内容(MySQL 特有)


多行注释: /* 注释 */


3.3 SQL分类


1.7.png


DDL: 数据定义语言,用来定义数据库对象:数据库,表,列等


DML: 数据操作语言,用来对数据库中表的数据进行增删改


DQL:数据查询语言,用来查询数据库中表的记录(数据)


DCL:数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户


数据是数据库中非常重要的部分,所以在日后的操作中我们最常进行的是对数据的一些操作,即对数据进行怎删改查,所以最常用操作的是 DML 和 DQL 。


总的来说DML用于对数据增删改,DQL用于对数据查询操作,DDL用于操作数据库,而DCL是用来控制权限。 SQL 的基本操作一般是指对数据库,数据表,数据的增删改查。


4. DDL- 操作数据库


首先要学习的是使用DDL来对数据库进行操作,主要是对数据库的增删改查操作。


4.1 查询


查询所有的数据库:


show databases;


例如:


1.8.png


4.2 创建数据库


创建新的数据库:


create database 数据库名称;


使用上面的方式创建新的数据库时,如果该数据库已经存在,则会出现错误,所以我们在创建新的数据库时一般会判断该数据库是否存在,如果已存在,则不会创建。


创建新的数据库(判断数据库是否已经存在):


create database if not exists 数据库名称;


例如:


1.9.png


4.3 删除数据库


删除数据库:


drop database 数据库名称;


和前面创建新的数据库相同,为了避免出现错误,我们一般会先判断该数据库是否存在,如果不存在,则不会删除。


删除数据库(判断数据库是否已经存在):


drop database if exists 数据库名称;


例如:


1.11.png


4.4 使用数据库


现在我们已经成功创建了新的数据库,接下来,我们要在数据库中创建数据表,首先我们要明白是对哪一个数据库进行操作,此时我们要先学会使用数据库,才能对数据库中的表进行操作。


使用数据库:


use 数据库名称;


查询当前正在使用的数据库:


select database();


例如:


1.12.png


5. DDL- 操作数据表


同样,对数据表的操作无非就是增删改查,在学习相关操作之前,我们先要熟悉一下MySQL的数据类型。


5.1 数据类型


MySQL支持多种数据类型,但是大致可以分为3中,分别是数值型,日期型和字符串型。下面是比较常用的几种数据类型:


数值:


数据类型

解释

tinyint

小整数型,占1个字节

int

大整数型,占4个字节

double

浮点类型


日期:


数据类型

解释

date

日期值,只包含年月日

datetime

混合日期和时间值,包含年月日时分秒


字符串:


数据类型

解释

char

定长字符串

varchar

变长字符串


定长字符串和变长字符串的区别:字符串是我们在数据库中经常使用的数据类型,使用变长字符串,如果字符的长度没有达到指定的长度,那么实际的长度是多少就占用几个字符,这样的做法显然是使用时间换空间,而使用定长字符串虽然有时会出现浪费空间的情况,但是一般储存性能比较高。


5.2 查询表

查询当前数据库下所有的表:


show tables;


查询表结构:


desc 表名称;


例如:


1.13.png


5.3 创建表


创建一个新的表:


create table 表名称(
    字段名1 数据类型,
    字段名2 数据类型,
    ...
    字段名n 数据类型  #这里是不需要加上,的
);


例如:


1.14.png


5.4 删除表


删除表:


drop table 表名;


删除表(判断表是否存在):


drop table if exists 表名;


例如:


1.15.png


5.5 修改表


修改表名:


alter table 表名 rename to 新的表名;


增加一列:


alter table 表名 add 列名 数据类型;


修改数据类型:


alter table 表名 modify 列名 新数据类型;


修改列名和数据类型:


alter table 表名 change 列名 新列名 新数据类型;


删除列:


alter table 表名 drop 列名;


例如:


1.16.png


6. 实战案例详解


需求:设计包含如下信息的学生表,请注重数据类型、长度的合理性。


编号

姓名,姓名最长不超过10个汉字

性别,因为取值只有两种可能,因此最多一个汉字

生日,取值为年月日

成绩,小数点后保留两位

地址,最大长度不超过 64

学生状态(用数字表示,正常、休学、毕业…)

在完成这样一个案例前,首先要创建一个学生数据库,在数据库中创建一张新的表,创建表时注意语法格式,数据类型和长度的合理性。


以管理员身份运行命令提示符cmd,启动Mysql服务,登录MySQL:


1.17.png


创建学生信息数据库:


create database if not exists student;

1.18.png


使用student数据库:


use student;

1.19.png


创建数据表:


create table stu(
  id int ,-- 编号
  name varchar(10),-- 姓名
  gender char(1),-- 性别
  birthday date,-- 生日
  score double(5,2) ,-- 分数
  addr varchar(50),-- 地址
  status tinyint-- 状态
);

1.20.png


现在,我们已经学会了写SQL来操作数据库,但是我们在命令行中写SQL时,往往有体验感差,效率低等问题,现在开始我们就要学习在MySQL的图形化客户端Navicat中执行SQL语句。


Navicat 为数据库管理、开发和维护提供了一款直观而强大的图形化界面,大大的提高了工作效率,建议在学习中也使用这款开发工具。接下来,在Navicat中新建数据库,新建查询,我们就可以编写SQL并且执行SQL语句了。


7. DML- 增删改数据


7.1 添加数据


给指定列添加数据:


insert into 表名(列名1,列名2...) values(值1,值2...);


给全部列添加数据:


insert into 表名 values(值1,值2...);


批量添加数据:


insert into 表名(列名1,列名2...) values(值1,值2...),(值1,值2...),(值1,值2...)...;


批量添加数据(省略字段名):


insert into 表名 values(值1,值2...),(值1,值2...),(值1,值2...)...;


在开发过程中添加数据时是不建议省略字段名的,这样降低了代码的可读性,使效率下降。例如:


查询表中的所有数据的方法是:


select * from 表名;


后面会用到的。


需求:往下面的tb_user表中添加一条数据。


1.22.png


insert into tb_user(id,name) values(2,'李四');


添加成功:


1.23.png


7.2 修改数据


修改表的数据:


update 表名 set 列名1=值1,列名2=值2...[where 条件];


在修改数据时,也可以不使用where条件,此时的操作是修改整列数据,这样的操作是很危险的。


需求:把下面tb_user表中的张三的密码改为abc23


1.24.png


update tb_user set passwor d ='abc123' where name='张三';

修改成功:


1.25.png


7.3 删除数据


删除表的数据:


delete from 表名 [where 条件];


在删除某条数据时,如果不使用where条件,将会导致删除整个表的数据。


需求:删除tb_user表中的李四记录。


delete from tb_user where name='李四';


操作成功:


1.26.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
74 3
|
2月前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
2月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
202 26
|
3月前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
109 20
|
4月前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
127 0
【入门级教程】MySQL:从零开始的数据库之旅
|
4月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
166 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
4月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
785 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
4月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
257 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
4月前
|
关系型数据库 MySQL 数据库
mysql关系型数据库的学习
mysql关系型数据库的学习
46 0
|
1月前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决