后端Web之数据库(以MySQL为例)

news2024/11/15 2:01:36

目录

1.概述

2.MySQL

3.DDL

4.DML

5.DQL


1.概述

对于我们自己写的一些小功能,数据一般存储在文件中,比如XML文件。而在实际项目中,数据都是存放在数据库中的。数据库(DataBase )是一个存储数据的集合,它允许用户存储、检索和管理信息。数据库通常由多个表组成,这些表通过键关联,以便于数据的组织和访问。

在企业中,由于数据库要共享,所以都是将数据库安装在服务器上,服务器放置于恒温恒湿无尘的专业机房中。开发人员通过客户端远程连接数据库。

数据库类型主要分为两大类:

  • 关系型数据库(RDBMS):如MySQL、PostgreSQL、Oracle、SQL Server等,它们使用表格模型存储数据,并通过SQL进行操作。
  • 非关系型数据库(NoSQL):如MongoDB、Cassandra、Redis等,它们不使用表格模型,可以存储结构化、半结构化或非结构化数据。

简单来说,基于二维表(有行和列,如excel表)来存储数据的数据库就是关系型数据库,不通过表结构存储数据的就是非关系型数据库,如redis。

我们通过发送sql语句给数据库管理系统DataBase Management System (DBMS)来操纵和管理数据库。

SQL(Structured Query Language,结构化查询语言)是一种标准化的语言,用于在关系型数据库管理系统(RDBMS)中进行数据管理和操作。

目前主流的一些关系型数据库:虽然产品不一样,但它们都可以通过相同的sql语句进行操作

项目中的数据库设计:

项目中的数据库表的设计:

2.MySQL

MySQL是一个流行的开源关系型数据库管理系统(RDBMS),它是基于客户端-服务器模型的,并广泛应用于Web应用程序的后端,提供数据存储、查询和维护的功能。它以其可靠性、易用性和性能而闻名,并且由于其开源特性,拥有庞大的社区支持。

数据模型:

SQL语句通常分为以下四类:

通过命令行去操作数据库比较繁琐,采用图形化工具会方便一些,以下是常见的图形化工具,其中DataGrip集成在IDEA中,能够在IDEA中使用

MySQL中的数据类型:

主要分为三类:数值类型、字符串类型、日期时间类型。在满足业务的情况下,选占用磁盘小的更合适

数值类型:

字符串类型:定长是指字符串固定占用空间,比如char(10)就占用10个字符空间。变长是指字符串有多长就占用多长,比如varchar(10)有三个字符就占用3个字符空间。

但是计算机不用判断定长的空间占用,需要判断变长的空间占用。因此定长的性能高,但占用磁盘多,变长则相反。即空间换时间和时间换空间

日期时间类型:

3.DDL

DDL已经很大程度上被图形化界面工具替代了,以下简单介绍DDL:

创建表:其中约束是作用于表中字段上的规则,用于限制存储在表中的数据。比如id不能重复只能唯一,这就是唯一约束或者主键约束。约束用来保证数据库中数据的正确性、有效性和完整性。

约束的种类:自增可以让主键id自动增加,而不用手动输入

修改表:

4.DML

增加数据(insert):

修改数据(update):

删除数据:

5.DQL

查询操作是所有sql语句中最重要、最常用、最复杂的的操作。

基本查询:其中*号不建议使用,不直观而且效率低(会查询并传输所有信息)。

条件查询where:在基本查询上添加where条件(运算符筛选)列表

分组查询group by:分组后通常会计算每个组的数据,因此要结合聚合函数使用

其中字段值为null的数据不参与聚合函数的计算,因此要做统计的话要选择一个非空字段,比如id

where与having都是条件查询,它们的区别是:

1. 执行时机不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

2. 判断条件不同: where不能对聚合函数进行判断,而having可以。

排序查询order by:在分组查询的基础上加上order by,排序方式只有升序ASC和降序DESC,默认是升序,因此ASC可省略

分页查询limit:

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

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

相关文章

双剑合璧,网络无敌!Windows Server 2012 R2双网卡绑定实战教程

文章目录 双剑合璧,网络无敌!Windows Server 2012 R2双网卡绑定实战教程1 背景信息2 配置步骤2.1 登录服务器2.2 分别清除两块网卡的配置2.3 进入“本地服务器”界面2.4 进入“NIC组合”界面2.5 创建网卡绑定组2.6 设置新建组参数2.7 查看已创建的网卡组…

【计算机硬件蓝光光驱】

蓝光光驱(Blu-ray Disc Drive)是一种光盘驱动器,用于读取和写入蓝光光盘。蓝光光盘是一种高容量、高清晰度的光存储介质,用于存储视频、音频、数据等多种媒体内容。蓝光光驱的名称“蓝光”来源于其使用的蓝色激光光束,…

Windows 安装 及解决 tvm 无法打开 源 文件 “dmlc/logging.h“

如果你在编译 TVM 时遇到 dmlc/logging.h 文件缺失的问题,很可能是因为在克隆 TVM 仓库时没有包含其子模块,而这些子模块(如 dmlc-core)是通过 Git 管理的。解决步骤 安装 Git: 如果你还没有安装 Git,需要先…

ES6学习笔记(九)——class(类)

1. 封装 传统面向对象的编程序语言都是【类】的概念,对象都是由类创建出来,然而早期 JavaScript 中是没有类的,面向对象大多都是基于构造函数和原型实现的,但是 ECMAScript 6 规范开始增加了【类】相关的语法,使得 Ja…

虚幻5|AI视力系统,听力系统,预测系统(1)视力系统

继宠物伴随系统初步篇后续 虚幻5|AI巡逻宠物伴随及定点巡逻—初步篇-CSDN博客 一,听力系统 1.打开宠物ai的角色蓝图 2.选中ai感知组件 右侧细节,找到ai感知,添加感知配置,我们需要的是ai视力配置 3.选中左侧创建的ai感知组件&…

CLRerNet推理详解及部署实现(上)

目录 前言1. 概述2. 环境配置3. Demo测试4. ONNX导出初探5. ONNX导出优化6. ONNX导出总结结语下载链接参考 前言 继续我们的车道线检测任务,之前我们分享了基于 anchor 的 LaneATT 模型以及 CVPR2022 的 SOTA 方案 CLRNet,这里我们分享 WACV2024 中的一个…

如何在Linux系统上使用ONLYOFFICE文档编辑PDF文件

​对Linux用户来说,得益于各类免费PDF编辑器,编辑PDF文件从来都不是无解难题。 如果您需要为PDF文件添加注释、留下批注、编辑已有文本或添加新文本框、插入图片或形状、删除某些页面或永久删除页面,您始终可以找到合适的应用,轻…

有关JavaScript的函数定义和函数的两种声明方式

1.函数 函数是一段可重复执行的代码块,它可以接收参数,并返回结果。在JavaScript中,函数用于封装可重用的代码,提高代码的可读性和可维护性。 1.1 函数的定义 函数的定义包括以下几个部分: 函数名称:用…

Hive3:表性能优化-分区与分桶

一、分区 1、概念 我们知道,一个Hive表,对应的HDFS是一个文件夹。 那么,当数据非常多的时候,存放在一个文件夹中,后期进行查询操作会影响性能。 所以,Hive引入了分区管理的方式。 本质就是,在…

Datawhale X 魔搭 AI夏令营-AIGC方向-LoRA学习笔记

LoRA(Low-Rank Adaptation)是一种用于优化大规模预训练模型的微调技术,特别适用于在资源有限的情况下,对模型进行高效且低成本的微调。LoRA的核心思想是通过低秩分解方法,仅微调模型的少数参数,从而显著减少…

关于图像亮度相关的调试总结

1、问题背景 关于图像亮度的调试,是整个ISP中非常重要的一块,它决定了图像整体的亮度、对比度、细节、以及噪声,对人眼有非常直观的感受, 之前也就具体问题,整理过几篇图像亮度模块相关的调试总结: 关于图…

标题中有多少个字符(c语言)

1.//描述 //凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? //注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字 符数时,空格和换行符不计算在内。 //输入描述: //输入文件只有一…

【12】KMP和Manacher算法

目录 一.KMP算法解决的问题 二.Manacher算法解决的问题 基本概念 优化 一.KMP算法解决的问题 暴力求解复杂度O(N*M) next数组:next[i]表示arr[0...i-1]的前缀和后缀的最长公共长度。 Y位置失败,将前缀和后缀完全匹配,将前缀的部分和后缀对…

软件测试---接口自动化

一、pythonrequests模块 (1)requests全局观 安装:pip install requests 1.发送请求 ①requests.get() 发送get请求 ②requests.post() 发送post请求 data和json的区别:取绝于你需要传递的参数的类型。 files:文件上…

大学成长之路:如何从烧锅炉的逆袭成为FPGA大厂高管

如何从烧锅炉的逆袭成为FPGA大厂Sales Director 在即将到来的开学季,很多学子从高中生成为一个大学生,走入新的征程。大学生涯是人生的一个非常重要的阶段,如何度过大学4年的时光,并学有所成,是很多大学新生和家长思考…

Spring IoCDI(下)—DI的尾声

我们之前学习了控制反转IoC,接下来就开始学习依赖注入DI的细节。 依赖注入是一个过程,是指IoC容器在创建Bean时,去提供运行时所依赖的资源,而资源指的就是对象。我们使用 Autowired 注解,完成依赖注入的操作。简单来说…

AMBA-CHI协议详解(六)

AMBA-CHI协议详解(一) AMBA-CHI协议详解(二) AMBA-CHI协议详解(三) AMBA-CHI协议详解(四) AMBA-CHI协议详解(五) AMBA-CHI协议详解(六&#xff09…

JavaSocket编程+JDBC实战技术

一、JavaSocket编程 1.1HTTP协议 后端原理 2. 特点 同步:就是两个任务执行的过程中,其中一个任务要等另一个任务完成某各阶段性工作才能继续执行,如厨师A炒番茄,将葱花放入锅中,然后需要放入番茄,但是厨…

【自动驾驶】控制算法(二)三大坐标系与车辆运动学模型

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

Dubbo服务自动Web化之路

本文字数:6047字 预计阅读时间:40分钟 01 故障出现 事情起源于一次故障,2023年12月14日14点26分,大量Dubbo服务报出异常,无法链接zookeeper集群: Session 0x0 for server dubboZk.xxx.com/10.x.x.x:2181, C…