《MySQL DBA修炼之道》——第3章 开发基础 3.1相关基础概念

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本节书摘来自华章出版社《MySQL DBA修炼之道》一书中的第3章,第3.1节,作者:陈晓勇,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 第二部分 开发篇 本篇首先讲述数据库开发的一些基础知识,如关系数据模型、常用的SQL语法、范式、索引、事务等,然后介绍编程开发将会涉及的数据库的一些技巧,最后结合生产实际,提供一份开发规范供大家参考。

本节书摘来自华章出版社《MySQL DBA修炼之道》一书中的第3章,第3.1节,作者:陈晓勇,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第二部分

开发篇

本篇首先讲述数据库开发的一些基础知识,如关系数据模型、常用的SQL语法、范式、索引、事务等,然后介绍编程开发将会涉及的数据库的一些技巧,最后结合生产实际,提供一份开发规范供大家参考。

第3章开发基础

本章将为读者介绍 MySQL 数据库相关的开发基础,首先,介绍一些基础概念,然后讲解关系数据模型和 SQL 基础。由于在互联网开发者中,PHP 开发者占据了相当大的比重,因此这里也将简要介绍下 PHP 开发者应该掌握的一些基础知识和开发注意事项。最后,要接触的是 MySQL 数据库更深层次的内容——索引、主键、字符集等。

3.1 相关基础概念

(1)框架
在软件开发过程中,研发人员经常借助框架(framework)来辅助自己进行软件开发。成熟的框架可以帮助处理很多细节性的问题,并完成一些基础性的工作,如生成访问数据库的代码、简化网络编程,这样开发者就会有更多的时间和精力专注于业务逻辑的设计。但目前仍存在的一个问题是,一些框架对于数据库的使用不符合我们的预期,或者说不友好,故而有必要先了解一下开发框架是如何存取数据的。大家有兴趣的话,可深入学习和使用如下这些业内使用比较广泛的一些框架,如Django(Python)、Ruby on Rails(Ruby)、Zend Framework(PHP)、Spring(JAVA) 等。
(2)数据模型
数据模型(data model)是数据的定义和格式,即数据是如何组织的。关系数据模型是以二维表的结构来表示实体与实体之间的联系,每个二维表又可称为关系。关系可以看作是一系列记录的集合。如,员工关系表(见表3-1)和项目关系表(见表3-2)。


26d60cd13305f3e1394e181773c99e73b7f29228


9caecb60a9b88df89a6076f30f82a5a1d3cd8f34

从以上两个关系表中可以看出,项目表和员工表是存在某种关系的。众多的关系表,以及关系表之间的关系,构成了关系数据模型,而支持关系模型的数据库管理系统则称之为关系数据库管理系统。
其他的模型还有XML和图数据模型(graph data model)等。
XML是一种层次结构的数据结构,使用标签、标签值来标识信息,如下面的这个xml文件。

<note>
     <to>George</to>
     <from>John</from>
     <heading>Reminder</heading>
     <body>Don't forget the meeting!</body>
</note>

而图数据模型存储的数据则是以点、线的方式进行存储的。
(3)schema
schema可译作“模式”,不同的数据库管理系统,schema的意义会有些不同。依据维基百科的定义:schema指的是用数据库管理系统支持的语言描述的数据结构,它定义了数据是如何组织构建的。
典型的关系数据模型,是以数据库表的形式来组织数据的,数据存储于一系列设计好的表中。也就是说,关系数据库的schema就是数据库中各种关系的结构化描述。一般来说,数据建模就是设计数据表的过程,一般在项目初期就设计好表结构,在开发过程中可能会不断地调整表结构,但一旦应用上线,表结构往往就不会频繁变更了。若项目积累了大量数据,这时再修改表结构可能会很耗时,从而严重影响在线服务,所以前期进行一个优良的数据库表设计是很有必要的,这也考验着开发人员的数据建模能力。数据库表的设计一般由经验丰富的开发人员来负责,如果DBA时间精力允许,也会参与到重要的项目数据库表设计中。
MySQL中的schema可以看作是数据库(database)的同义词。我们创建一个schema,其实就是创建一个数据库(create database)。 而在其他数据库中,schema的概念则略有不同。
(4)结构化数据
结构化数据通常是指被记录信息的类型,格式等属性是固定的,一般可存储于关系数据库或电子表格中,可以用数据记录的形式进行表达和存储,如产品及其零部件的名称、代号、设计日期、类型等信息。结构化数据往往需要预先定义好业务数据类型的模型,确定这些数据类型是如何存储、处理和访问的。例如确定业务数据的哪些字段信息需要存储,以及这些信息的数据类型(数字、货币、字符串、日期等)和数据输入的校验(如字符个数、日期范围等)。很长时间以来,关系数据库或电子表格软件是处理结构化数据的最佳工具,所以业内也有人简单地把存储在关系数据库中能用二维表格表示的数据称为结构化数据,如来自于企业内部已经被变换成固定规则、格式的数据,而把不方便用关系数据库存取的数据称为非结构化数据,如市场比较和分析报告、股票行情等就是以非结构化的、不可预测的格式呈现的数据。
(5)非结构化数据
有些信息无法用数字或统一的结构来表示,或者说没有一个预定义的数据模型,如文本、照片和图形图像、声音、视频、网页、PDF文件、PowerPoint演示文稿、电子邮件、博客、Wiki和文字处理文档等,我们将其称之为非结构化数据。
(6)半结构化数据
半结构化数据介于结构化数据和非结构化数据之间,它可看作是一种结构化数据,但是缺乏严格的数据模型,半结构化数据可通过标签或其他类型的标记识别数据中的某些元素,但半结构化数据不具有刚性结构。XML和其他标记语言经常被用来管理半结构化数据。
例如,文字处理软件现在可以定义元数据,用于显示作者的姓名和创建日期,但数据的主体——文本文件仍然是非结构化数据。电子邮件有发件人、收件人、日期、时间和其他标识信息,但电子邮件消息的内容和附件仍然是非结构化数据。照片或图形图像能使用一些关键字进行标识,如创作者、日期、地点和关键字,从而能够组织和定位照片和图形图像,但图像本身是非结构化数据。
相对于非结构化数据,结构化数据往往存储于关系数据库中,可以利用关系数据库进行高效地存储和检索,但现实中的数据并不是总能被固定的结构来描述的,生活也并不总是合适整齐的小盒子。非结构化数据和半结构化数据是现实世界的主要数据,而且正在以惊人的速度激增,它们的增长比结构化数据的增长更快,在大数据时代,非结构化(半结构化)数据的提取、存储和管理是一个难点,非结构化数据能否被有效地管理和应用,这对于企业未来的发展道路影响深远。
(7)DDL
数据定义语言(Data Definition Language,DDL)是负责数据结构定义与数据库对象定义的语言。为了设计schema,如创建数据库,创建表,这时就需要用到数据定义语言。我们常用的有CREATE、ALTER、DROP语句。例如,创建数据库的语句如下。
CREATE DATABASE databae_name;
创建表的语句如下。
CREATE TABLE table_name (id INT, name VARCHAR(10));
添加字段的语句如下。
ALTER TABLE table_name ADD COLUMN column_name INT ;
删除表的语句如下。
DROP TABLE table_name;
(8)DML
数据操作语言(Data Manipulation Language,DML)是用来查询和修改数据的语句,包括SELECT、INSERT、UPDATE、DELETE 4种语句,分别代表查询、插入、更新与删除,有很多开发人员将它们称之为“CRUD”(Create、Read、Update和Delete),对应的操作见表3-3。


d765cee4f27062874674010d4c743cb7d1cedadf
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
【MySQL】根据binlog日志获取回滚sql的一个开发思路
【MySQL】根据binlog日志获取回滚sql的一个开发思路
|
7天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
24天前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
2月前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
72 5
Mysql(3)—数据库相关概念及工作原理
|
2月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
2月前
|
SQL 关系型数据库 MySQL
PHP与MySQL协同工作的艺术:开发高效动态网站
在这个后端技术迅速迭代的时代,PHP和MySQL的组合仍然是创建动态网站和应用的主流选择之一。本文将带领读者深入理解PHP后端逻辑与MySQL数据库之间的协同工作方式,包括数据的检索、插入、更新和删除操作。文章将通过一系列实用的示例和最佳实践,揭示如何充分利用这两种技术的优势,构建高效、安全且易于维护的动态网站。
|
2月前
|
关系型数据库 MySQL 数据库
MySQL数据库:基础概念、应用与最佳实践
一、引言随着互联网技术的快速发展,数据库管理系统在现代信息系统中扮演着核心角色。在众多数据库管理系统中,MySQL以其开源、稳定、可靠以及跨平台的特性受到了广泛的关注和应用。本文将详细介绍MySQL数据库的基本概念、特性、应用领域以及最佳实践,帮助读者更好地理解和应用MySQL数据库。二、MySQL
135 5
|
2月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
65 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
3月前
|
存储 关系型数据库 MySQL
MySQL索引的概念与好处
本文介绍了MySQL存储引擎及其索引类型,重点对比了MyISAM与InnoDB引擎的不同之处。文中详细解释了InnoDB引擎的自适应Hash索引及聚簇索引的特点,并阐述了索引的重要性及使用原因,包括提升数据检索速度、实现数据唯一性等。最后,文章还讨论了主键索引的选择与页分裂问题,并提供了使用自增字段作为主键的建议。
MySQL索引的概念与好处
|
4月前
|
存储 SQL 运维
运维开发.MySQL.范式与反范式化
运维开发.MySQL.范式与反范式化
59 1