MySQL数据库基础

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 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有部分的了解!

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
7月前
|
人工智能 安全 搜索推荐
SecMulti-RAG:兼顾数据安全与智能检索的多源RAG框架,为企业构建不泄密的智能搜索引擎
本文深入解析SecMulti-RAG框架,该框架通过整合企业内部知识库、预构建专家知识及受控外部大语言模型,结合保密性过滤机制,解决企业在部署AI助手时面临的信息准确性、数据安全性和成本控制问题。它采用多层策略,利用三种知识来源(动态更新的企业知识、专家预写知识和按需外部知识),并通过微调的开源LLM生成最终响应,确保安全性与性能。实验表明,SecMulti-RAG在汽车行业技术报告生成任务中显著优于传统RAG系统,展现了其在企业环境中的实用性和优势。
277 5
SecMulti-RAG:兼顾数据安全与智能检索的多源RAG框架,为企业构建不泄密的智能搜索引擎
|
6月前
|
人工智能 前端开发 算法
【CodeBuddy】三分钟开发一个实用小功能之:弹跳球物理实验
CodeBuddy是一款革命性的AI编程工具,以其高效、精准和智能的特点深受开发者青睐。它能快速生成高质量代码,简化复杂逻辑构建,如弹跳球物理小游戏项目中展现的HTML、CSS与JavaScript完美结合。CodeBuddy支持持续学习进化,降低编程门槛,激发创新潜力,让初学者轻松上手,助力资深开发者实现创意。通过智能化代码生成与多样化功能,CodeBuddy正重新定义编程体验。
159 0
【CodeBuddy】三分钟开发一个实用小功能之:弹跳球物理实验
|
9月前
|
机器学习/深度学习 算法 计算机视觉
RT-DETR改进策略【Conv和Transformer】| 2024 AssemFormer 结合卷积与 Transformer 优势,弥补传统方法不足
RT-DETR改进策略【Conv和Transformer】| 2024 AssemFormer 结合卷积与 Transformer 优势,弥补传统方法不足
154 1
RT-DETR改进策略【Conv和Transformer】| 2024 AssemFormer 结合卷积与 Transformer 优势,弥补传统方法不足
|
Prometheus 监控 Java
深入探索:自制Agent监控API接口耗时实践
在微服务架构中,监控API接口的调用耗时对于性能优化至关重要。通过监控接口耗时,我们可以识别性能瓶颈,优化服务响应速度。本文将分享如何自己动手实现一个Agent来统计API接口的调用耗时,提供一种实用的技术解决方案。
430 3
|
弹性计算 安全 小程序
编程之美:Python让你领略浪漫星空下的流星雨奇观
这段代码使用 Python 的 `turtle` 库实现了一个流星雨动画。程序通过创建 `Meteor` 类来生成具有随机属性的流星,包括大小、颜色、位置和速度。在无限循环中,流星不断移动并重新绘制,营造出流星雨的效果。环境需求为 Python 3.11.4 和 PyCharm 2023.2.5。
541 9
|
前端开发 Java 应用服务中间件
一文讲明SpringMVC 【爆肝整理一万五千字】
文章提供了一份全面的SpringMVC教程,涵盖了SpringMVC的简介、创建实例、注解、获取请求参数的不同方式、域对象共享数据、视图渲染、RESTful风格、拦截器使用、异常处理以及文件上传下载等内容,并包含了相应的代码示例和测试结果。
一文讲明SpringMVC 【爆肝整理一万五千字】
|
网络协议 算法 数据库
OSPF 与 BGP 的互操作性:构建复杂网络的通信桥梁
OSPF 与 BGP 的互操作性:构建复杂网络的通信桥梁
456 0
|
数据采集 数据可视化 数据挖掘
基于Django的数据分析可视化系统,有后台,有增删改查,实现多用户登录
本文介绍了一个基于Django框架开发的今日头条数据分析可视化系统,该系统具备后台管理、增删改查功能以及多用户登录,利用数据可视化技术为新闻媒体行业提供数据管理和决策支持。
341 0
基于Django的数据分析可视化系统,有后台,有增删改查,实现多用户登录
|
缓存 安全 调度
代理服务器如何保护用户隐私和安全?
Python搭建代理IP池实现接口设置与整体调度
387 10
|
网络协议 Shell Linux
【Shell 命令集合 系统管理 】Linux 查询域名的注册信息 whois命令 使用指南
【Shell 命令集合 系统管理 】Linux 查询域名的注册信息 whois命令 使用指南
420 1