MySQL数据库基础

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL数据库基础

从本篇起就又要开始新的篇章了,数据结构初级阶段的就告一段落了,等把后面的JavaEE初级阶段学习完,又会回到数据结构进阶部分。

本章开始就是主打MySQL了。

MySQL是个啥?其实就是个数据库,那么数据库又是个啥?

首先来介绍以下什么是数据库。


数据库介绍


什么是数据库

数据库简单来说就是用来存储文件的,如何存储又要牵扯到很多这里就不展开了,可以参考:

数据库发展史 - 知乎 (zhihu.com)

随着时代的发展,大部分数据都是存储在文件当中的,那为什么还要弄个数据库?

对比以下优缺点:


文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

数据库中的数据一般存储在内存和磁盘中。


数据库的分类


数据库大体可以分为 关系型数据库 和 非关系型数据库


  • 关系型数据库(RDBMS):是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。基于标准的SQL,只是内部一些实现有区别。常用的关系型数据库如:


  1. Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系统。收费。
  2. MySQL:属于甲骨文,不适合做复杂的业务。开源免费。
  3. SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。


  • 非关系型数据库(了解):不规定基于SQL实现。现在更多是指NoSQL数据库,如:
  1. 基于键值对(Key-Value):如 memcached、redis
  2. 基于文档型:如 mongodb
  3. 基于列族:如 hbase
  4. 基于图型:如 neo4j

关系型数据库与非关系型数据库的 区别:



关系数据库
非关系型数据库
使用SQL 不强制要求,一般不基于SQL实现
事务支持 支持 不支持
复杂操作 支持 不支持
海量读写操作 效率低 效率高
基本结构 基于表和列,结构固定 灵活性比较高
使用场景 业务方面的OLTP系统 用于数据的缓存、或基于统计分析的OLAP系统


关于数据库如何安装等等,我这里就不过多介绍了,我直接抄一篇博客,链接如下:


Windows安装mysql详细步骤(通俗易懂,简单上手)_华夏之威的博客-CSDN博客

https://blog.csdn.net/weixin_43423484/article/details/124408565


而我们主要学习的就是MySQL,因为它开源,免费!!!

接下来开始进入正题,数据库如何操作的。


1. 数据库的操作


MySQL服务器中的数据库可以有很多个,分别存储不同的数据,想要将数据存储到数据库中,首先要创建一个数据库,我们来看看如何创建一个数据库:


创建数据库


首先登陆我们的数据库:

b70afa604ae240d48a103cba2792fd54.png

第二步创建一个数据库,语法格式:


create database 【数据库名称】【库选项】


947a7d0083b34078b2807b3464b54d20.png

库选项主要就一些字符集,引擎什么的,这里就不多介绍,需要的话可以去查。

java就是数据库名称,字符集设置为utf-8 后面添加数据时,就可以添加汉字了。


显示数据库


既然创建了,我们可以查看我们创建的数据库是否存在MySQL服务器中,语法格式如下:

show databases;

06861aa0d1534ace9eaaf749a611a72e.png


java雀氏已经存在了,里面有的是我自己创建的,也有是系统自带的。

使用数据库

既然创建了,那就来用用看,语法格式如下:

use 数据库名称;


295ed32312794f9e8eac766ba722e72d.png


数据中系统提示的很多单词相信大家都认识,我也就不介绍了。

这样我们就进入到了java这个库中了,我们再来看看库中有些啥:


690f2be0dd3f4817ae30eb58dd3607d7.png


嘿嘿,啥也没有。


删除数据库


这一步操作非常危险啊,除非有需要,不然千万不要进行这一步操作,不然小手一点,分分钟让老板损失上百万;但是我们的数据库啥也没有,我们一次性删爽来。


语法格式如下:

drop database 数据库名称;


8998bd44859246269a24684bb586d828.png


再来看看,服务器中是否还存在;


2a18839855ae4e2998efe9510506153c.png


只有10行了,雀氏删除成功了;还是得提醒以下,千万不要手欠删库啊,分分钟丢失工作

2. 表的操作


我们先前创建了一个数据库名叫java的,库中的内容啥也没有;数据库中存放的就是表了,emoty 指的就是表,所以这一部分就是如何去创建表。


创建表

语法格式:

create table 表名( 字段名 字段类型(属性), 字段名 字段类型(属性),.......)【表选项】

这里面的我们一 一来解释,表选项和前面的一样,也是指字符集,存储引擎,校对集。

字段名就是指表的列名;字段类型就是指数据类型;

属性指的是对字段的某些约束条件等等。

我们拿个图来看看:


392a8c7c5def4f8896c14822c2c9fd8f.png


从左往右开始,Field 和 Type 翻译 过来就知道是字段和类型的意思;

Null 确定该字段是否为空,Key指的是索引类型;Default 指的是默认值; Extra 表示扩充

其实可以直接翻译以下就懂了。

这里涉及到查看表结构的语法:


desc 表名;desc 对应的单词就是description 【后面还有一个关键字也是desc】

删除表

有创建就有删除,对应的语法如下:

drop table 表名 ;


类似于删库,好吧就是一个语法。


同样删表也是个非常危险的操作,除非有需要不然不要轻易尝试,分分钟离职;蹭现在我们删爽来:


934b6d68a30c4ea6981c09ae708fd7c7.png


这就ok了,还是提醒以下啊,千万不要手欠删表,不然真的就g了。

一天一个离职小技巧 ~~

介绍了创建表和删除表,但是我们还是没有开始插入数据,在讲插入数据之前我们得对数据类型进行一个了解:


3. 常用数据类型


无论数据类型,都得贴近我们的生活,不会太离谱,本身数据库的目的就是存储数据的,正常而言数据就那么几中类型;和Java、C一样 都是有整型的浮点型的,但是还是略有区别的。

从整型和浮点型开始介绍


整型和浮点型:

数据类型 大小 说明 对应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



当然啦,MySQL和c语言类似,数值类型可以指定为无符号(unsigned),表示不取负数。

如果当我们int都存不下去了,就换一个类型,没必要去纠结使用unsigned 和 signed ,signed都存不下去,unsigned 大概率也存不下去。


字符串类型


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


这没什么好介绍的,就只需要认识一个 blob 是存储二进制的;要用到时,百度即可。


日期类型


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


和字符串一样,不会比较,不会添加,没关系,要用时直接百度。

等会我也来演示以下。

到现在,我们就可以开始进行插入数据了。


插入数据

语法格式:

insert into 表名 value(值1,值2......);【单行插入】

insert into 表名 values(值1,值2......),(值1,值2......);【多行插入】


我们用多行插入的语法去插入一行记录也是可以滴!

示例:

f3be6597530947e68b2afee64a38a0f0.png


一行插入没问题,我们再来看看多行插入:


882f12c387684490bdfe9508d2908b46.png


既然插入欧克,那么我们再来看看服务器中是否已经存在我们添加的数据:

查询数据

语法格式:

select * from 表名;【这是全列查询】


这种查询,真正工作时,并不推荐,公司里的数据不同于我们自己写的,他们可能动则就上几十万条数据,我们一查带宽直接崩了,所以这条查询语句也非常危险!!

我们来看看结果如何:


c3f7857c732541b29095908fde4957b6.png


的确能够查询出表中的数据!

当然,还有其他很多查询语句,今天就先到这里,其他的留给后面再细说,本章就到此为止,先对MySQL有部分的了解!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础与实战应用
MySQL数据库基础与实战应用
49 0
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据库基础
MySQL数据库基础
|
3月前
|
关系型数据库 MySQL Linux
数据库学习-Mysql数据库安装
数据库学习-Mysql数据库安装
67 0
|
4月前
|
关系型数据库 MySQL 数据库
一文带你了解MySQL数据库基础
一文带你了解MySQL数据库基础
43 1
|
6月前
|
关系型数据库 MySQL 数据库
MySQL数据库的设计
MySQL数据库的设计
|
8月前
|
存储 关系型数据库 MySQL
MYSQL数据库学习(二)
MYSQL数据库学习
52 0
|
9月前
|
SQL 关系型数据库 MySQL
2.MySQL数据库基础
2.MySQL数据库基础
50 0
|
SQL 关系型数据库 MySQL
MySQL数据库的基础练习(上)
MySQL数据库的基础练习(上)
138 0
MySQL数据库的基础练习(上)
|
关系型数据库 MySQL 数据库
MySQL数据库的基础练习(下)
MySQL数据库的基础练习(下)
173 0
MySQL数据库的基础练习(下)
|
存储 SQL 缓存
MySQL数据库系列(一)------基础
数据不会随程序结束而消失
133 0
MySQL数据库系列(一)------基础