[Java Web]MySQL数据库|一文带你了解并熟悉数据库相关知识和各种操作,超6000字详细介绍(一)

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: [Java Web]MySQL数据库|一文带你了解并熟悉数据库相关知识和各种操作,超6000字详细介绍

1、数据库相关概念

数据库是一种用于存储和管理数据的软件系统。

数据库英文名是 DataBase,简称DB。

数据库就是将数据存储在硬盘上,可以达到持久化存储的效果。

1.1、数据库类型

常见的数据库类型有关系型数据库(如MySQL,Oracle,SQL Server等)、非关系型数据库(如MongoDB,Redis等)和图形数据库(如Neo4j等)。

关系型数据库组织数据为表格形式,每一行为一条记录,每一列为一个字段,通过建立不同表之间的关系来组织数据。关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库

非关系型数据库不遵循表格形式,通常以文档,键值对或图形等形式存储数据。

图形数据库主要用于处理具有复杂关系的数据,通过图形模型来表示数据之间的关系。

1.2、数据库管理系统

数据库管理系统(DataBase Management System,简称 DBMS)是一种软件系统,用于创建,维护和使用数据库。常用的DBMS有MySQL,SQL Server,Oracle,PostgreSQL等。

在电脑上安装了数据库管理系统后,就可以通过数据库管理系统创建数据库来存储数据,也可以通过该系统对数据库中的数 据进行数据的增删改查相关的操作。

我们平时说的MySQL数据库其实是MySQL数据库管理系统。

1.2.1、数据库管理系统种类

常见的数据库管理系统有:

Oracle:收费的大型数据库,Oracle 公司的产品

MySQL: 开源免费的中小型数据库。后来 Sun公司收购了 MySQL,而 Sun 公司又被 Oracle 收购

SQL Server:MicroSoft 公司收费的中型的数据库。C#、.net 等语言常使用

PostgreSQL:开源免费中小型的数据库

DB2:IBM 公司的大型收费数据库产品

SQLite:嵌入式的微型数据库。如:作为 Android 内置数据库

MariaDB:开源免费中小型的数据库

最常用的是MySQL

1.2.2、SQL和MySQL的关系

MySQL是数据库管理系统,而SQL是操作数据库的编程语言

1.3、数据库相关名词简介

1.3.1、数据一致性

数据库的数据一致性是指数据库中的数据在某一特定时刻是确定的。

常用的数据一致性级别有ACID,BASE等。

ACID是数据库事务的一种概念,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

BASE是非关系型数据库中的一种概念,它指的是基本可用性(Basically Available)、软状态(Soft-State)、最终一致性(Eventual Consistency)。

1.3.2、性能调优

数据库的性能调优是指通过优化数据库的结构、索引、查询语句等来提高数据库的查询性能。常用的方法有缩小数据表、创建合理的索引、优化SQL语句等。

1.3.3、备份和恢复

数据库备份和恢复是指将数据库中的数据复制到另一个地方,以防止数据丢失或灾难性故障。常用的数据库备份方法有全备、增量备份和差异备份。

1.3.4、数据库安全

数据库安全是指保护数据库中的数据不被未经授权的用户访问。常用的数据库安全措施有访问控制、加密、审计等。

1.3.5、数据库集群

数据库集群是指将多个数据库服务器组成一个集群,以提高数据库的可用性和性能。常用的数据库集群技术有MySQL Cluster、Oracle RAC、SQL Server AlwaysOn等。

1.3.6、数据仓库

数据仓库是一种用于存储和管理大量历史数据的数据库系统。常用的数据仓库软件有Oracle Warehouse Builder, SAP BW, IBM Cognos 等。

1.3.7、数据挖掘

数据挖掘是一种从大量数据中提取有用信息和知识的技术。常用的数据挖掘技术有关联规则挖掘、分类和聚类算法、回归分析等。

2、MySQL介绍

MySQL是一种关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品。

它采用了类似于 SQL 的语言来管理数据库,支持多种操作系统平台。

MySQL是一种免费的开源软件。

MySQL支持多种存储引擎,其中包括 MyISAM, InnoDB, Memory, CSV, Archive, Blackhole 等。MyISAM是默认的存储引擎,支持全文索引和空间优化,适用于读多写少的场景。

InnoDB是支持事务和外键约束的存储引擎,适用于读写并存的场景。

MySQL还提供了许多管理工具和应用程序接口,如 MySQL Workbench, MySQL Administrator, MySQL Query Browser 等。

MySQL在Web应用,数据仓库,在线事务处理(OLTP)和数据仪表盘方面非常流行。并且在各种应用程序中都有广泛的应用,例如WordPress, Joomla, Magento等。

3、MySQL数据模型

MySQL中可以创建多个数据库,每个数据库对应到磁盘上的一个文件夹

在每个数据库中可以创建多个表,每张都对应到磁盘上一个 frm 文件

每张表可以存储多条数据,数据会被存储到磁盘中 MYD 文件中

具体例子如下:

编辑

如上图,我们通过客户端可以通过数据库管理系统创建数据库,在数据库中创建表,在表中添加数据。创建的每一个数据库 对应到磁盘上都是一个文件夹。比如可以通过SQL语句创建一个数据库(数据库名称为db1),SQL语句->create database db1;

我们可以在数据库安装目录下的data目录下看到多了一个 db1 的文件夹。所以,在MySQL中一个数据库对应到磁盘上的一个文件夹。

而一个数据库下可以创建多张表,我们到MySQL中自带的mysql数据库的文件夹目录下:

编辑

而上图中右边的db.frm 是表文件,db.MYD 是数据文件,通过这两个文件就可以查询到数据展示成二维表的效果。

4、MySQL数据类型

MySQL 支持多种类型,可以分为:

  1. 数值类型:int, bigint, float, double, decimal等。这些类型用于存储数字数据。
  2. 日期和时间类型:date, datetime, timestamp, year等。这些类型用于存储日期和时间数据。
  3. 字符串类型:char, varchar, text, blob, enum等。这些类型用于存储字符串数据。
  4. 二进制类型:binary, varbinary, blob等。这些类型用于存储二进制数据。
  5. 布尔类型:BOOL或者TINYINT(1)。这种类型用于存储布尔值。
  6. 枚举类型:ENUM。这种类型用于存储固定的选项列表。
  7. JSON类型:JSON。这种类型用于存储JSON数据。

这些类型每一种都有自己的特点,在使用时需要根据实际需求来选择合适的类型。

char和varchar:

5、SQL

5.1、简介

Structured Query Language,简称 SQL,结构化查询语言、操作关系型数据库的编程语言

SQL用于查询、插入、更新、删除数据。

定义操作所有关系型数据库的统一标准,可以使用SQL操作所有的关系型数据库管理系统,以后工作中如果使用到了其他的数据库管理系统,也同样的使用SQL来操作。

5.2、通用语法

语法要求如下:

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

②MySQL 数据库的SQL语句不区分大小写,关键字建议使用大写

③注释:

单行注释:-- 注释内容 或 #注释内容(MySQL 特有)

注意:使用-- 添加单行注释时,--后面一定要加空格,而#没有要求。

多行注释:/* 注释 */

5.3、SQL语句分类

具体分类如下:

①DDL(Data Definition Language):数据定义语言,用来定义数据库对象:数据库,表,列等

②DML(Data Manipulation Language) :数据操作语言,用来对数据库中表的数据进行增删改

③DQL(Data Query Language):数据查询语言,用来查询数据库中表的记录(数据)

④DCL(Data Control Language):数据控制语言,用来定义数据库的访问权限、安全级别、创建用户

(各单词:Definition/ˌdefɪˈnɪʃ(ə)n/,Manipulation/məˌnɪpjuˈleɪʃn/,Query/ˈkwɪəri/)

简单来说:

DDL:用来操作数据库,表等

DML:对表中数据进行增删改

DQL:对数据进行查询操作。从数据库表中查询到我们想要的数据

DML:对数据库进行权限控制。比如让某一个数据库表只能让某一个用户进行操作等。

编辑

6、Data Definition Language(DDL)

下面介绍DDL来操作数据库,主要介绍相关SQL语句:

6.1、操作数据库

6.1.1、查询

查询所有的数据库->show databases;

6.1.2、创建

创建数据库->create database 数据库名称;

创建的时候不知道数据库名称是否会重名,如果重名则会出现Can't create database错误,想要避免这种错误,则需要在创建新的数据库之前判断一下是否重名:

判断,如果不存在则创建->create database if not exists 数据库名称;

6.1.3、删除

删除数据库->drop database 数据库名称;

删除数据库(判断,如果存在则删除)->drop database if exists 数据库名称;

6.1.4、使用数据库

数据库创建好了之后,要在数据库中执行操作,得先明确在哪个数据库中,因此就需要明确使用数据库。

使用数据库->use 数据库名称;

查看当前使用的数据库->select database();

6.2、操作表(CURD)

操作表也就是对表进行增(Create)删(delete)改(Update)查(Retrieve),俗称CURD

6.2.1、查询

查询当前数据库下所有表名称->show tables;

查询表结构->desc 表名称;

(desc->降序排列 descend 的缩写)

6.2.2、创建

CREATE TABLE 表名 (

字段名1 数据类型1,

字段名2 数据类型2,

字段名n 数据类型n

);

注意:最后一行末尾,不能加逗号

举例:

编辑

create table tb_user (

id int,

username varchar(20),

password varchar(32)

);

6.2.3、删除

删除表->drop table 表名;

删除表时判断表是否存在->drop table if exists 表名;

6.2.4、修改

①修改表名->alter table 表名 rename to 新的表名;

Ex:alter table student rename to stu; -- 将表名student修改为stu

②添加一列->alter table 表名 add 列名 数据类型;

EX:alter table stu add address varchar(50); -- 给stu表添加一列address,该字段类型是varchar(50)

③修改数据类型->alter table 表名 modify 列名 新数据类型; (modify : 修改)

EX:alter table stu modify address char(50); -- 将stu表中的address字段的类型改为 char(50)

④修改列名和数据类型->alter table 表名 change 列名 新列名 新数据类型;

EX:alter table stu change address addr varchar(50);

-- 将stu表中的address字段名改为 addr,类型改为varchar(50)

⑤删除列->alter table 表名 drop 列名;

EX:alter table stu drop addr; -- 将stu表中的addr字段 删除

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL Java
【MySQL+java+jpa】MySQL数据返回项目的感悟
【MySQL+java+jpa】MySQL数据返回项目的感悟
44 1
|
2月前
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
77 0
|
2月前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
2月前
|
关系型数据库 MySQL Java
java协程操作mysql数据库
本文介绍了如何在Java项目中使用虚拟线程和协程操作MySQL数据库,并通过代码示例展示了如何利用CompletableFuture实现非阻塞数据库连接和操作。
30 2
java协程操作mysql数据库
|
2月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
53 15
|
3月前
|
存储 关系型数据库 MySQL
【Java面试题汇总】MySQL数据库篇(2023版)
聚簇索引和非聚簇索引、索引的底层数据结构、B树和B+树、MySQL为什么不用红黑树而用B+树、数据库引擎有哪些、InnoDB的MVCC、乐观锁和悲观锁、ACID、事务隔离级别、MySQL主从同步、MySQL调优
【Java面试题汇总】MySQL数据库篇(2023版)
|
2月前
|
Java 关系型数据库 MySQL
数据库的连接用Java
本文介绍了如何使用Java连接MySQL数据库,包括注册JDBC驱动、创建数据库连接URL、设置数据库用户和密码、建立连接以及关闭连接的完整代码示例。
32 0
数据库的连接用Java
|
2月前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
155 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
3月前
|
自然语言处理 算法 Java
Java如何判断两句话的相似度类型MySQL的match
【9月更文挑战第1天】Java如何判断两句话的相似度类型MySQL的match
27 2
|
3月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
54 0