MySQL入门阶段这一篇就够了-学习笔记(手敲1.5万字)(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL入门阶段这一篇就够了-学习笔记(手敲1.5万字)

前言


虽然在大一下学期,就已经接触到了MySQL,但是那个时候只是会用MySQL进行增删改查,在大三上学期,尝试投简历寻找实习时,对方公司对于程序员的MySQL水平有很高的要求,所以我开始系统化的学习MySQL。顺便将整理出的笔记逐步写入博客中,日积月累,准备发表一篇长篇博客。

本篇博客的特点


本篇博客,我会以一个学过的人的身份给大家来讲,所以里面很多部分我会以教师与学生的视角来书写。这可能也会让大家比较可以接受。

MySQL的重要性


MySQL的重要性-SQL写的好,工作随便找。


可以看出其实在现在的工作中,很多的软件app都选择了MySQL作为数据存储的工具。但是光学语法有用么?固然学会了语法非常重要,但是实际上,MySQL在使用时的提速也非常的重要。大量的数据在处理的时候,都需要用一些算法对搜索等过程进行优化。

举个栗子,假设有100万条数据,现在让你进行查询操作,如果不用任何的技巧,我们的思路就是直接一个循环,对内部数据进行遍历,这样的速度可想而知。那么如果使用算法进行优化,那么速度就会有所提升。这也是很多大厂目前数据库操作中最为常见的现象。数据量大,需求响应时间短。

数据模型


下图是MySQL的数据模型,我们就是客户端,通过DBMS创建数据库,再从数据库中创建数据表。当然一个数据库可以创建多个数据表。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cW6qwk4X-1667577677143)(https://note.youdao.com/yws/res/1/WEBRESOURCE0301c28c7ad0bceb41f8ffc984f66111)]

SQL通用语句


  1. 首先SQL语句可以单行书写,同时也支持多行书写,以分号作为结尾。
  2. SQL语句可以使用空格/锁进来增强语句的可读性。
  3. MySQL数据库的SQL语句不区分大小写,但是关键字一般建议大写。
  1. 注释:
  • 单行注释: # 注释内容 或者 – 注释内容
  • 多行注释: /* 注释内容 */

SQL分类


image.png

数据库操作


查询


查询所有数据库


我们在服务器或者本地搭建数据库服务之后,我们可以创建很多的数据库,但是数据库有很多了之后我们需要实时的知道都有哪些,因为他们的数据库名称不同,所以我们要使用下面的语句。

SHOW DATABASES;

2407a6115b86419c9f577d38f56ba43f.png

可以看到在写好这个语句之后,我们所有的数据库都会显示出来。

查询当前数据库


SELECT DATABASE();

创建


CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLIATE 排序规则]

image.png

我们通过上面这句话可以创建一个新的数据库。当然IF NOT EXISTS可以帮我们判断是否存在这个数据库。当存在此数据库时,将不会产生任何操作,在不存在此数据库时,才会创建一个全新的。同时我们MySQL的编码格式不建议使用utf8的格式,我建议使用utf8mb4.

删除


DROP DATABASE [IF EXISTS] 数据库名;

image.png

通过上面的语句也可以达成删除的效果。

删除并重新创建表


TRUNCATE TABLE 表名;

使用


USE 数据库名

数据表操作——查询


查询当前数据库中所有的表


SHOW TABLES

image.png

上面的代码操作时对数据库中表数据的遍历显示,在运行后,可以显示出当前数据库内,所有的数据表。

查询表结构


DESC 表名

image.png

在对表数据的结构进行查询之后,可以看到表中存在一个name的列名,同时数据类型是varchar类型。可以为NULL等等信息。

查询指定表的建表语句


SHOW CREATE TABLE 表名

image.png

然后我们可以通过上面的语法,了解如何创建一个表,使新的表的结构,字符完全一致。

数据表操作——创建


创建表


CREATE TABLE 表名 (
  字段1 类型 COMMENT '注释',
  字段2 类型 COMMENT '注释',
  字段3 类型 COMMENT '注释',
  字段4 类型 COMMENT '注释'
)

image.png

我们通过上面的语法变化我们想要的数据结构来进行创建,可以看到在执行之后,一个符合我们预期效果的表数据就出现了。

数据表操作——数据类型


MySQL中主要支持三大类型,数值类型,字符串类型,时间日期类型。

数值类型


image.png

  • TINYINT 就是1个字节的整型数据。
  • SMALLINT 就是2个字节的整型。
  • MEDIUMINT 就是3个字节。
  • INT 正常大小的整型,占用4个字节。
  • BIGINT 就是很大的整型,占用8个字节。
  • FLOAT 单精度浮点数值
  • DOUBLE 双精度浮点数值
  • DECIMAL 小数值

举个例子,我们在存储某个人年龄时,因为人分的年龄不会超过255,所以可以使用TINYINT类型,同时又因为人的年龄不存在负数,所以使用unsigned,也就是无符号类型。

字符串类型


image.png

这里我们需要区分的就是text和blob,首先text就是存储文本,这个大家应该并不陌生,但是blob是用来存储二进制文件的,很多时候,人们将图像传输到数据库,就是使用的blob,同样一些软件安装包也是这种效果,因为这样效率不高,也不好管理。

然后我们区分一下char和varchar。首先char使是定长,也就是说,假设我想存储一个1,那么用char的化,占用10字节,其余九个位置用空格来占用。如果是varchar那就只占用1个字节。

日期时间类型


image.png

这里没有太多要解释的,我们一般不使用最后一种类型。

数据表操作——修改


添加字段


ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];

image.png

可以看到我们向demo2中添加一个nickname的列信息,执行后就出现了nickname。

修改数据类型


ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

image.png

在输入上述语句后,我们成功将nickname字段的数据类型修改为char类型。长度是10个字符。

修改字段名和字段类型


ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型(长度) [COMMENT 注释] [约束];

image.png

在经过上面的操作之后,我们的nickname成功的更改为new_nickname,并且转换为了50字符长度的varchar类型

删除字段


ALTER TABLE 表名 DROP 字段;

image.png

在上面的语句执行后,我们就可以删除掉new_nickname字段。

修改表名


ALTER TABLE 表名 RENAME TO 新表名;

image.png

这样我们就可以表demo2转化为demo3

数据表操作——插入


给指定字段添加数据


INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);

那么我们可以先来看一下这个语句,首先字段1,字段2就是想要操作的位置,那么和C语言中的格式化很像,我们要将值1和值2对号入座,放入对应的字段中,实现插入的效果。那么我们来看一下实际操作。

image.png

这里我们要注意数据类型中,字符类型就要用单引号,那么数值类型的话,就不可以使用单引号。

给全部字段添加数据


当我们明确要给所有字段添加数值时,其实就是添加一整条新的数据,那么我们可以简化我们之前的SQL语句。因为我们不需要去考虑那些要添加,哪些不添加了,所以我们只需要按照数据库中字段顺序进行书写就可以了。

INSERT INTO 表名 VALUES (值1, 值2, ...);

image.png

现在我们可以看到这样语句更加简单,也很容易理解。

批量添加数据


INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...),(值1, 值2, ...);
INSERT INTO 表名 VALUES (值1, 值2, ...),(值1, 值2, ...);

上面就是批量添加数据的操作,我们可以理解为,批量添加数据就是,在添加一条数据的后面再加上一组或更多组。这个语句就不在展示范例了。

注意

  • 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
  • 字符串和日期类型要用单引号括起来。
  • 插入的数据大小,应该在字段的范围内。

数据表操作——修改


修改数据


UPDATE 表名 SET 字段名1=值1, 字段名2=值2,.....[WHERE 条件];

我们可以发现更新数据时,set后面不需要括号,只需要用逗号隔开就好。当然后面的WHERE条件也不是必要的,当我们不加入条件时,我们的更改就会覆盖整个表。下面我们来看一下样例。

image.png

可以看到我们的loading名字被修改成了wow。这个就是我们的更改方法。

删除数据


DELETE FROM 表名 [WHERE 条件]

这个就是我们删除数据的一个语句,我们只需要将数据进行一个限定就可以做到精确删除摸一个值的位置,那么那一整行就被我们删除掉了。下面我们来看一下样例。

image.png

不难看出create的数据被我们删除了。

数据表操作——查询


首先我们要知道,在我们平时生活中,数据库中业务量最高的操作就是查询操作,也就是我们的SELECT操作。当然再MySQL中查询也有很多的方式,我们这一次都要学习,但是我就不像之前一样给大家写一个大的总结了,我们直接来分块学习。

基本查询


查询单个字段或多个字段

其实基本查询就是我以前最为常用的,简单粗暴的方式啊,直接查询整个数据表。我们有两种写法,第一种就是分字段,只搜索我想要的字段,还有一种就是全部搜索,不管是什么字段,我全都进行搜索。

SELECT 字段1, 字段2, ... FROM 表名;
SELECT * FROM 表名;

这就是我说的两种写法的规范方式,第一个我们输入我们想要查询的字段,然后说明要在那个数据表中进行操作,就可以得到结果。第二个就是我要表明我要查询的表名,然后就可以获取表中所有字段的所有数据。下面我们来看一个示例。

image.png

我们可以看到再搜索了一个姓名的字段之后,我们的数据库给我们返回了一个字段下的所有的数值。

image.png

上面就是完全查询的写法。可以发现它可以自动返回所有字段的所有数据。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
1月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
128 6
|
2月前
|
关系型数据库 MySQL 数据库
MySQL基本操作入门指南
MySQL基本操作入门指南
83 0
|
1月前
|
SQL 关系型数据库 MySQL
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
53 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
|
1月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
70 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
61 1
|
2月前
|
SQL 关系型数据库 MySQL
MySQL入门到精通
MySQL入门到精通
|
3月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
55 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
3月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
125 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
3月前
|
SQL 关系型数据库 MySQL
MySQL学习笔记
这篇文章是一份关于MySQL数据库操作的学习笔记,涵盖了数据库的终端操作、数据类型、建表约束、事务处理以及SQL的连接查询等基础知识点。