【JaveWeb教程】(17) MySQL数据库开发之 MySQL简介、安装、数据类型、SQL通用语法 详细代码示例讲解

目录

    • 前言
    • 1. MySQL概述
      • 1.1 安装
        • 1.1.1 版本
        • 1.1.2 安装
        • 1.1.3 连接
        • 1.1.4 企业使用方式(了解)
      • 1.2 数据模型
      • 1.3 SQL简介
        • 1.3.1 SQL通用语法
        • 1.3.2 分类

在这里插入图片描述

前言

在我们讲解SpringBootWeb基础知识(请求响应案例)的时候,我们讲到在web开发中,为了应用程序职责单一,方便维护,我们一般将web应用程序分为三层,即:Controller、Service、Dao 。

之前我们的案例中,是这样子的请求流程:浏览器发起请求,先请求Controller;Controller接收到请求之后,调用Service进行业务逻辑处理;Service再调用Dao,Dao再解析user.xml中所存储的数据。

在这里插入图片描述

xml文件中可以存储数据,但是在企业项目开发中不会使用xml文件存储数据,因为不便管理维护,操作难度大。 在真实的企业开发中呢,都会采用数据库来存储和管理数据,那此时,web开发调用流程图如下所示:

在这里插入图片描述

首先来了解一下什么是数据库。

  • 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。

像我们日常访问的电商网站京东,企业内部的管理系统OA、ERP、CRM这类的系统,以及大家每天都会刷的头条、抖音类的app,那这些大家所看到的数据,其实都是存储在数据库中的。最终这些数据,只是在浏览器或app中展示出来而已,最终数据的存储和管理都是数据库负责的。

在这里插入图片描述

数据是存储在数据库中的,那我们要如何来操作数据库以及数据库中所存放的数据呢?

那这里呢,会涉及到一个软件:数据库管理系统(DataBase Management System,简称DBMS)

  • DBMS是操作和管理数据库的大型软件。将来我们只需要操作这个软件,就可以通过这个软件来操纵和管理数据库了。

此时又出现一个问题:DBMS这个软件怎么知道要操作的是哪个数据库、哪个数据呢?是对数据做修改还是查询呢?

  • 需要给DBMS软件发送一条指令,告诉这个软件我们要执行的是什么样的操作,要对哪个数据进行操作。而这个指令就是SQL语句

SQL(Structured Query Language,简称SQL):结构化查询语言,它是操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准。我们学习数据库开发,最为重要的就是学习SQL语句 。

关系型数据库:我们后面会详细讲解,现在大家只需要知道我们学习的数据库属于关系型数据库即可。

在这里插入图片描述

结论:程序员给数据库管理系统(DBMS)发送SQL语句,再由数据库管理系统操作数据库当中的数据。

了解了数据库的一些简单概念之后,接下来我们再来介绍下目前主流的数据库,这里截取了排名前十的数据库:

在这里插入图片描述

  • Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。(通常是不差钱的公司会选择使用这个数据库)
  • MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。目前Oracle推出两个版本的Mysql:社区版(开源免费)、商业版(收费)。
  • SQL Server:Microsoft 公司推出的收费的中型数据库,C#、.net等语言常用。
  • PostgreSQL:开源免费的中小型数据库。
  • DB2:IBM公司的大型收费数据库产品。
  • SQLLite:嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。
  • MariaDB:开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品,与MySQL数据库有很好的兼容性。

那这么多数据库,我们全部都需要学习吗,其实并不用,我们只需要学习其中的一个就可以了,我们此次课程中学习的数据库是现在互联网公司开发使用最为流行的MySQL数据库。

此时大家可能会有一个疑问,我们现在学习的是Mysql数据库,我们以后去公司做开发,如果用到的是Oracle数据库或SQL Server数据库该怎么办?其实大家完全不用担心这个问题,因为这些数据库都是属于关系型数据库,要操作关系型数据库都是通过 SQL语句来实现的,而SQL语句又是操作关系型数据库的统一标准。

结论:只要我们学会了SQL语句,就可以通过SQL语句来操作Mysql,也可以通过SQL语句来操作Oracle或SQL Server

课程内容安排:

在这里插入图片描述

以上课程内容拆解为3部分知识点:

在这里插入图片描述

接下来我们就先进入到第一天的Mysql概述学习。

1. MySQL概述

在这里插入图片描述

官网:https://dev.mysql.com/

1.1 安装

1.1.1 版本

MySQL官方提供了两个版本:

  • 商业版本(MySQL Enterprise Edition)

    • 该版本是收费的,我们可以使用30天。 官方会提供对应的技术支持。
  • 社区版本(MySQL Community Server)

    • 该版本是免费的,但是MySQL不会提供任何的技术支持。

本课程,采用的是MySQL的社区版本(8.0.31)

1.1.2 安装

官网下载地址:https://downloads.mysql.com/archives/community/

在这里插入图片描述

这个安装包呢,大家可以不用下载,因为资料中已提供现成的安装包。 在这里插入图片描述

安装MySQL具体的步骤,参考资料中提供的 《MySQL安装文档》 ,进行软件的安装即可。

1.1.3 连接

MySQL服务器启动完毕后,然后再使用如下指令,来连接MySQL服务器:

mysql -u用户名 -p密码 [-h数据库服务器的IP地址 -P端口号]

-h 参数不加,默认连接的是本地 127.0.0.1 的MySQL服务器

-P 参数不加,默认连接的端口号是 3306

上述指令,可以有两种形式:

  • 密码直接在-p参数之后直接指定 (这种方式不安全,密码直接以明文形式出现在命令行)

在这里插入图片描述

  • 密码在-p回车之后,在命令行中输入密码,然后回车

在这里插入图片描述

1.1.4 企业使用方式(了解)

上述的MySQL服务器我们是安装在本地的,这个仅仅是在我们学习阶段,在真实的企业开发中,MySQL数据库服务器是不会在我们本地安装的,是在公司的服务器上安装的,而服务器还需要放置在专门的IDC机房中的,IDC机房呢,就需要保证恒温、恒湿、恒压,而且还要保证网络、电源的可靠性(备用电源及网络)。

在这里插入图片描述

那我们要想使用服务器上的这台MySQL服务器,就需要在我们的电脑上去远程连接这台MySQL。 而服务器上安装的MySQL数据库呢,并不是你一个人在访问,我们项目组的其他开发人员也是需要访问这台MySQL的。

在这里插入图片描述

我们在学习阶段,如果想提前体验一下企业中数据库的使用方式,可以借助于VMware虚拟机来实现。我们可以在我们的电脑上安装一个VMware,然后在Vmware虚拟机上在安装一个服务器操作系统Linux,然后再在Linux服务器上安装各种企业级软件。

在这里插入图片描述

接下来,就来演示一下,通过MySQL的客户端命令行,如何来连接服务器上部署的MySQL :

mysql -u用户名 -p密码 [-h数据库服务器的IP地址 -P端口号]

在这里插入图片描述

1.2 数据模型

介绍完了Mysql数据库的安装配置之后,接下来我们再来聊一聊Mysql当中的数据模型。学完了这一小节之后,我们就能够知道在Mysql数据库当中到底是如何来存储和管理数据的。

在介绍 Mysql的数据模型之前,需要先了解一个概念:关系型数据库。

关系型数据库(RDBMS)

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

而所谓二维表,指的是由行和列组成的表,如下图:

在这里插入图片描述

二维表的优点:

  • 使用表存储数据,格式统一,便于维护

  • 使用SQL语言操作,标准统一,使用方便,可用于复杂查询

我们之前提到的MySQL、Oracle、DB2、SQLServer这些都是属于关系型数据库,里面都是基于二维表存储数据的。

结论:基于二维表存储数据的数据库就成为关系型数据库,不是基于二维表存储数据的数据库,就是非关系型数据库(比如大家后面要学习的Redis,就属于非关系型数据库)。

2). 数据模型

介绍完了关系型数据库之后,接下来我们再来看一看在Mysql数据库当中到底是如何来存储数据的,也就是Mysql 的数据模型。

MySQL是关系型数据库,是基于二维表进行数据存储的,具体的结构图下:
在这里插入图片描述

  • 通过MySQL客户端连接数据库管理系统DBMS,然后通过DBMS操作数据库
  • 使用MySQL客户端,向数据库管理系统发送一条SQL语句,由数据库管理系统根据SQL语句指令去操作数据库中的表结构及数据
  • 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录。

在Mysql数据库服务器当中存储数据,你需要:

  1. 先去创建数据库(可以创建多个数据库,之间是相互独立的)
  2. 在数据库下再去创建数据表(一个数据库下可以创建多张表)
  3. 再将数据存放在数据表中(一张表可以存储多行数据)

1.3 SQL简介

SQL:结构化查询语言。一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。

在学习具体的SQL语句之前,先来了解一下SQL语言的语法。

1.3.1 SQL通用语法

1、SQL语句可以单行或多行书写,以分号结尾。

在这里插入图片描述

2、SQL语句可以使用空格/缩进来增强语句的可读性。

在这里插入图片描述

3、MySQL数据库的SQL语句不区分大小写。

在这里插入图片描述

4、注释:

  • 单行注释:-- 注释内容 或 # 注释内容(MySQL特有)
  • 多行注释: /* 注释内容 */

以上就是SQL语句的通用语法,这些通用语法大家目前先有一个直观的认识,我们后面在讲解每一类SQL语句的时候,还会再来强调通用语法。

1.3.2 分类

SQL语句根据其功能被分为四大类:DDL、DML、DQL、DCL

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

搜索与图论第一期 DFS(深度优先搜索)

前言 DFS这部分难度不大,大家应该完全掌握!!! 一、DFS的基本内容 内容: 深度优先遍历图的方法是,从图中某顶点v出发: (1)访问顶点v; (2&#…

Element Plus 离线手册 下载

Element Plus (Vue3) 离线手册,解压就能用,双击运行,浏览器访问 http://localhost:7011 获取方式:原文关注微信公众号,回复消息:7011ELP Element Plus 离线手册 下载Vue3 Element Plus 离线手册 离线文档 …

【教学类-45-05】X-Y之间的三连加减题混合 (横向排列)(44格:11题“++ ”11题“--”11题“ +-”11题“ -+” )

作品展示: 背景需求: 把以下四款3连题 混在一起,每种题目随机抽取11题,一共44格 【教学类-45-02】X-Y之间的“三连减“题(a-b-c)-CSDN博客文章浏览阅读465次,点赞15次,收藏7次。【教学类-45-02】X-Y之间的…

【算法】最佳牛围栏(二分,前缀和,双指针)

题目 农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于 1 头,也不会超过 2000 头。 约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的牛的数量的平均值达到最大。 围起区域内…

Apache ActiveMQ RCE CNVD-2023-69477 CVE-2023-46604

漏洞简介 Apache ActiveMQ官方发布新版本,修复了一个远程代码执行漏洞,攻击者可构造恶意请求通过Apache ActiveMQ的61616端口发送恶意数据导致远程代码执行,从而完全控制Apache ActiveMQ服务器。 影响版本 Apache ActiveMQ 5.18.0 before …

java基础之Java8新特性-Optional

目录 1.简介 2.Optional类常用方法 3.示例代码 4.示例代码仓库地址 1.简介 Java 8引入了一个重要的新特性,即Optional类。Optional类是为了解决空指针异常而设计的。 在Java中,当我们尝试访问一个空对象的属性或调用其方法时,很容易抛出…

【sklearn练习】模型评估

一、交叉验证 cross_val_score 的使用 1、不用交叉验证的情况: from __future__ import print_function from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifieriris…

centos7下升级nginx1.8.0版本到nginx1.25.3版本

1、指定目录下载安装包 wget http://nginx.org/download/nginx-1.25.3.tar.gz 2、重命名老版本nginx目录 cd /usr/local/ mv nginx nginx_1.8.0 3、解压更新版本的压缩包 tar -zxvf nginx-1.25.3.tar.gz 4、进入nginx安装包目录下执行如下命令检测系统环境 --with-stream: 添…

Citrix思杰虚拟桌面离场,国产云桌面是否应继续对接微软Windows AD域?

2023年,12月3日,Citrix(思杰)全面退出中国市场。Citrix进入中国市场时,定位是大客户、高价值企业,客户群集中在国企、大型制造业、外资、金融等中大型企业,例如华为、中国移动、平安银行、建设银…

【Python】编程练习的解密与实战(二)

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《Python | 编程解码》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 ​ 目录 🪐1. 初识Python …

【IC设计】ICer‘s 乾坤大挪移——FSM状态机

目录 理论解读写几段式状态机? 设计实战两种state的FSM(异步复位) 理论解读 写几段式状态机? 设计实战 两种state的FSM(异步复位) 实现下图所示的摩尔状态机,复位为异步复位。 代码实现&am…

【笔记】书生·浦语大模型实战营——第三课(基于 InternLM 和 LangChain 搭建你的知识库)

【参考:tutorial/langchain at main InternLM/tutorial】 【参考:(3)基于 InternLM 和 LangChain 搭建你的知识库_哔哩哔哩_bilibili-【OpenMMLab】】 笔记 基础作业 这里需要等好几分钟才行 bug: 碰到pandas相关报错就卸载重装 输出文字…

c语言实现HashTable

概念:哈希表是一种数据结构,它通过将键映射到数组的某个位置来存储和检索值。 第一步,首先定义节点 typedef struct Node {char *key;int value;struct Node *next; } Node; 这里,我定义的键是字符,value是整数。 …

赋能智慧农业生产,基于YOLOv7开发构建农业生产场景下油茶作物成熟检测识别系统

AI赋能生产生活场景,是加速人工智能技术落地的有利途径,在前文很多具体的业务场景中我们也从实验的角度来尝试性地分析实践了基于AI模型来助力生产生活制造相关的各个领域,诸如:基于AI硬件实现农业作物除草就是一个比较熟知的场景…

【大数据进阶第三阶段之DolphinScheduler学习笔记】深度解析DolphinScheduler(海豚调度)

1、简介 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。 Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应…

YOLOv5改进 | 检测头篇 | DynamicHead支持检测和分割(不同于网上版本,全网首发)

一、本文介绍 本文给大家带来的改进机制是DynamicHead(Dyhead),这个检测头由微软提出的一种名为“动态头”的新型检测头,用于统一尺度感知、空间感知和任务感知。网络上关于该检测头我查了一些有一些魔改的版本,但是我觉得其已经改变了该检测头的本质,因为往往一些细节上才…

程序设计语言的基本成分

程序设计语言的基本成分 1、程序设计语言的数据成分2、程序设计语言的运算成分3、程序设计语言的控制成分4、程序设计语言的传输成分 程序设计语言的基本成分包括数据、运算、控制和传输等。 1、程序设计语言的数据成分 程序设计语言的数据成分指一种程序设计语言的数据类型。数…

最实用的 8 个免费 Android 数据恢复软件

如果您正在寻找最好的免费 Android 数据恢复软件,那就不用再犹豫了,因为我已经列出了最好的软件。不可否认,智能手机和平板电脑等 Android 设备正在与技术一起发展。与以前相比,它们也更加融入了我们的日常生活。 Android 智能手…

软件测试|Python urllib3库使用指南

简介 当涉及到进行网络请求和处理HTTP相关任务时,Python的urllib3库是一个强大且灵活的选择。它提供了一种简单的方式来执行HTTP请求、处理响应和处理连接池,使得与Web服务进行交互变得更加容易。本文将详细介绍如何使用urllib3库进行网络请求。 安装u…

Prettier、EditorConfig插件安装及配置文件讲解

安装 Prettier 我们在编写代码时,代码的格式规范非常重要,能提高代码的可读性,避免由于格式问题引起的 bug,也有利于多人协作开发时的统一风格。Prettier是一个非常好用的代码格式化工具,能自动格式化代码,…