🌱博客主页:青竹雾色间.
😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注
✨人生如寄,多忧何为 ✨
文章目录
数据库基础
1.1 什么是数据库
为什么我们需要数据库?尽管我们可以使用文件来存储数据,但是文件存储数据存在一些缺点:
- 安全性问题
- 不利于数据查询和管理
- 不利于存储大量数据
- 在程序中控制不方便
数据库存储介质:
- 磁盘
- 内存
为了解决这些问题,数据库应运而生。数据库是一种更有效地管理数据的工具,它可以帮助我们更安全、更高效地存储和管理数据,因此,数据库水平成为衡量一个程序员水平的重要指标。
1.2 主流数据库
数据库领域有多个主流的解决方案,其中包括:
- SQL Server: 微软的产品,是.NET程序员的首选,适用于中大型项目。
- Oracle: 甲骨文的产品,适合大型项目和复杂的业务逻辑,但并发性一般不如MySQL。
- MySQL: 是世界上最受欢迎的数据库之一,属于甲骨文旗下,具有良好的并发性能,主要用于电商、SNS和论坛等场景。
- PostgreSQL: 是加州大学伯克利分校开发的关系型数据库,不论是私用、商用还是学术研究都可以免费使用。
- SQLite: 是一款轻型的数据库管理系统,被广泛应用于嵌入式设备中,资源占用较低。
- H2: 是用Java开发的嵌入式数据库,可以直接嵌入到应用项目中。
1.3 基本使用
1.3.1 MySQL安装
- 在CentOS 7安装(可以看一下博主的上篇博客)CentOS 7下MySQL安装与配置指南
- 在Windows下安装MySQL
1.3.2 连接服务器
使用以下命令连接到MySQL服务器:
mysql -h 127.0.0.1 -P 3306 -u root -p
注意:
- 如果未指定
-h 127.0.0.1
,默认连接到本地主机。 - 如果未指定
-P 3306
,默认连接到3306端口。
1.3.3 服务器管理
在Windows系统中,通过运行 services.msc
命令来打开服务管理器,可以对MySQL服务进行停止、暂停和重启等操作。
在Linux中
systemctl stop mysql#停止MySQL服务
systemctl pause mysql#暂停MySQL服务
systemctl start mysql#启动MySQL服务
systemctl restart mysql#重启MySQL服务
#启用或禁用服务的自启动功能
systemctl enable mysql
systemctl disable mysql
1.3.4 服务器、数据库、表关系
数据库服务器安装后,可以管理多个数据库,每个数据库可以包含多张表,用于存储程序中的实体数据。
1.3.5 使用案例
- 创建数据库
create database `库名`;
- 使用数据库
use `库名`;
- 创建数据库表
create table `表名`(
);
- 向表中插入数据
insert into `表名`
- 查询表中的数据
select * from `表名`;
示例
-- 创建数据库
create database helloworld;
-- 使用数据库
use helloworld;
-- 创建数据库表
create table student(
id int,
name varchar(32),
gender varchar(2)
);
-- 向表中插入数据
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
-- 查询表中的数据
select * from student;
1.4 MySQL架构
MySQL是一个可移植的数据库管理系统,几乎能在所有操作系统上运行。它的物理体系结构在各个平台上基本一致。
1.5 SQL分类
SQL(Structured Query Language)可以分为以下几类:
- DDL(Data Definition Language): 数据定义语言,用于维护数据结构,包括
create
、drop
、alter
等指令。 - DML(Data Manipulation Language): 数据操纵语言,用于对数据进行操作,包括
insert
、delete
、update
等指令。 - DCL(Data Control Language): 数据控制语言,用于权限管理和事务处理,包括
grant
、revoke
、commit
等指令。
1.6 存储引擎
1.6.1 存储引擎
存储引擎是指数据库管理系统如何存储数据、建立索引以及更新、查询数据的技术实现方法。
1.6.2 查看存储引擎
show engines;
1.6.3 存储引擎对比
以下是几种常见的存储引擎的简要对比:
InnoDB:
- 事务支持:支持事务和ACID属性,适合于需要强调数据完整性和事务支持的应用。
- 行级锁定:具有行级锁定的能力,可实现高并发的读写操作。
- 外键约束:支持外键约束,可确保数据的一致性。
- 索引:支持全文索引和B+树索引,适用于复杂查询和高性能的读操作。
MyISAM:
- 全文索引:支持全文索引,适用于文本搜索等应用。
- 表级锁定:采用表级锁定,对于大量的读操作而言性能较好。
- 不支持事务:不支持事务和ACID属性,不适合需要事务支持的应用。
- 不支持外键约束:不支持外键约束,数据完整性依赖应用层处理。
Memory(也称为Heap):
- 数据存储在内存中:所有数据都存储在内存中,读写速度非常快。
- 不持久化:数据不持久化到磁盘,数据库重启后数据丢失。
- 适用于缓存和临时数据:适用于缓存和临时数据存储,但不适合持久化数据。
CSV:
- 存储为CSV文件:数据以逗号分隔值的形式存储在CSV文件中。
- 不支持事务和索引:不支持事务和索引,适合简单的数据存储和交换。
- 可移植性:数据存储在文本文件中,可移植性较好。
Archive:
- 压缩存储:采用压缩算法存储数据,节省存储空间。
- 只支持插入和查询:只支持插入和查询操作,不支持更新和删除。
- 适用于归档和日志存储:适用于需要长期保存数据的归档和日志存储场景。