Day35.关系型数据库入门

35、数据仓库聚合技术:实现高效查询与灵活管理 本文深入探讨了数据仓库中的聚合技术,涵盖聚合基础、聚合导航与生成机制、层次结构应用及替代摘要设计。通过实例和流程图解析,阐明如何利用聚合提升查询性能与管理灵活性,并分析不同实现方式的优劣。文章还介绍了实际案例与未来发展趋势,帮助读者构建高效、可靠的数据仓库系统。 阅读详情

关系型数据库入门



前言

本文主要展示了关系型数据库MySQL的概述,简介。


一. 关系型数据库概述

  1. 数据持久化 : 将数据保存到能够长久保存数据的存储介质中,在掉电的情况下数据也不会丢失。

  2. 数据库发展史 : 网状数据库、层次数据库、关系数据库、NoSQL数据库。

    1970年,IBM的研究员E.F.Codd在Communication of the ACM上发表了名为A Relational Model of Data for Large Shared Data Banks的论文,提出了关系模型的概念,奠定了关系模型的理论基础。后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。

  3. 关系数据库特点。

    • 理论基础:集合论和关系代数。

    • 具体表象:用二维表(有行和列)组织数据。

    • 编程语言:结构化查询语言(SQL)。

  4. ER模型(实体关系模型)和概念模型图。

    ER模型,全称为实体关系模型(Entity-Relationship Model),由美籍华裔计算机科学家陈品山先生提出,是概念数据模型的高层描述方式,如下图所示。
    ER模型

    • 实体 - 矩形框
    • 属性 - 椭圆框
    • 关系 - 菱形框
    • 重数 - 1:1(一对一) / 1:N(一对多) / M:N(多对多)

    实际项目开发中,我们可以利用数据库建模工具(如:PowerDesigner)来绘制概念数据模型(其本质就是ER模型),然后再设置好目标数据库系统,将概念模型转换成物理模型,最终生成创建二维表的SQL(很多工具都可以根据我们设计的物理模型图以及设定的目标数据库来导出SQL或直接生成数据表)。

    conceptual模型

  5. 关系数据库产品。

    • Oracle - 目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理的功能。在Oracle最新的12c版本中,还引入了多承租方架构,使用该架构可轻松部署和管理数据库云。
    • DB2 - IBM公司开发的、主要运行于Unix(包括IBM自家的AIX)、Linux、以及Windows服务器版等系统的关系数据库产品。DB2历史悠久且被认为是最早使用SQL的数据库产品,它拥有较为强大的商业智能功能。
    • SQL Server - 由Microsoft开发和推广的关系型数据库产品,最初适用于中小企业的数据管理,但是近年来它的应用范围有所扩展,部分大企业甚至是跨国公司也开始基于它来构建自己的数据管理系统。
    • MySQL - MySQL是开放源代码的,任何人都可以在GPL(General Public License)的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。
    • PostgreSQL - 在BSD许可证下发行的开放源代码的关系数据库产品。

二. MySQL简介

MySQL最早是由瑞典的MySQL AB公司开发的一个开放源码的关系数据库管理系统,该公司于2008年被昇阳微系统公司(Sun Microsystems)收购。在2009年,甲骨文公司(Oracle)收购昇阳微系统公司,因此在这之后MySQL成为了Oracle旗下产品。

MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用于中小型网站开发。随着MySQL的不断成熟,它也逐渐被应用于更多大规模网站和应用,比如维基百科、谷歌(Google)、脸书(Facebook)、淘宝网等网站都使用了MySQL来提供数据持久化服务。

甲骨文公司收购后昇阳微系统公司,大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社区对于Oracle是否还会持续支持MySQL社区版(MySQL的各个发行版本中唯一免费的版本)有所担忧,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB(以他女儿的名字命名的数据库)。有许多原来使用MySQL数据库的公司(例如:维基百科)已经陆续完成了从MySQL数据库到MariaDB数据库的迁移。

  1. 安装和配置

    说明:下面的安装和配置都是以CentOS Linux环境为例,如果需要在其他系统下安装MySQL,读者可以自行在网络上查找对应的安装教程)。

    • 刚才说过,MySQL有一个分支版本名叫MariaDB,该数据库旨在继续保持MySQL数据库在GNU GPL下开源。如果要使用MariaDB作为MySQL的替代品,可以使用下面的命令进行安装。

      yum install mariadb mariadb-server
      
    • 如果要安装官方版本的MySQL,可以在MySQL官方网站下载安装文件。首先在下载页面中选择平台和版本,然后找到对应的下载链接。下面以MySQL 5.7.26版本和Red Hat Enterprise Linux为例,直接下载包含所有安装文件的归档文件,解归档之后通过包管理工具进行安装。

      wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
      tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
      

      如果系统上有MariaDB相关的文件,需要先移除MariaDB相关的文件。

      yum list installed | grep mariadb | awk '{print $1}' | xargs yum erase -y
      

      接下来可以按照如下所示的顺序用RPM(Redhat Package Manager)工具安装MySQL。

      rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
      rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
      rpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
      rpm -ivh mysql-community-devel-5.7.26-1.el7.x86_64.rpm
      rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
      rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
      

      可以使用下面的命令查看已经安装的MySQL相关的包。

      rpm -qa | grep mysql
      
    • 配置MySQL。

      MySQL的配置文件在/etc目录下,名为my.cnf,默认的配置文件内容如下所示。如果对这个文件不理解并没有关系,什么时候用到这个配置文件什么时候再了解它就行了。

      cat /etc/my.cnf
      
      # For advice on how to change settings please see
      # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
      
      [mysqld]
      #
      # Remove leading # and set to the amount of RAM for the most important data
      # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
      # innodb_buffer_pool_size = 128M
      #
      # Remove leading # to turn on a very important data integrity option: logging
      # changes to the binary log between backups.
      # log_bin
      #
      # Remove leading # to set options mainly useful for reporting servers.
      # The server defaults are faster for transactions and fast SELECTs.
      # Adjust sizes as needed, experiment to find the optimal values.
      # join_buffer_size = 128M
      # sort_buffer_size = 2M
      # read_rnd_buffer_size = 2M
      datadir=/var/lib/mysql
      socket=/var/lib/mysql/mysql.sock
      
      # Disabling symbolic-links is recommended to prevent assorted security risks
      symbolic-links=0
      
      log-error=/var/log/mysqld.log
      pid-file=/var/run/mysqld/mysqld.pid
      
    • 启动MySQL服务。

      可以使用下面的命令来启动MySQL。

      service mysqld start
      

      在CentOS 7中,更推荐使用下面的命令来启动MySQL。

      systemctl start mysqld
      

      启动MySQL成功后,可以通过下面的命令来检查网络端口使用情况,MySQL默认使用3306端口。

      netstat -ntlp | grep mysql
      

      也可以使用下面的命令查找是否有名为mysqld的进程。

      pgrep mysqld
      
    • 使用MySQL客户端工具连接服务器。

      命令行工具:

      mysql -u root -p
      

      说明:启动客户端时,-u参数用来指定用户名,MySQL默认的超级管理账号为root;-p表示要输入密码(用户口令);如果连接的是其他主机而非本机,可以用-h来指定连接主机的主机名或IP地址。

      如果是首次安装MySQL,可以使用下面的命令来找到默认的初始密码。

      cat /var/log/mysqld.log | grep password
      

      上面的命令会查看MySQL的日志带有password的行,在显示的结果中root@localhost:后面的部分就是默认设置的初始密码。

      修改超级管理员(root)的访问口令为123456。

      set global validate_password_policy=0;
      set global validate_password_length=6;
      alter user 'root'@'localhost' identified by '123456';
      

      说明:MySQL较新的版本默认不允许使用弱口令作为用户口令,所以我们通过上面的前两条命令修改了验证用户口令的策略和口令的长度。事实上我们不应该使用弱口令,因为存在用户口令被暴力破解的风险。近年来,攻击数据库窃取数据和劫持数据库勒索比特币的事件屡见不鲜,要避免这些潜在的风险,最为重要的一点是不要让数据库服务器暴露在公网上(最好的做法是将数据库置于内网,至少要做到不向公网开放数据库服务器的访问端口),另外要保管好root账号的口令,应用系统需要访问数据库时,通常不使用root账号进行访问,而是创建其他拥有适当权限的账号来访问。

      再次使用客户端工具连接MySQL服务器时,就可以使用新设置的口令了。在实际开发中,为了方便用户操作,可以选择图形化的客户端工具来连接MySQL服务器,包括:

      • MySQL Workbench(官方提供的工具)
      • Navicat for MySQL(界面简单优雅,功能直观强大)
      • SQLyog for MySQL(强大的MySQL数据库管理员工具)
  2. 常用命令。

    • 查看服务器版本。

      select version();
      
    • 查看所有数据库。

      show databases;
      
    • 切换到指定数据库。

      use mysql;
      
    • 查看数据库下所有表。

      show tables;
      
    • 获取帮助。

      ? contents;
      ? functions;
      ? numeric functions;
      ? round;
      
      ? data types;
      ? longblob;
      
      
      

总结

今天主要是学习了关系型数据库,目前主流的就是MySQL嘛。所以主要展示了一下MySQL的安装配置和简单使用。

溜了溜了,脑壳疼。Loading(35/100)。。。

day35 MySQL ① 初始化 MySQL解压后的 bin 目录下有一大堆的可执行文件,执行如下命令初始化数据: cd c:\mysql-5.7.16-winx64\bin mysqld --initialize-insecure 启动MySQL服务 # 进入可执行文件目录 cd c:\mysql-5.7.16-winx64\bin # 启动MySQL服务 mysqld 启动MySQL客户端并连接M... 阅读详情

相关推荐

入门级数据库教程(关系型数据库)

非常基础的数据库教程。内容涉及数据库以及关系型数据库概念说明,基本sql语法。包含三个pdf文件。刚接触数据库或者对数据库概念有疑惑的推荐看看,数据库大牛就免啦。。。

【MySQL】入门篇—数据库基础:关系数据库概念

关系数据库通过表格化的结构和明确的关系,使得数据的管理和查询变得高效和灵活。无论是企业的客户信息、产品数据,还是社交媒体上的用户互动,数据都是推动业务和决策的核心。关系数据库管理系统(RDBMS)是一种广泛使用的数据管理工具,它通过结构化的方式存储数据,使得数据的查询、更新和管理变得高效和可靠。在上面的“书籍”表中,第一行代表一本书《数据库系统》,而列“书名”存储了书籍的名称。外键是一个表中的字段,它引用另一个表的主键,用于建立表之间的关系。可以是另一个表(如“借阅者”表)的主键,用于标识借书的人。

thinking_chou的专栏 839

Gelsight Sensor 重建 height-map —— 使用 DST-II 算子的快速泊松求解

Gelsight Sensor 重建 height-map —— 使用 DST-II 算子的快速泊松求解 gelsight gelsight传感器具有软弹性体的接触表面,可以精确的重建物体形状还可以从传感器的变形推断接触力和滑动. 使用 DST-II 算子的快速泊松求解 height 文章:GelSight: High-Resolution Robot Tactile Sensors for Estimating Geometry and Force 文章最后求解的方程其实是: p=∂2u∂x2+∂

qq_42236622的博客 1243

并查集优化指南:如何用路径压缩和按秩合并提升你的C++代码效率

本文深入解析了并查集在C++中的两项核心优化技术:路径压缩与按秩合并。通过对比基础实现与优化版本的性能差异,详细阐述了它们如何协同工作,将操作时间复杂度从近乎线性降低至阿克曼函数的反函数级别,从而在处理大规模动态连通性问题时实现数量级的效率提升。

purple的博客 340

MAPPO实战:从理论到代码的协作智能体训练指南

本文详细介绍了MAPPO算法在多智能体协作训练中的实战应用,从理论基础到代码实现全面解析。通过对比PPO与MAPPO的差异,深入讲解CTDE框架、网络架构设计、参数调优等关键环节,并提供实际项目中的调参经验和常见问题解决方案,帮助开发者快速掌握这一强化学习前沿技术。

weixin_42561040的博客 265

别再手动盘点了!教你给微信小程序仓库系统加个‘扫码枪’:完整扫码入库与查询功能实现

本文详细介绍了如何为微信小程序仓库系统添加扫码入库与查询功能,实现零硬件成本的智能仓储管理。通过优化摄像头参数、增强动态识别算法和深度整合业务逻辑,提升扫码精度和效率,同时提供混合查询方案应对复杂场景。这套方案显著提升入库效率,降低错误率,适用于各类仓储管理需求。

weixin_30844577的博客 298

数据库入门笔记(基础篇)

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。目的:保证数据库中的数据的正确,有效性和完整性。分类:注意:约束时作用于表中字段上的,可以在创建表/修改表的时候添加约束。外键:用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。SQL语句中嵌套select语句,称为嵌套查询,又称为子查询。子查询外部的语句可以是insert/update/delete/select的任何一个。

conquer_jsj的博客 3249

Blender - Shrinkwrap - 更方便的制作贴合模型的表面来建模

Shrinkwrap 修改器 使用 Blender 想要快速建模可以贴合现有模型表面的效果:衣服、皮肤、等效果,可以使用 Shrinkwrap 修改器,这个修改器的名字其实按照英文上的理解,翻译为:收缩的包裹效果 应用 如这块铁皮,它要贴合机身弯曲的效果,可以先建好一个铁皮,再 Shrinkwrap 到一个指定的网格上 留意的参数 Target 要贴合的对象(目前我已知是可以贴合到网格对象上,实在是方便) VertexGroup 顶点组,和之前讲到过的,顶点组可以组设顶点的权重,意思这个可.

Jave.Lin 的学习笔记 6070

36-38.关系数据库入门MySQL

关系数据库入门 关系数据库概述 数据持久化 - 将数据保存到能够长久保存数据的存储介质中,在掉电的情况下数据也不会丢失。 数据库发展史 - 网状数据库、层次数据库、关系数据库、NoSQL数据库。 1970年,IBM的研究员E.F.Codd在Communication of the ACM上发表了名为A Relational Model of Data for Large Shared Data Banks的论文,提出了关系模型的概念,奠定了关系模型的理论基础。后来Codd又陆续发表多篇文章,论述了

ldshiboyuan的博客 508

迅投miniQMT量化交易之【网格交易】的实现(25)——写在最后

和大家一起分享如何使用miniQMT实现我们自己的网格交易系统。如果您对量化交易感兴趣,欢迎一起交流。

tzzqn2008的专栏 829

AutoSAR系列讲解(入门篇)2.4-Runnables可运行实体

讲解一下Runnable和其工程的实际映射

雪云飞星的博客 3万+

[数据库基础篇]——关系数据库

数据模型三要素:数据结构、数据操作、完整性约束 关系模型的三要素:关系数据结构、关系操作、完整性约束 一.关系数据结构 单一的数据结构——关系 数据的逻辑结构——二维表 关系模型建立在集合代数的基础上 1.域 一组具有相同数据类型的集合,一列可以是一个域 2.笛卡儿积 可以用集合表示 也可以用二维表表示 不是所有的元组都是有意义的 3.关系 在笛卡儿积中取出有实际意义的元组来构造关系 关系也是一个二维表,表的每行对应一个元组,任意的两个元组不能完全相同;表的每列必须来自同

m0_65082063的博客 7600

如何在Windows上安装Node-RED?

Node-RED 是一款基于流程的可视化编程工具,专注于物联网(IoT)和自动化应用的快速开发,其核心特点是通过拖拽节点构建数据流网络,实现低代码/无代码编程。

猿小白的博客 1171

学习记录:DAY35

1. redis入门 2. HttpClient 3. 微信小程序入门 4. 缓存机制与spring cache

2301_79760424的博客 779

Open3D 点云转深度图像【2026最新版】

python版本Open3D 实现的点云转深度图像,博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 2838

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Python从入门到精通day35

SQL详解:DDL数据定义语言 摘要: SQL分为DDL、DML、DCL和TCL四类,其中DDL用于定义数据库结构。本文重点讲解DDL的使用方法,包括创建/删除数据库、数据表等操作。通过"学校选课系统"案例,详细演示了5张表的创建过程,涵盖数据类型选择、约束设置(主键、外键等)、字符集配置等关键知识点。文章还介绍了修改表结构(ALTER TABLE)和删除表(DROP TABLE)的操作方法及注意事项,强调DDL操作不可逆的特性,建议在执行前做好数据备份,并在业务低峰期进行表结构修改。

南 阳 的博客 1009

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

学习记录——day35 数据库 sqlite3

insert into 表单1(字段1,字段2,....,字段n) select 字段1,字段2,...,字段n from 表单2。在添加记录的时候,会检查被检查约束的字段所填充的数据,是否满足"检查条件",如果不满足则添加失败。insert into 表单名(字段1,字段2...,字段n)values(数据1,数据2,...,数据n)先查询出表单2中的所有指定字段的数据,再将这些数据,对应的添加到表单1中的每一个字段中去。若没有指定,则查看所有。被主键约束的字段,成为了表单中的“键”,剩下的都是“值”

weixin_64918301的博客 4196

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Day35

Day35 通过java对数据库进行基本操作 一、简单的更新操作 package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class Test { public static void main(String[] args) throws ...

weixin_44722333的博客 177

Day 35数据库(Day1)

创建表. create table student( id int not null auto_increment PRIMARY key, name archar(250) not null, age int not null, sex enum("男","女") not null default"男", salar...

weixin_30780649的博客 87

嵌入式系统学习Day35(sqlite3数据库)

关系型数据库。

Zhangh___的博客 1661

数据洞察:从零到一的数据仓库与Navicat连接全攻略【实训Day04】[完结篇]

数据分析及平台部署搭建完整步骤:实现数据仓库及连接navicat

Five的博客 1667

嵌入式学习笔记DAY35(数据库)

数据库是一个软件,在所提供的功能上它类似于文件,可以把数据存储进去,但是和文件不一样的是,它可以对数据进行管理和操作(例如:增删改查等),一般数据库是配合服务器使用的。2. 工具此处,我们使用的是sqlite3;在PC端,还有mysql,sqlsever等软件;下面是一张表,一行数据就被称为一条记录,一条记录由若干列组成;列在数据库中被称为——字段;能够存储多张表的就称为库;

m0_67864116的博客 1053

瑞萨RA MCU开发必看:61个GitHub仓库全盘点

在嵌入式开发中,芯片原厂的开源资源已成为评估选型与项目落地的重要参考。瑞萨RA系列作为基于ARM Cortex-M内核的先进微控制器,其生态资源散落在GitHub众多仓库中,如何高效筛选成为开发者痛点。FSP(灵活配置软件包)作为RA的核心软件框架,与驱动中间件、工具链集成、示例工程等仓库共同构成完整开发链路。本文系统梳理61个瑞萨RA相关GitHub仓库,按官方核心库、驱动中间件、工具链集成等六大类别拆解,帮助开发者快速定位高价值资源,规避年久失修的仓库陷阱,从而将分散代码串联成可维护的开发流水线,适用于

weixin_34226182的博客 379

day35-javaWeb

JDBC

agjnhga的博客 190

Java Day 35

JDBC 概念、入门、工具类

m0_74778189的博客 139

嵌入式学习Day35

SQLite3是一款轻量级的嵌入式关系型数据库引擎,无需服务器配置,支持跨平台操作,适用于移动应用、桌面软件及小型Web项目。它以单文件形式存储数据,支持标准SQL语法,提供事务、触发器等高级功能。

wssssssssfsad的博客 965
上一篇: Day34.爬虫基础之Selenium
下一篇: Day36.SQL详解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值