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

目录

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.rhkb.cn/news/403776.html

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

相关文章

OpenCv图像处理: 时域滤波与频域滤波

时域滤波: 空间域滤波的步骤一般如下: 1. 选择滤波器 选择一种低通滤波器,常见的包括: 均值滤波(平均滤波器)高斯滤波(Gaussian filter) 2. 定义滤波器核 根据选择的滤波器类型&…

【C++篇】迈入新世界的大门——初识C++(上篇)

文章目录 C发展历史C起源C版本更新C23小故事 C在工作领域的应用C参考网站及文档书籍编程语言排行榜C难度参考文档书籍参考文档参考书籍 C第一个程序命名空间为什么要使用namespacenamespace定义及规则命名空间使用 C输入&输出名字含义 缺省参数函数重载 C发展历史 C起源 …

VUE中出现Cannot find module ‘@/api/xxx.js‘ or its corresponding type declarations

在使用VSCode编写Vue程序时发现之前使用以下代码时却报出了错误 import {getEmployeeList} from /api/employee\ 保证文件地址正确且其中的方法也可以正常调用,只是报出了错误,该行代码上加入一个‘//ts-ignore’就可以解决。 修改后的代码 //ts-ig…

python基础篇(15):闭包

在函数嵌套的前提下&#xff0c;内部函数使用了外部函数的变量&#xff0c;并且外部函数返回了内部函数&#xff0c;我们把这个使用外部函数变量的内部函数称为闭包。 1 简单闭包 def outer(logo):def inner(msg):print(f"<{logo}>{msg}<{logo}>")retu…

苹果(ios)私钥证书和profile文件申请教程

苹果&#xff08;ios&#xff09;私钥证书&#xff0c;可以理解为p12后缀的苹果证书&#xff0c;我们在苹果开发者中心可以生成cer格式的证书&#xff0c;然后使用mac电脑或者第三方转换成p12后缀格式的私钥证书。 证书profile文件&#xff0c;又叫描述文件&#xff0c;这个文…

Android系统和开发--安全性和权限管理 SELinux 策略 安全架构

学习android权限知识 SElinux chmod -R 777 ./ setenforce 0 adb root su fastboot oem at-unlock-vboot adb disable-verity Android权限 Android系统是基于Linux内核构建的&#xff0c;因此它继承了Linux的权限管理机制。Android应用需要通过声明权限来访问系统的某些功能&…

融资融券利率和手续费详情,融资融券开通门槛50W资产必须沪深市值?

融资融券利率和手续费 融资融券就是可以向证券公司借钱借券来进行证券交易&#xff0c;实现杠杆操作。融资是向证券公司借款买入股票&#xff0c;而融券则是向证券公司借入股票并卖出。 融资融券的利率是浮动的、个性化的&#xff0c;但一般最低可以达到4.0%~5.0%&#xff0c…

Selenium + Python 自动化测试14(发送报告)

我们的目标是&#xff1a;按照这一套资料学习下来&#xff0c;大家可以独立完成自动化测试的任务。 上一篇我们讨论了使用HTMLTestRunner 生成HTML报告的方法。 本篇文章我们接着讲生成HTML报告是否可以自动邮件发送出去&#xff0c;提高我们测试报告的及时性&#xff0c;方便…

WordPress美化节日灯笼插件,适合春节的时候使用

源码介绍&#xff1a; WordPress美化节日灯笼插件&#xff0c;适合每年过年的时候安在网站上使用&#xff0c;这款插件可以备用着&#xff0c;一款WordPress节日灯笼美化插件&#xff0c;可以给网页自动加一个灯笼效果使用说明&#xff1a;到网站WP后台 - 插件 - 安装插件 - 上…

Java代码基础算法练习-乘阶求和-2024.08.18

对应的源代码可以在我的 Gitee 仓库中找到&#xff0c;欢迎star~ [Gitee 仓库](https://gitee.com/yukongji/java-basic-algorithm) 任务描述&#xff1a; 求Sn1!2!3!4!5!…n!之值&#xff0c;其中n是一个数字(n<10)。 解决思路&#xff1a; 输入: 读取用户输入的 n 值。检查…

Android:使用Gson常见问题(包含解决将Long型转化为科学计数法的问题)

一、解决将Long型转化为科学计数法的问题 1.1 场景 将一个对象转为Map类型时&#xff0c;调用Gson.fromJson发现&#xff0c;原来对象中的long类型的personId字段&#xff0c;被解析成了科学计数法&#xff0c;导致请求接口失败&#xff0c;报参数错误。 解决结果图 1.2、Exa…

leetcode108.把升序数组转换成二叉搜索树

题目描述 [-10,-3,0,5,9] 转换成如下二叉搜索树&#xff1a; 解题的核心原理是&#xff1a;二叉搜索树的中序遍历结果是一个升序数组&#xff0c;所以根节点的数值&#xff0c;也位于数组的中部。 class Solution {public TreeNode sortedArrayToBST(int[] nums) {return h…

基于Hadoop的汽车大数据分析系统设计与实现【爬虫、数据预处理、MapReduce、echarts、Flask】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍爬虫数据概览HIve表设计Cars Database Tables1. cars_data2. annual_sales_volume3. brand_sales_volume4. city_sales_volume5. sales_volume_by_year_and_brand6. sales_distribu…

MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74)

专栏往期文章,包含本章 MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74) 一、算法介绍二、算法实现1.代码2.效果总结一、算法介绍 手动实现一种基于高度覆盖值的建筑物点云提取方法,适用于高大的城市建筑物,比只利用高度提取建筑物的方法更加稳定和具有价值,主要…

IntelliJ IDEA 集成 ShardingSphere-JDBC 访问分库分表

背景 众所周知&#xff0c;IntelliJ IDEA 是 Java 领域常用的开发工具之一&#xff0c;IDEA Ultimate&#xff08;旗舰版&#xff09;或其他例如 DataGrip 等 Intellij 平台的工具都集成了对数据库的访问能力。 但是&#xff0c;对于做了分库分表的项目&#xff0c;直接使用 …

消防隐患在线小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;消防隐患举报管理&#xff0c;消防隐患分类管理&#xff0c;统计分类管理&#xff0c;处理结果管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;我…

学习笔记 韩顺平 零基础30天学会Java(2024.8.18)

P514 Vector源码解读 P515 双向链表模拟 LinkedList的添加和删除可以通过改变节点的指向完成 遍历的时候&#xff0c;如果要重新遍历&#xff0c;要把指针调回到最前面或者最后面&#xff0c;才能重新全部遍历一次 插入的时候&#xff0c;插入对象的next和pre都要操作&#xff…

探索tailwindcss多主题切换

现在的多主题切换基本上都是用的 css 变量的形式, 而tailwindcss也支持 css 变量定义主题的方式 至于为什么用 tailwindcss变量, 还是因为 tailwind 写类名提示比较方便, 也不需要再在css或者style中去一个个var的形式去写变量了 这里我在assets/style/theme文件夹中创建了三个…

音视频开发

通过多线程分别获取高分辨率(1920 * 1080)和低分辨率(1280 * 720) 初始化VI模块 初始化HIGH VENC模块 初始化LOW VENC模块 初始化RGA模块 绑定 VI和HIGH VENC 绑定 VI和RGA 创建线程 HIGH VENC处理 RGA处理 LOW VENC处理 销毁 QP原理的讲解 QP参数调节&#xff0c;指的是量化…

【后端记录】修复MySql的错误修改的数据记录【binlog修复】

前言 今天入门后端的时候&#xff0c;不小心改了非预期的数据&#xff0c;因为还没学到事务&#xff0c;所以恢复数据还比较麻烦&#xff0c;站在巨人的肩膀上还是解决了&#xff0c;原文连接在下面 https://blog.csdn.net/qq_42874315/article/details/140480570 解决办法 原…