目录
什么是数据库
数据库 是一个用于存储、管理和检索数据的系统,可以组织和保存大量的数据,使得数据能够被高效地访问、更新和管理
文件也可以用来存储数据,那为什么还要使用数据库呢?
文件保存数据有以下缺点:
文件的安全性问题
文件不利于数据查询和管理
文件不利于存储海量数据
文件在程序中控制不方便
基于上述问题,就可以使用更利于管理数据的系统 —— 数据库, 它能够更有效的管理数据,且可以提供远程服务,即 通过远程连接来使用数据库,因此,也称为 数据库服务器
数据库分类
数据库大体可用分为两类:关系型数据库 和 非关系型数据库
关系型数据库
关系型数据库(RDBMS)是指采用了关系模型来组织数据的数据库。关系模型,简单来说指的就是 二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织
基于标准的 SQL,数据库只是内部一些实现有区别,常见的关系型数据库有:
Oracle:商业软件,功能强大,支持高并发事务处理,具备企业级特性和强大的安全性,适合大规模企业应用和复杂的数据处理需求
MySQL:开源,具有强大的功能和灵活性,支持复杂查询和数据完整性约束,因其开源、易于安装和配置,适合用于开发和托管中小型网站
SQLite:轻量级,嵌入式数据库,不需要单独的服务器进程,适用于桌面应用、移动应用和小型网站
非关系型数据库
非关系型数据库(NoSQL数据库)与关系型数据库不同,它们不使用传统的表格结构来存储数据,而是使用 文档、键值对等来存储数据
常见的 NoSQL 数据库有:
redis:键值对存储数据库,支持多种数据结构,如字符串、哈希、列表、集合等,适用于缓存、会话管理、实时分析和消息队列等场景
MongoDB:文档型数据库,使用 JSON-like 的 BSON 格式存储数据。适合需要灵活数据结构、文档存储和快速开发的应用,例如内容管理系统和实时分析应用
Neo4j:图数据库,用于存储和查询图形结构的数据,如节点和边,适合需要处理复杂关系和网络结构的应用,例如社交网络、推荐系统和欺诈于检测
关系型数据库和非关系型数据库的区别:
关系型数据库 | 非关系型数据库 | |
---|---|---|
使用SQL | 是 | 不强制要求,一般不基于 SQL 实现 |
事务支持 | 支持 | 不支持 |
复杂操作 | 支持 | 不支持 |
海量读写数据 | 效率低 | 效率高 |
基本结构 | 基于表和列,结构固定 | 灵活性比较高 |
适用场景 | 业务方面的 OLTP 系统 | 用于数据的缓存或基于统计分析的 OLAP |
OLTP(On-Line Transaction Processing):联机事务处理
OLAP(On-Line Analytical Processing):联机分析处理
数据库的核心语言就是 SQL 语言,接下来我们就来学习 SQL
SQL子语言
在 SQL(Structured Query Language)中,命令被分类为不同的子语言,每种子语言用于处理数据库的不同方面。以下是四种主要的 SQL 子语言:
DDL(Data Definition Language,数据定义语言):用于定义和管理数据库的结构(模式),涉及数据库、表、视图、索引等对象的创建、修改和删除
常用指令:create、alter、drop
DML(Data Manipulation Language,数据操作语言):DML 主要关注数据的操作和管理,用于对数据库中的数据进行插入、更新、删除和查询操作
常用指令:select、insert、update、delete
DQL(Data Query Language,数据查询语言):专门用于从数据库中检索数据,DQL 实际上是一部分 DML,主要用于执行查询操作
常用指令:select
DCL(ata Control Language,数据控制语言):用于控制数据库中数据的访问权限和权限管理
常用指令:grant、revoke
即:
语言 | 功能 |
---|---|
DDL | 定义数据库结构(如 表、索引) |
DML | 操作数据(如 插入、更新、删除) |
DQL | 查询语句(select 语句) |
DCL | 控制权限(如 授权、撤销权限) |
接下来,我们就来学习 MySQL
MySQL
MySQL 是一个 客户端-服务器(C/S) 结构的程序
当我们安装好MySQL 后:
上述就是 MySQL 的客户端
输入密码,连接 MySQL 的服务器
数据库服务器,是 MySQL 的本体,负责 持有数据、管理数据 以及进行 增删查改
而 MySQL 客户端,只是一个用于和用户交互的界面,让用户能够通过客户端,给服务器发送指令,告诉服务器接下来要做什么,真正完成操作的是 数据库服务器
MySQL 存储数据的组织方式
数据库(database):逻辑上的数据集合,按照数据结构来组织、存储和管理数据的仓库,一个 MySQL 服务器上可以有多个这样的数据集合
例如,我们会将一些有关联的数据放到一起,就构成了数据集合:
学生信息(出勤信息、课程信息、身份信息...)
用户信息(个人信息、浏览信息、个性推荐信息...)
...
这些数据都可以在同一个 MySQL 服务器上存储,为了将它们从逻辑上区分开,就可以使用不同的数据库来区分
数据表(table):在同一个数据库中,还可以存储不同的数据,每组数据使用数据表来存储。数据表是 数据库中最基本的存储结构,用于组织和存储数据
数据表 相当于表格,类似于 excel,
在一个表中有很多行(row),每一行都是一条记录(或称为 数据)
而每一行中又包含很多列,每一列也称为一个 字段(field)
例如:
学生信息:学生编号、姓名、年龄...
上述信息就构成一个数据表:
数据库服务器中,主要通过 数据库 和 数据表 来组织存储数据:
接下来,我们就来学习数据库相关操作
数据库操作
显示当前数据库
SHOW DATABASES;
注意:不要忘记 ;
创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name [character_set charset_name] [collate collation_name];
其中,大写的表示关键字,在 MySQL 中,SQL 关键字和函数名不区分大小写,CREATE 和 create 是相同的,在拼写时注意不要拼错
[] :可选项,可以指定,也可以不指定
IF NOT EXISTS:可选的,若指定,只有在数据库不存在时才会创建,可以避免数据库已经存在时出现错误
database_name:要创建的数据库的名称,数据库名称可以随便起,但要注意不要和关键字重复,一个服务器上数据库的名字也不能重复
character_set charset_name:可选的,指定数据库使用的字符集
collate collation_name:可选的,指定数据库使用的字符排序规则
什么是字符集?
字符集(Character Set)是用于表示文本数据的编码系统。在 MySQL 中,字符集定义了如何将字符映射到字节
常见字符集:
ASCII:仅支持基本的英文字符,适用于只包含英文字符的情况
utf8:支持大多数常用 Unicode 字符,但不支持一些特殊字符,如表情符号
utf8mb4:支持所有 Unicode 字符,包括表情符号,建议使用
GBK:用于简体中文字符,扩展了 GB2312 编码,支持更多汉字
什么是排序规则?
排序规则(Collation) :确定如何比较和排序字符,每个字符集都有多个排序规则,每种排序规则适用于不同的语言或比较需求
创建示例:
创建一个名为 my_database 的数据库:
CREATE DATABASE my_database;
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集: utf8,默认排序规则:utf8_general_ci
若数据库不存在,创建 my_database:
CREATE DATABASE IF NOT EXISTS my_database;
创建一个名为 my_database 的数据库,并指定字符集为 utf8mb4 排序规则为 utf8mb4_general_ci:
CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
当我们创建好数据库后,由于数据库服务器上有多个数据库,因此,在进行后续表操作之前,我们需要先选中这个数据库
使用数据库
use database_name;
删除数据库
DROP DATABASE [IF EXISTS] database_name;
数据库删除后,里面的表和数据全部都被删除了,因此,删除数据库操作需谨慎使用