MySQL 数据库基础

目录

什么是数据库

数据库分类

关系型数据库

非关系型数据库

SQL子语言

MySQL

MySQL 存储数据的组织方式

数据库操作

显示当前数据库

创建数据库

使用数据库

删除数据库


什么是数据库

数据库 是一个用于存储、管理和检索数据的系统,可以组织和保存大量的数据,使得数据能够被高效地访问、更新和管理

文件也可以用来存储数据,那为什么还要使用数据库呢?

文件保存数据有以下缺点:

文件的安全性问题

文件不利于数据查询和管理

文件不利于存储海量数据

文件在程序中控制不方便

基于上述问题,就可以使用更利于管理数据的系统 —— 数据库,它能够更有效的管理数据,且可以提供远程服务,即 通过远程连接来使用数据库,因此,也称为 数据库服务器

数据库分类

数据库大体可用分为两类:关系型数据库非关系型数据库

关系型数据库

关系型数据库(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;

数据库删除后,里面的表和数据全部都被删除了,因此,删除数据库操作需谨慎使用

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Vue3 二》Vue 的模板语法

在 React 中,想要编写 HTML,是使用 JSX,之后通过 Babel 将 JSX 编译成 React.createElement 函数调用;在 Vue 中,也支持 JSX 的开发模式,但大多数情况下都是使用基于 HTML 的模板语法,在模板中允…

高级技巧-使用Mysql 实现根据条件过滤整个分组数据

博客-mysql exists实现过滤所属条件对应分组的全部数据 在数据查询中,有时需要根据某一条件来过滤整个分组的数据,尤其是当某条记录满足特定条件时,需要将该组内的所有记录排除。本文将介绍如何使用 MySQL 的 EXISTS 关键字来实现这种分组过滤…

游戏引擎学习第67天

reviewing “apron”概念以更新区域 我们正在进行模拟区域的扩展工作,目标是通过增加一个更大的区域来支持更丰富的互动,尤其是那些可能超出摄像机视野的内容。现有的模拟区域包括摄像机能看到的区域和其周围的环境区域,但为了保证更高效的游…

计算机网络|数据流向剖析与分层模型详解

文章目录 一、网络中的数据流向二、计算机网络通信模型1.OSI 模型2.TCP/IP 模型3.TCP/IP五层模型3.1 分层架构描述3.2各层地址结构3.3UDP数据包报头结构 三、总结 一、网络中的数据流向 在计算机网络中,数据的流向是指数据从发送端到接收端的传输路径。数据流向涉及…

如何在 Spring Boot 微服务中设置和管理多个数据库

在现代微服务架构中,通常需要与多个数据库交互的服务。这可能是由于各种原因,例如遗留系统集成、不同类型的数据存储需求,或者仅仅是为了优化性能。Spring Boot 具有灵活的配置和强大的数据访问库,可以轻松配置多个数据库。在本综…

【Raven1靶场渗透】

文章目录 一、基础信息 二、信息收集 三、暴力破解 四、提权 一、基础信息 Kali IP :192.168.20.146 靶机IP :192.168.20.153 二、信息收集 nmap -sS -sV -p- -A 192.168.20.153 开放了22,80,111,58305端口 访…

视频监控平台:Liveweb视频汇聚融合平台智慧安防视频监控应用方案

Liveweb是一款功能强大、灵活部署的安防视频监控平台,支持多种主流标准协议,包括GB28181、RTSP/Onvif、RTMP等,同时兼容海康Ehome、海大宇等厂家的私有协议和SDK接入。该平台不仅提供传统安防监控功能,还支持接入AI智能分析&#…

Pytorch | 利用SMI-FGRM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集SMI-FGRM介绍SMI-FGRM算法流程 SMI-FGRM代码实现SMI-FGRM算法实现攻击效果 代码汇总smifgrm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CI…

基于PREEvision的UML设计

众所周知,PREEvision是一款强大的电子电气架构协同开发及管理软件,可以很好地帮助架构工程师完成架构开发工作,其功能包括需求管理、定义功能逻辑、系统软件开发、网络设计、线束设计及整体工程的产品线管理和变形管理等。随着工程师们越来越…

闲谭Scala(2)--安装与环境配置

1. 概述 Java开发环境安装,需要两步,第一安装JDK,第二配置环境变量。 Scala的话,也是两步,第一安装Scale环境,第二配置环境变量。 需要注意的是,配置环境变量,主要是想让windows操…

智慧地下采矿:可视化引领未来矿业管理

图扑智慧地下采矿可视化平台通过整合多源数据,提供实时 3D 矿井地图及分析,提升了矿产开采的安全性与效率,为矿业管理提供数据驱动的智能决策支持,推动行业数字化转型。

王鹤棣新剧《大奉打更人》开播 数据亮眼刷新招商纪录

临近年末,各类国产剧集仍频上新,档期竞争格外激烈。而由王鹤棣领衔主演的古装悬疑轻喜剧《大奉打更人》已于12月28日在CCTV-8和腾讯视频同步播出,开播即横扫各大榜单。该剧从定档官宣到开播,热度一路攀升,开播后更是掀…

数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误

文章目录 背景一、步骤1.分析阶段2.查看nginx3.修改用户(也可以修改所有者权限) 背景 故障报错: nginx报错信息: 2024/12/19 15:25:31 [crit, 500299#0: *249 onen0 " /var/lib/nginx/tmp/cient body/0000000001" f…

BLE core 内容整理解释

本文内容比较杂散,只是做记录使用,后续会整理的有条理些 link layer 基本介绍 **Link Layer Control(链路层控制)**是蓝牙低功耗(BLE)协议栈的核心部分,负责实现设备间可靠、安全、低功耗的数…

【疑难杂症】 HarmonyOS NEXT中Axios库的响应拦截器无法拦截424状态码怎么办?

今天在开发一个HarmonyOS NEXT的应用的时候,发现http接口如果返回的状态码是424时,我在axios中定义的拦截器失效了。直接走到了业务调用的catch中。 问题表现: 我的拦截器代码如下: 解决办法: 先说解决办法&#xff…

聚类评价指标

聚类评价指标分为 内部指标 和 外部指标 两大类,用于评估聚类算法的性能。 一、内部评价指标 内部评价指标不依赖真实标签,主要通过聚类结果本身的紧凑性和分离性进行评估。 轮廓系数(Silhouette Coefficient, SC) 衡量数据点与其…

flask后端开发(1):第一个Flask项目

目录 一、Helloworddebug、host、port的配置 gitcode地址: https://gitcode.com/qq_43920838/flask_project.git 一、Helloword 一般是会创建两个文件夹和app.py app.py from flask import FlaskappFlask(__name__)app.route(/) def hello_world():return Hello…

一文复盘:RAG技术-大模型

原文:https://zhuanlan.zhihu.com/p/13962398269 RAG(Retrieval-Augmented Generation)之所以被关注,有两方面原因: 1、没有跑大模型的资源:大多数人没有GPU集群搞LLM的预训练。 2、大模型缺乏知识&…

使用 OpenCV 绘制线条和矩形

OpenCV 是一个功能强大的计算机视觉库,它不仅提供了丰富的图像处理功能,还支持图像的绘制。绘制简单的几何图形(如线条和矩形)是 OpenCV 中常见的操作。在本篇文章中,我们将介绍如何使用 OpenCV 在图像上绘制线条和矩形…

WinForm 美化秘籍:轻松实现 Panel 圆角虚线边框

文章目录 1、引言2、案例实现1、创建自定义 Panel 类2、定义圆角矩形3. 使用自定义 Panel4. 调整属性5、使用背景图片来实现5、拓展:使用 Panel 的 Paint重绘单独实现虚线边框效果 3、实现效果4、总结 1、引言 在 Winform 应用程序开发中,美化用户界面&…