📌前言:本篇博客介绍如何速通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 | 采用了分布式列存储,适用于数据仓库、搜索引擎、日志分析 |
以上三种数据库都叫非关系型数据库,功能相比于关系型数据库要少一些,但是性能更高,同时适用于当下大数据分布式的时代背景,引入了多台机器,相互配合功能存储和管理这样的一份数据。
那么有人就会问了,哎关系型数据库和非关系型数据库有什么区别啊?我们可以从下面三个方面去了解他们的区别:
💡关系型数据库和非关系型数据库的区别:
- 数据结构:关系型数据库采用表格的形式来存储数据,每个表格包含多个行和列。每个列定义了一个特定的数据类型和约束规则。而非关系型数据库则可以采用各种不同的数据结构,例如键值对、文档、图形等。
- 应用场景:关系型数据库主要适用于需要处理结构化数据的应用场景,例如银行、医疗、金融等传统领域。非关系型数据库则更适合处理大规模、高并发、非结构化数据的场景,例如社交网络、日志分析、物联网等。
- 特性和实现:关系型数据库通常具有严格的数据模型和 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 |
TINYINT | 1字节 | Byte | |
SMALLINT | 2字节 | Short | |
INT | 4字节 | Integer | |
BIGINT | 8字节 | 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 |
TEXT | 0-65,535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[ ] |
对于字符串类型,我们基本上都用varchar,后面有一个size变量,根据实际情况来指定要占用多少空间,可以为我们节省空间,或者是是增大空间利用率。
比如:varchar(50)
就是申请50个字符。
以及一个日期类型:
数据类型 | 大小 | 说明 | 对应java类型 |
---|---|---|---|
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换。 | java.util.Date、java.sql.Timestamp |
TIMESTAMP | 4字节 | 范围从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。欢迎关注。一起学习,共同努力!
还有一件事: