这篇文章作为对MySQL数据库基础的讲解出现,主要介绍一些理论相关内容,关于数据库的发展以及数据库的类型,做一个详细的介绍。
一. 数据库简介
1.1 什么是数据库
数据库是20 世纪 60 年代末发展起来的一项重要技术,已经成为计算机科学与技术的一个重要分支。数据库技术主要是用来解决数据处理的非数值计算问题,数据处理的主要内容是数据的存储、查询、修改、排序和统计等。
1.2 为什么要使用数据库
-
数据持久化:数据库可以将数据保存在存储介质中,即使应用程序关闭或服务器重启,数据也不会丢失。
-
数据结构化:数据库能够以结构化的方式存储数据,使得数据易于管理和查询。
-
数据完整性:数据库管理系统(DBMS)提供了数据完整性的保障,确保数据的准确性和一致性。
-
并发控制:数据库可以处理多个用户或进程同时访问和修改数据,同时确保数据的一致性。
-
安全性:数据库提供了多种安全机制,如访问控制、加密等,保护数据不被未授权访问。
-
可扩展性:随着数据量的增长,数据库可以水平或垂直扩展,以适应不断增长的数据需求。
-
备份和恢复:数据库支持数据的备份和恢复,以防数据丢失或损坏。
-
查询优化:数据库系统提供了高效的查询优化器,可以快速执行复杂的查询操作。
-
事务管理:大部分关系型数据库都支持事务,确保一系列操作要么完全成功,要么完全失败,提高了操作的可靠性。
-
多用户支持:数据库允许多个用户同时访问和操作数据,适合多用户环境。
1.3 主流数据库
1.3.1 关系型数据库
- Oracle: 甲骨文产品,适合大型项目,业内最强的数据库,没有之一,需要收费。
- MySQL:开源免费,最受欢迎的数据库,在中小企业中普及率非常高,属于甲骨文,主要用在电商,论坛等。
- PostgreSQL:加州大学伯克利分校计算机系开发的关系型数据库,可以免费使用,修改和分发。
- SQL Sever: 微软推出的⼀款专业级数据库,与旗下的操作系统,编程环境配合使用,适用于中大型项目。
- SQLite: 一款轻型的数据库,占用资源非常低,常用于嵌入式设备,手机APP,桌面程序等场景。
1.3.2 非关系型数据库
- Redis:流行的基于键值对的内存数据库,常用作缓存,支持数据持久化,支持多种数据结构。
- MongoDB:基于NoSQL的文档型数据库,易扩展,高性能,高可用性,支持丰富的查询和聚合操作。
1.4 什么是关系型数据库
关系型数据库是指采用了关系模型来组织数据的数据库,以行和列的形式存储数据。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
二、MySQL安装和配置
2.1 安装
https://blog.csdn.net/Mr_star_galaxy/article/details/157696975?spm=1001.2014.3001.5501
2.2 mysqld服务端程序
当MySQL安装完成之后,bin目录下有一个mysqld(Linux)或mysqld.exe(windows)的可执行程序,mysqld可执行程序运行后,MySQL服务也就启动了。当把MySQL服务配置为自启动,操作系统启动时会自动运行mysqld可执行程序,从而启动MySQL服务。
2.3 数据库服务器,数据库与表之间的关系
- 数据库服务器是指在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
2.4 选项(配置)文件
MySQL安装成功后,如果想修改默认配置,比如修改端口号,数据目录位置,默认使用的存储引擎,默认字符编码集和排序规则,日志路径等等,可以通过编辑选项文件实现。
Windows系统中选项文件的默认路径为 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini ,使用支持UTF8编码的编辑器打开,在相应的节点下修改选项的值,选项文件部分节选内容如下所示。
sql
# Other default tuning values
# MySQL Server Instance Configuration File
# ----------------------------------------------------------------------
# Generated by the MySQL Server Instance Configuration Wizard
# #
# Installation Instructions
# ----------------------------------------------------------------------
#
# On Linux you can copy this file to /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options
# (@localstatedir@ for this installation) or to
# ~/.my.cnf to set user-specific options.
#
# On Windows, when MySQL has been installed using MySQL Installer you
# should keep this file in the ProgramData directory of your server
# (e.g. C:\ProgramData\MySQL\MySQL Server X.Y). To make sure the server
# reads the config file, use the startup option "--defaults-file".
#
# To run the server from the command line, execute this in a
# command line shell, e.g.
# mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"
#
#
# CLIENT SECTION # 所有随MySQL安装的客⼾端程序统⼀配置节点
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
#
[client]
default-character-set=utf8mb4 # 所有客⼾端使⽤utf8mb4编码
# pipe=
# socket=MYSQL
port=3306
[mysql] # 只针对mysql客⼾端程序配置
no-beep
default-character-set=utf8mb4 # mysql客⼾端程序使⽤utf8mb4编码
# SERVER SECTION # MySQL服务器端配置节点
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
# server_type=3
[mysqld] # 针对MySQL服务端程序配置,也就是mysqld
# The TCP/IP Port the MySQL Server will listen on
port=3306 # MySQL服务的端⼝号
# Path to installation directory. All paths are usually resolved relative to
this.
# basedir="D:/Program Files/MySQL/MySQL Server 8.0/"
# Path to the database root
datadir=D:/database/MySQL/data8.0 # 数据⽬录路径,如果要修改,此处填写数据⽬录的实
际路径
# The default character set that will be used when a new schema or table is
# created and no character set is defined
character-set-server=utf8mb4 # 服务端使⽤的编码集
collation-server = utf8mb4_0900_ai_ci # 服务端使⽤的排序规则
# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB # 服务端使⽤的存储引擎
# General and Slow logging.
log-output=FILE # 通⽤⽇志的输出⽅式,这⾥设置了输出到⽂件
general-log=1 # 是否开启通⽤⽇志,1开启 0关闭
general_log_file="D:/log/MySQL/8.0/general.log" # 通⽤⽇志的输出路径
slow-query-log=1 # 是否开启慢查询⽇志,1开启 0关闭
slow_query_log_file="D:/log/MySQL/8.0/slow_query.log" # 慢查询⽇志的输出路径
long_query_time=10 # 慢查询⽇志的阈值
# Error Logging.
log-error="D:/log/MySQL/8.0/error_log.err" # 错误⽇志的输出路径
# ***** Group Replication Related *****
# Specifies the base name to use for binary log files. With binary logging
# enabled, the server logs all statements that change data to the binary
# log, which is used for backup and replication.
log-bin="D:/log/MySQL/8.0/bin_log" # binlog的⽂件名前缀
注意:
- 如果重新指定数据目录路径,把C:\ProgramData\MySQL\MySQL Server 8.0\Data目录整体复制到目标位置。
- 修改配置文件之后需要重新启动MySQL服务。
三、客户端工具
3.1 mysql
MySQL安装成功后自带的命令行客户端工具,可以输入命令和执行SQL语句,mysql的基本使用非常简单,打开终端并输入以下命令:
使用前检查PATH环境变量中是否配置了mysql所在目录
sql
# 使⽤mysql客⼾端连接服务器
C:\Users\bit>mysql -uroot -p
# 输⼊密码
Enter password: your_password
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.39 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 编写SQL语句
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.39 |
+-----------+
1 row in set (0.00 sec) # 查询结果
mysql> # 这⾥可以继续输⼊数据库操作指令
3.1 Workbench
3.2 Navicat Lite版
四、 客户端与服务器的通讯方式
4.1 C/S架构与B/S架构
• C/S架构即客户端 / 服务器架构模式
• B/S架构即浏览器 / 服务器架构模式
4.1.1 CS 架构
C/S 架构全称是客户端 / 服务器(Client / Server)架构,是常用的两层架构。客户端需要安装客户端软件,服务端程序运行在服务器上,提供Socket或数据库服务。
使用客户端与MySQL数据库服务器通讯属于C/S架构
常用于固定用户群体中。常见的C/S架构的应用,比如QQ,CCTALK,各种网络游戏等等,一般需要安装并且与服务器进行网络通信的都属于此类。
优点:
- 大部分业务都可以在客户端完成,充分利用本地的计算机资源
- 响应速度快
- 个性化定制能力强
- 面向相对固定的用户群,对信息安全的控制能力强
缺点:
- 需要安装客户端才能使用
- 维护成本高,任何一台电脑上的客户端出现问题都需要进行维护,升能过程繁琐
4.1.2 BS 架构
B/S架构全称是浏览器 / 服务器(Browser/Server)结构,分为Web浏览器、服务器程序、数据库服务三部分,可以理解为是对C/S架构⼀种改进。由于所有的业务逻辑都由服务器程序处理,所以客户端仅使用浏览器就可以完成所有操作,大大降低了客户端的维护成本。
常用于对公开用户提供的网络服务中。比如常见的大型网站都属于此类。
优点:
- 客户端零维护,只需要安装⼀个浏览器即可
- 所有业务都集中在服务器端,业务扩展非常方便
- 维护成本低,只需要维护服务器即可
缺点:
- 服务器安全与业务处理能力需要花费很大精力与成本
- 不同浏览器支持不尽人意
五、SQL简介
5.1 什么是SQL
SQL(Structured Query Language)是结构化查询语言的简称,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理数据库。
5.2 SQL分类
DDL 【Data Definition Langua】数据定义语言,用来维护存储数据的结构
代表指令:create, drop,alter
DML 【Data Manipulation Lang】数据操纵语言,用来对数据进行操作
代表指令:insert,delete,update,select
DCL 【Data Control Language】数据控制语言,主要负责权限管理和事务
代表指令:grant,revoke,commit
这篇文章详细说明了关于数据库基础的详细内容,后面我们会深入交流MySQL的相关操作,持续更新中。