【MySQL】如何速通MySQL(1)

news2025/1/20 14:51:55

📌前言:本篇博客介绍如何速通MySQL,主要介绍Mysql中主要的基础的入门,学习MySQL之前要先安装好MySQL,如果还没有安装的小伙伴可以看看博主前面的博客,里面有详细的安装教程。或者看一下下面这个链接~

🚀如何安装Mysql

MySQL如何速通MySQL

  • 一、数据库基础介绍
  • 二、Mysql介绍
  • 三、MySQL的基本操作(库操作)
    • 1.登录Mysql
    • 2.查看数据库
    • 3.创建数据库
    • 4.选中数据库
    • 5.删除数据库
  • 四、MySQL的基本操作(表操作)
    • 1.创建表
    • 2.查看表结构
    • 3.删除表
  • 五、MySQL中的注释


一、数据库基础介绍

学习Mysql,也就是学习数据库的相关知识,那么到底是啥是数据库啊?

数据库是一种用于存储和管理数据的软件系统。它可以通过各种数据结构,如表、索引、视图等方式来组织和存储数据,同时提供方便的数据访问和处理功能,以满足各种业务需求。

而对于Mysql,他只是数据库中的其中一种,那么是否需要学习多种数据库呢,答案是否定的。不同的公司或组织可能会使用不同的数据库系统,但通常情况下,掌握一种主流数据库的使用就已经足够了,比如 MySQL、Oracle、SQL Server 等。当我们需要使用其他数据库时,实际上只需要稍微了解,因为他们都有相似的核心概念和操作。

在学习Mysql前,我们也可以了解一下Mysql和其他数据库:

关系型数据库介绍
Oracle数据库圈子里的大佬,最好的!收费的!
MySQL当前使用最广泛的数据库,主流互联网公司都在用,最广泛!
SQL Server微软的数据库,学校数据库课使用,好用不火!
SQLite轻量级数据库,整个程序就是一个exe可执行文件,用在桌面应用程序,移动应用程序

以上四种数据库都叫关系型数据库,对于数据库中的数据格式要求比较严格。

非关系型数据库介绍
Redis速度非常快,适用于高速缓存、分布式锁、计数器等
MongoDB可以存储半结构化数据,适用于Web应用程序、物联网、社交网络、游戏开发
HBase采用了分布式列存储,适用于数据仓库、搜索引擎、日志分析

以上三种数据库都叫非关系型数据库,功能相比于关系型数据库要少一些,但是性能更高,同时适用于当下大数据分布式的时代背景,引入了多台机器,相互配合功能存储和管理这样的一份数据。

那么有人就会问了,哎关系型数据库和非关系型数据库有什么区别啊?我们可以从下面三个方面去了解他们的区别:

💡关系型数据库和非关系型数据库的区别:

  1. 数据结构:关系型数据库采用表格的形式来存储数据,每个表格包含多个行和列。每个列定义了一个特定的数据类型和约束规则。而非关系型数据库则可以采用各种不同的数据结构,例如键值对、文档、图形等。
  2. 应用场景:关系型数据库主要适用于需要处理结构化数据的应用场景,例如银行、医疗、金融等传统领域。非关系型数据库则更适合处理大规模、高并发、非结构化数据的场景,例如社交网络、日志分析、物联网等。
  3. 特性和实现:关系型数据库通常具有严格的数据模型和 ACID 事务支持,能够保证数据的一致性和完整性。而非关系型数据库则通常强调可扩展性、高性能和灵活性,可能会牺牲一定的数据一致性的要求。

二、Mysql介绍

介绍完数据库,那也得介绍一下啥是Mysql吧,MySQL 是一种流行的开源关系型数据库管理系统,常用于构建 Web 应用程序和大型网站。它支持多用户、多线程访问,以及使用 SQL 语言进行数据管理和查询操作。

MySQL 提供了很多特性和功能,如事务的支持、存储过程、触发器、视图、索引等机制,以支持不同类型和规模的数据管理任务。同时,它还提供了丰富的 API,方便各种编程语言对 MySQL 进行交互并进行数据操作。

什么?这么复杂,学个p,下机!(bushi),客官稍安勿躁,不要着急,这些是理论知识,具体操作起来,实际上并不难,我们接着往下看~

没错就是这么复杂,我们还得先了解一下什么是客户端服务器,以及请求和响应,因为这是Mysql的工作原理,如果我们安装好了Mysql后,可以在我们的电脑中看见,我们的Mysql服务已经开启,而在开始菜单中的Mysql也可以看见启用的客户端窗口,当然不止这一种客户端形式:

客户端(Client):是一种用于访问 MySQL 数据库服务器的应用程序,可以通过该客户端连接到 MySQL 服务器并执行 SQL 命令,进行数据库管理和操作。

服务器(Server):指的是 MySQL 数据库服务器,它是一个能够接收来自客户端的请求并返回响应的软件应用程序,提供了数据库的访问、维护、管理等服务。

请求(Request):在互联网环境下,客户端向服务器发送的数据被称为请求,请求可以是 web 页面、图片、视频等内容,还可以是用于与服务器交换数据的 API 请求等。

响应(Response):指服务器对于客户端请求所做出的回应,响应通常包含在一个 HTTP 消息中,并包括状态码、消息头和消息体。在互联网环境下,响应可以是 web 页面、图片、视频等内容,也可以是服务器返回的 API 数据。

具体可以参考以下图片:
在这里插入图片描述


三、MySQL的基本操作(库操作)

介绍完上面的基础之后,我们就终于来到操作Mysql啦,在设置安装好mysql之后,我们可以在开始菜单中找到mysql客户端打开,然后输入密码就可以登录啦(密码在安装的时候设置了)。

建议在学习时不用设复杂的密码哈,因为我们学习的时候创建的数据没啥重要性,所以也不会有人来把咱数据库给盗取~

1.登录Mysql

🚩登录数据库其实就是找到Mysql客户端,如何然后输入密码就可以登录了,当然也有可能会闪退,可能是输错密码,重新输入试试就好。

2.查看数据库

🚩在数据库中,我们最基本也最核心的操作就是增删改查,所以我们最主要学习的就是增删改查,特别是查。

show databases;//命令,显示当前的数据库

当我们在命令行敲上回车之后,就会得到:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
//执行完后会得到反馈,表示显示多少行,用了多少秒

注意事项:
✅1.查看命令的show和databases中间有空格!
✅2.是databases不是database,有s哦!
✅3.使用英文符号的分号结尾,客户端任意一个sql语句都是用的这个结尾!
✅4.mysql中允许分行,只要没分号结束就可以继续写

mysql> show
    -> databases
    -> ;
//所以命令也可以这样写,是为了方便有时候复杂的数据库命令的代码容易查看,比如

mysql>select device_id,university,gpa
    -> from user_profile
    -> where (university,gpa) in (select university,min(gpa) from user_profile group by university)
    -> order by university;
//这里如果一串下去,不仅别人看的晕,自己也晕,所以可以分行

3.创建数据库

🚩上面查看到的是最开始最新鲜的数据库,也就是说在里面看见的这几个都是Mysql自带的数据库,是下载安装好就有的,并不是我创建的,下面我们来创建属于自己的数据库:

create database [数据库名];//创建数据库命令
create database my_sql;//创建数据库,名称为my_sql

当我们在命令行敲上回车之后,就会得到:

mysql> create database my_sql;
Query OK, 1 row affected (0.00 sec)
//显示查询成功,受影响的 1 行(耗时0.00 秒)

注意事项:
✅1.创建命令中是database不是databases!
✅2.数据库名由数字,下划线,字母等组成,不能是sql中的关键字,即特定含义的单词!
✅3.如果想要拿关键字做为数据库名,可以用反引号把数据库名引起来
✅4.创建数据库的时候,名字是不能重复的!
✅5.写sql的时候,sql的关键字是不敏感的,show databases和SHOW DATABASES效果一样!

mysql> create database my_sql;
ERROR 1007 (HY000): Can't create database 'my_sql'; database exists
//报错信息:你什么地位跟我用同样的数据库名

mysql> create database show;
ERROR 1064 (42000):......
//报错信息:这是老子的专用名字你别来

mysql> create database `show`;
Query OK, 1 row affected (0.00 sec)
//查询成功:如果是您反引号大人也不是不可以

mysql> CREATE DATABASE ggb;
Query OK, 1 row affected (0.00 sec)
//查询成功:我并不在意大小写,我创了,你随意

mysql> create database 我就用中文创数据库;
Query OK, 1 row affected (0.00 sec)
//创建成功:创建数据库可以用中文的数据库名字(有坑)

当然这里还有一个知识点,就是在创建表的时候我们可以指定字符集,字符集,字符集是一组字符的集合以及这些字符对应的编码方式,简单来说就是通过某种编码方式转化为计算机可以识别和处理的二进制数字形式,那编的不一样,存的也就不一样,以至于有些时候咱们搞点中文的他直接给你报乱码:

mysql> insert into student values(1,'李四');//插入数据到表中
ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'name' at row 1
//报错信息:老子看不懂你编码编的什么玩意

然后又引申出另一个知识点,欸我刚刚上面不是用了中文创建数据库吗,那不也是中文吗,怎么就可以存储了,没错就是上面的有坑,这是因为:

💡中文库名不直接涉及到存储中文数据,其本质上只是一个用于标识库的名称。

但是虽然中文库名可以在MySQL中使用,我们也应该遵循一定的规则和约定,以避免不必要的问题的出现。同时,在插入中文数据时,需要进行字符编码设置,以确保能够正确处理中文数据。所以,我们在创建数据库时可以这样:

mysql> create database happy charset utf8;
Query OK, 1 row affected (0.00 sec)

4.选中数据库

🚩当我们创建好了之后,就可以进入我们的数据库进行操作啦,但是我们创建了那么多数据库,直接操作就不知道操作了哪一个数据库,所以在操作之前,要先选中数据库:

use [数据库名];

比如说我要选中刚刚创建的ggb数据库:

mysql> use ggb;
Database changed//切换到我们选中的数据库中

5.删除数据库

🚩相信大家都听说过删库跑路,没错,删库这个操作是比较危险的,当然我们学习过程中这些倒是没那么危险,但是一旦删除,数据基本上就难以恢复,就算可以恢复,带来的影响也是极其巨大的。

mysql> drop database [数据库名];

比如:

mysql> drop database ggb;
Query OK, 1 row affected (0.01 sec)
//删除ggb数据库

所以删库了还有办法弄回来吗,理论上是有的,但是比较复杂,而且不能100%保证恢复到完好如初,对于计算机删除硬盘数据,实际上是逻辑删除(把数据标记为无效,而不是把数据直接抹掉),如果真删了,马上停机,把硬盘给专业团队处理,还是有可能回得来的,但是这段时间造成的损失可回不来,就相当于你最爱的某个游戏因为某一部分数据被删库了,这部分的板块不给玩,对公司造成的损失是巨大的。


四、MySQL的基本操作(表操作)

当我们创建好库之后,就可以选择自己需要的数据库进行表操作的,这里要记得先选中数据库,再进行表操作哦~

1.创建表

create table [表名(field1 datatype,field1 datatype)]//创建表

但是就像上面看到的模板一样,后面接了一坨不知道什么东西,field1 datatype,field1 datatype,实际上是数据名和他的类型,因为我们存储的时候还是需要分清楚类型的,所以我们先得了解一下Mysql中的数据类型。

以下是数值类型

数据类型大小说明对应Java类型
BIT[ (M) ]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean对应BIT,此时默认是1位,即只能存0和1
TINYINT1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGINT8字节Long
FLOAT(M, D)4字节单精度,M指定长度,D指定小数位数。会发生精度丢失Float
DOUBLE(M,D)8字节Double
DECIMAL(M,D)M/D最大值+2双精度,M指定长度,D表示小数点位数。精确数值BigDecimal
NUMERIC(M,D)M/D最大值+2和DECIMAL一样BigDecimal

这里我们也展开说说:

首先是前面这几个数据类型:也就是下面这几个

这几个就是整形的一些范围不同的几个类型,具体大家应该也了解过,如果还没有了解过这些类型的取值范围,以及一些细节的同学,可以先看一下这篇博客:⭐变量与数据类型详解

然后是下面的浮点型float和double,这里比Java中多了两个参数,就是这里面的M和D,M指定长度,D指定小数位数。与此同时,我们这里有一个更好的表示小数的类型:decimal,decimal能够精确的表示小数。

为什么说是更好的呢?因为平时提到的float和double都是基于IEEE 754标准的,基于这套规则最大的问题就是对有些数字,不能精确的表示一个小数,比如在钱的方面,17.0000000002万亿,存储可能是17.0,并且float/double不能直接用==来比较,而要做差判断是否小于预期的误差范围。

这里讲一下decimal的例子:decimal(3,1)就表示这个数据类型是小数的,而且有效位数是三位,小数点后面一位。

然后是字符串类型

数据类型大小说明对应java类型
VARCHAR (SIZE)0-65,535字节可变长度字符串String
TEXT0-65,535字节长文本数据String
MEDIUMTEXT0-16 777 215字节中等长度文本数据String
BLOB0-65,535字节二进制形式的长文本数据byte[ ]

对于字符串类型,我们基本上都用varchar,后面有一个size变量,根据实际情况来指定要占用多少空间,可以为我们节省空间,或者是是增大空间利用率。

比如:varchar(50)就是申请50个字符。

以及一个日期类型

数据类型大小说明对应java类型
DATETIME8字节范围从1000到9999年,不会进行时区的检索及转换。java.util.Date、java.sql.Timestamp
TIMESTAMP4字节范围从1970到2038年,自动检索当前时区并进行转换java.util.Date、java.sql.Timestamp

那么具体怎么用呢?我们来举个例子大家就懂啦:

//创建一个叫student的表,里面包含学号和姓名
mysql> create table student (id int, name varchar(20));
Query OK, 0 rows affected (0.01 sec)

//创建一个叫grade的表,里面包含名字,数学成绩,和考试时间
mysql> create table grade(name varchar(20),math decimal(3,1),exam_time datetime);
Query OK, 0 rows affected (0.01 sec)

为了更好的理解,我们用下面的图来演示:

2.查看表结构

实际上就是一个简单的语法,然后要创建的时候需要注意创建的类型,就完全没问题啦。然后我们有时候可能创建了之后不知道自己创建了啥,或者说在往表里面添加数据的时候不记得这个表定义的字段是啥类型了,就可以用这个命令查看表结构

desc [表名]//查看表结构

比如说上面的图中创建的grade的表,我们就可以用desc grade查看啦,从这里我们就可以知道这个表的name对应的是varchar(20)的类型,math是decimal的类型,exam_time是datetime的类型:

mysql> desc grade;
+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| name      | varchar(20)  | YES  |     | NULL    |       |
| math      | decimal(3,1) | YES  |     | NULL    |       |
| exam_time | datetime     | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

3.删除表

那么知道了创建表的下一步是什么?马上往表里面放数据,存储数据?不不不,我们会创建当然得先会删除,注意!这里删随便删,因为我们的数据并不重要,只是创建学习,但是到了工作或者重要的数据,可不要乱删了,你实在手瘾就现在多创多删点哈哈哈。

drop table [表名]//删除表

删除表就很简单的一个命令,就删除表加上表名就ok啦:

mysql> drop table grade;
Query OK, 0 rows affected (0.01 sec)

五、MySQL中的注释

在很多编程和代码中,我们通常有时候忘记自己写这玩意干嘛来了,所以会添加一些注释,注释就是不影响代码的正常运行又可以在旁边提醒我们这一部分代码在干嘛,在MySQL中,可以通过以下方式添加注释:

✅1.单行注释:使用"--"符号进行单行注释。例如:

create table student (id int, name varchar(20)); -- 这里就是注释啦

✅2.多行注释:使用"/* */"符号进行多行注释。例如:

create table student (id int, name varchar(20));/*
这里也是注释啦,可以在这里乱写乱画(bushi)
create table student (id int, name varchar(20));
*/

✅3.表注释:在创建表时,可以在CREATE TABLE语句中使用comment关键字添加表注释。例如:

Copy CodeCREATE TABLE table_name (
    id INT PRIMARY KEY,
    name VARCHAR(50)
) comment '没错我就是注释';

​ 4.字段注释:在创建表时,在定义字段时也可以使用comment关键字添加字段注释。例如:

create table student (
    id int comment '是的我是注释',
    name varchar(50) comment '我还可以在这里注释'
);

通过添加注释,可以提高SQL语句的可读性和可维护性。


这就是本篇如何速通MySQL第一部分的全部内容啦,接下来还有两个部分,带你速通MySQL。欢迎关注。一起学习,共同努力!

还有一件事:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“AI孙燕姿”爆火背后,是内容合规问题的再次升级|上云那些事

“讽刺的是,人类再怎么快也无法超越它。”这是歌手孙燕姿关于自己AI分身遍布网络一事,在MAKE MUSIC网站的博客上发表的看法。 来源:孙燕姿MAKE MUSIC网站博客 当大家还在担心AIGC会不会让自己失业时,歌手孙燕姿就因为“AI孙燕姿”…

LDA算法实现鸢尾花数据集降维

目录 1. 作者介绍2. LDA降维算法2.1 基本概念2.2 算法流程 3. LDA算法实现3.1 数据集介绍3.2 代码实现3.3 结果展示 1. 作者介绍 唐杰,男,西安工程大学电子信息学院,2022级研究生 研究方向:机器视觉与人工智能 电子邮件&#xff…

深度学习笔记(八)——语义分割标注转换

核心思想:“将颜色转换成对应的标号” 形式一:Json格式的标注转换成调色板mask 形式二:RGB类型mask(24位三通道)转成调色板mask(8位单通道),调色板的格式为.png 形式三:对于二分类的…

oracle安装

服务端安装(公司中不需要,只安装客户端就行) 1、挂载一个Windows系统 双击vmx文件 启动 2、网络配置 添加一个网络 自己电脑看控制面板是否添加虚拟网卡 查看连接的网络,ip地址不能为1,为1就自己修改,…

深度剖析:C++内存池的设计与实现

深度剖析:C内存池的设计与实现 一、引言(Introduction)1.1 内存管理的重要性1.2 内存池的基本概念1.3 内存池的应用场景 二、C内存管理机制(C Memory Management Mechanism)2.1 C内存分配与释放2.2 C内存管理的问题2.3…

《Kali渗透基础》04. 主动信息收集(一)

kali渗透 1:主动信息收集2:发现3:二层发现3.1:arping3.2:nmap3.3:netdiscover3.4:Scapy 4:三层发现4.1:ping4.2:Scapy4.3:nmap4.4:fpi…

Win2016服务器DNS服务搭建

文章目录 前言一、什么是DNS?1.为什么需要DNS系统2.为DNS(Domain Name System,域名系统)的功能3.域名解决方案的演进 二、域名介绍1.域名空间结构2.常见的顶级域名 三、DNS解析原理1.查询过程及方式2.DNS的查询分类 四、配置DNS服…

【论文精读】ICLR2022 - 语言驱动的语义分割

【论文精读】ICLR2022 - 语言驱动的语义分割 【论文原文】:LANGUAGE-DRIVEN SEMANTIC SEGMENTATION 【作者信息】:Boyi Li Cornell University, Cornell Tech Kilian Q. Weinberger Cornell University Serge Belongie University of Copenhagen Vladl…

2023年试用uniapp、vue2、vue3、typescript、vite、nvue

1. 前言 试用了一下 uniapp、vue2、vue3、typescript、vite、nvue 等技术,写了两个页面,两个页面加起来不到400行代码。 尝试使用了四种组合: 组合1:uniapp vue2 JavaScript nvue文件 非fast模式 组合2:uniapp…

【C++系列Pn】模板搞不懂,脑阔抖三抖(精讲模板,快来复习趴)

前言 大家好吖,欢迎来到 YY 滴 C系列 ,热烈欢迎!本章主要内容面向接触过C的老铁,主要内容含 目录 一.模板 1.函数模板 一.函数模板概念 二.函数模板的格式 三.函数模板的实例化 1.隐式实例化 2.显式实例化 3.模板参数的…

数据库的简介

文章目录 前言一、为什么需要数据库二、数据库基本概念1.什么是数据库2.什么是数据库管理系统3.数据库表4.数据库表 三、常见的数据库管理系统 前言 数据库的简介 一、为什么需要数据库 信息时代数据容量海量增长,结构化存储大量数据,便于高效的检索和…

如何在华为OD机试中获得满分?Java实现【区块链文件转储系统】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

完全详解权限系统设计方案

1 为什么需要权限管理 日常工作中权限的问题时时刻刻伴随着我们,程序员新入职一家公司需要找人开通各种权限,比如网络连接的权限、编码下载提交的权限、监控平台登录的权限、运营平台查数据的权限等等。 在很多时候我们会觉得这么多繁杂的申请给工作带…

【JavaSE】Java基础语法(十五):继承

文章目录 1. 继承的实现2. 继承的好处和弊端3. Java中继承的特点4. 继承中的成员访问特点5. super6. 继承中构造方法的访问特点7. 继承中成员方法的访问特点8. super内存图9. 方法重写10. 权限修饰符 1. 继承的实现 继承的概念 继承是面向对象三大特征之一,可以使得…

G0第23章 :gorm介绍、模型定义、连接数据库

01 GORM介绍 https://gorm.io/zh_CN/docs/ gorm是一个使用Go语言编写的ORM框架。它文档齐全,对开发者友好,支持主流数据库。 特性 全功能 ORM关联 (Has One,Has Many,Belongs To,Many To Many,多态&…

SentinelResource配置

1.SentinelResource配置(上) 1.1.按资源名称限流 后续处理 1.1.1.启动Nacos成功 1.1.2.启动Sentinel成功 1.1.3.添加控制器 import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockExc…

2023-05-26:golang关于垃圾回收和析构函数的选择题,多数人会选错。

2023-05-26:golang关于垃圾回收和析构的选择题,代码如下: package mainimport ("fmt""runtime""time" )type ListNode struct {Val intNext *ListNode }func main0() {a : &ListNode{Val: 1}b : &Li…

使用Jmeter进行http接口性能测试

在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。 但是Postman只能模拟单客户端的单次请求,而对于模拟多用户并发等性能测试&#xf…

Linux入门笔记

Linux 1.概述 2.命令 1.常用命令 新建文件 touch 新建目录 mkdir Linux命令格式⭐️ 选项可以对命令具体控制 2.文件目录操作 1.ls ll命令用的很多 显示出非隐藏文件的详细信息 2.cd ~表示当前用户目录,如root用户目录 \表示根目录 3.查看命令 1.cat查看命令 -n…

【Python爬虫项目实战四】Chatgpt国内接口分享第一期

目录 🍇前言接口一接口二(免费学习测试 wuguokai)接口三(AI文本工具站)🍇前言 前几次分享的py接口,由于不经常维护导致你们下载的时候已经失效了,为了回馈粉丝,昨晚我想实在不行我就弄个接口出来吧,我自己维护,有问题咱们就在评论下方留言,我及时做更新处理就可…