Skip to main content

moregeek program

夯实基础,不能忽视的“数据库”_安东尼漫长的技术岁月的博客-多极客编程

如果我们把数据比作“米”,数据库就是“米仓”。没错,从标准定义来讲,数据库就是按照数据结构来组织,存储和管理数据的仓库。

  • 数据库的设计初衷?

就像米多了要修建米仓一样,在操作系统出现之后,随着计算机应用范围的扩大、需要处理的数据迅速膨胀。

起初,数据与程序一样,以简单的文件作为主要存储形式。以这种方式组织的数据在逻辑上更简单,但可扩展性差,访问这种数据的程序需要了解数据的具体组织格式。当系统数据量大或者用户访问量大时,应用程序还需要解决数据的完整性、一致性以及安全性等一系列的问题。

因此,必须开发出一种系统软件,它应该能够像操作系统屏蔽了硬件访问复杂性那样,屏蔽数据访问的复杂性。由此产生了数据管理系统,即数据库。

  • 数据库很必要吗?

答案是肯定的。刘慈欣的小说《三体》中有这样一段描述:

下面,贯穿人列计算机的系统总线上的轻转兵快速运动起来,总线立刻变成了一条湍急的河流.这河流沿途又分成无数条细小的支流,渗入到各个模块阵列之中。很快,黑白旗的涟漪演化成汹涌的浪潮,激荡在整块主板上。中央的CPU区激荡最为剧烈,像一片燃烧的火药。突然,仿佛火药燃尽,CPU区的扰动渐渐平静下来,最后竟完全静止了,以它为圆心,这静止向各个方向飞快扩散开来,像快速封冻的海面,最后整块主板大部分静止了,其间只有一些零星的死循环在以不变的节奏没有生气地闪动着,显示阵列中出现了闪动的红色。
——《三体》·刘慈欣

他描述了这样的一个场景,三千万个人组成了一个计算机来进行计算工作,一个人只表示一个比特位。

虽然现实没这么夸张,但是确实存在过由人为计算单位组成的计算机的。早在 1920 年代的美国,由 2 万人组成的计算机器管理着全国 7000 万人的指纹数据,主要用于出入境指纹收集。

没有数据库,用这种方式去查询信息,无疑是一种巨大的资源消耗。单从“有用”的角度出发看,数据库很必要,它就是来解决信息的插入和查询的。

对于数据库,你可以不熟练掌握,但一定要知道它的一些基本知识,往下看吧。

数据库分类

目前数据库主要分为传统的关系型数据库(SQL)和非关系型数据库(NoSQL),当然还有近几年新出现的 NewSQL 新型数据库、分布式数据库等,暂时先不作额外拓展。

其中最关键的就是关系型数据库和非关系型数据库。

  • 什么是关系型数据库?

传统的关系型数据库有着悠久的历史,从上世纪60年代开始就已经在航空领域发挥作用。因为其严谨的一致性以及通用的关系型数据模型接口,收获了很大一批的用户。

关系型数据库把数据以表的形式进行储存,然后再各个表之间建立关系,通过这些表之间的关系来操作不同表之间的数据。

常见的关系型数据库有 MySQL、Oracle、PostgreSQL 等等。

举个例子:课程管理系统的学生信息表

夯实基础,不能忽视的“数据库”_数据

  • 什么是非关系型数据库?

到了 2000 年代,由于互联网应用的兴起,互联网应用需要支持大规模的并发用户,并且要保持永远在线。但是传统的关系型数据库却因为无法支持如此大规模数据和访问量而成为了整个系统的瓶颈。

最简单直接的办法是不断升级硬件系统,使用更多的CPU,内存和硬盘。但是这种方法只是提高了性能,并且呈现明显的收益递减效应。更糟糕的是,将数据库从一个机器迁移到另一个机器是一个比较复杂的过程,通常需要较长的停机时间。而这对于 Web 应用来说是不可接受的。

这些问题引发了 2000 年代 NoSQL 的诞生。NoSQL 的关键是它们放弃了传统关系型数据库的强事务保证和关系模型,通过所谓最终一致性和非关系数据模型(例如键值对,图,文档)来提高 Web 应用所注重的高可用性和可扩展性。

相比于关系型数据库,表与表之间是有关系的,利用表与表之间的关系进行各种操作。NoSQL 没有固定的表结构,且数据之间不存在表与表之间的关系,数据之间可以是独立的,因此 NoSQL 也可以用于分布式系统上。

举个例子:NoSQL 中有个大名鼎鼎的代表 —— Redis,它是一个非常快速的非关系类型的 Key-Value 数据库,还记得我们讲过,散列表的最大优先就是检索速度快,所以 Redis 常被用做缓存。

MySQL

MySQL 就是最流行的开源数据库,它的特性有:性能高、成本低、可靠性好,被大规模应用在各大网站或 app 中。

接下来引入 MySQL 数据库的一些主要概念以及重要命令,需要重点关注:

  • 概念
    主键: 用来执行每个表的关键性数据,并且,每个表中只有一个主键;
    外键: 这应该是 MySQL,使用外键来关联不同表;
    复合键: 将多个键组合一起来作为索引值。一般用于复合索引;
    索引: 借用一组值,来对表进行排序,可以比作书的目录;
    事务:是指作为单个逻辑工作单位执行的一系列操作,要么完全的执行,要么完全的不执行;
  • 命令
    创建数据库:
create database db1;

创建表:

create table student(
id int,
name varchar(32),
age int ,
score double(4,1),
birthday date,
insert_time timestamp
);

插入数据:

insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);

删除数据:

delete from 表名 where 列名  = 值;

查询语句:

// 查询年龄大于等于20 小于等于30        
SELECT * FROM student WHERE age >= 20 && age <=30;

排序:

// 默认升序
SELECT * FROM person ORDER BY math;

分组查询:

// 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;

分页查询:

// 每页显示3条记录 第1页

SELECT * FROM student LIMIT 0,3; --

以上命令行即使是不做数据库相关工作,也应该大致混个眼熟。比方在新一代的文本管理工具 Notion ,很多功能都体现出数据库的操作思路,比如排序、分组等,数据库的设计特性在不断扩大它的影响。


关于数据库的范式问题,也是数据库知识重点之一(即使是前端也应该知道,本瓜犹记得大学初学时的场景),后文再介绍吧~

OK,以上便是本篇分享。点赞关注评论,为好文助力👍

我是掘金安东尼 🤠 100 万人气前端技术博主 💥 INFP 写作人格坚持 1000 日更文 ✍ 关注我,安东尼陪你一起度过漫长编程岁月 🌏

©著作权归作者所有:来自51CTO博客作者掘金安东尼的原创作品,请联系作者获取转载授权,否则将追究法律责任

#yyds干货盘点#组件化漫谈_文本、的博客-多极客编程

今天前端生态里面,​​React​​、​​Angular​​和​​Vue​​三分天下。虽然这三个框架的定位各有不同,但是它们有一个核心的共同点,那就是提供了组件化的能力。​​W3C​​也有​​Web Component​​的相关草案,也是为了提供组件化能力。今天我们就来聊聊组件化是什么,以及它为什么这么重要。​其实组件化思想是一种前端技术非常自然的延伸,如果你使用过​​​HTML​​​,相信你一定

#yyds干货盘点# 前端歌谣的刷题之路-第七十三题- 点击按钮隐藏按钮_前端歌谣的博客-多极客编程

 前言我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣题目请补全JavaScript代码,实现一个盒子的关闭按钮功能。 要求: 1. 使类为"btn"的div元素中心点定位在类为"bo

#yyds干货盘点# 前端歌谣的刷题之路-第七十四题-直角三角形_前端歌谣的博客-多极客编程

前言我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣题目请补全JavaScript代码,要求在页面上渲染出一个直角三角形,三角形换行要求使用"br"实现。三角形如下: * ** ***

#yyds干货盘点# 前端歌谣的刷题之路-第七十五题-返回文件扩展名_前端歌谣的博客-多极客编程

前言我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣题目请补全JavaScript代码,要求以字符串的形式返回文件名扩展名,文件名参数为"filename"。编辑 核心代码<!D

夯实基础,数据库的第1、2、3范式_安东尼漫长的技术岁月的博客-多极客编程

承接前一篇,本篇来探讨下数据库的范式问题。数据库范式简单来说,数据库范式可以避免数据冗余,减少数据库的存储空间,并且减轻维护数据完整性的成本。它是关系数据库核心的技术之一。关系数据库有六种范式,各种范式的层次呈递增关系,越高的范式数据库冗余越小。这六种范式分别是:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范

#yyds干货盘点# 前端歌谣的刷题之路-第七十七题-单向绑定_前端歌谣的博客-多极客编程

前言我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣题目请补全JavaScript代码,要求每当id为"input"的输入框值发生改变时触发id为"span"的标签内容同步改变。 注意

#yyds干货盘点#组件化漫谈_文本、的博客-多极客编程

今天前端生态里面,​​React​​、​​Angular​​和​​Vue​​三分天下。虽然这三个框架的定位各有不同,但是它们有一个核心的共同点,那就是提供了组件化的能力。​​W3C​​也有​​Web Component​​的相关草案,也是为了提供组件化能力。今天我们就来聊聊组件化是什么,以及它为什么这么重要。​其实组件化思想是一种前端技术非常自然的延伸,如果你使用过​​​HTML​​​,相信你一定

vue/js自定义指令:实现元素滑动、移动端适配以及边界处理_qq6310682252356的博客-多极客编程

​​§​​核心属性​​Element.clientWidth​​:元素可视宽度。​​Element.clientHeight​​:元素可视高度。​​MouseEvent.clientX​​:鼠标相对于浏览器左上顶点的水平坐标。​​MouseEvent.clientY​​:鼠标相对于浏览器左上顶点的垂直坐标。​​Touch.clientX​​:触点相对于浏览器左上顶点的水平坐标(移动端属性)。​​T

#yyds干货盘点# 前端歌谣的刷题之路-第七十三题- 点击按钮隐藏按钮_前端歌谣的博客-多极客编程

 前言我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣题目请补全JavaScript代码,实现一个盒子的关闭按钮功能。 要求: 1. 使类为"btn"的div元素中心点定位在类为"bo

web技术分享| 虚拟列表实现_mb60af473914346的博客-多极客编程

针对过多数据列表展示造成过多节点渲染使页面卡死或卡顿,特地封装一个简易的虚拟列表,大家可在此基础上进行针对修改 组件基于 vue3 + element plus + ts + tailwindcss 开发 设计思路 分为三部分: 父容器占位; 一个子容器展示通过滚动条计算的数据相当于真实渲染节点; 一个子容器作为虚拟列表不渲染列表提供列表真实高度显示滚动条 实现 页面结构 <el-s

#yyds干货盘点# 前端歌谣的刷题之路-第七十五题-返回文件扩展名_前端歌谣的博客-多极客编程

前言我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣题目请补全JavaScript代码,要求以字符串的形式返回文件名扩展名,文件名参数为"filename"。编辑 核心代码<!D

c4d搭配闪光动画效果_wx612751f2ed44d的博客-多极客编程

前言目前的 C4D 设计受到很多人的喜欢,因为其效果呈现很有立体感、空间感。而且搭配一定的动画效果可以更突出灵动、高技术的视觉效果。本次将讲解下面 C4D 图动画效果的制作,主要由两大效果组成:闪光以及球体椭圆效果。本章先讲解闪光效果制作。1-1 C4D动态效果图一、底图以及闪烁图准备(1)原始设计稿:一开始设计师给的设计图是这样子的 ↓↓↓1-2 原始设计稿(2)设计稿剖析:那如何才能做到闪烁效