Mysql 数据库编程技术01
一、数据库基础
1.1 认识数据库
为什么学习数据库
- 瞬时数据:比如内存中的数据,是不能永久保存的。
- 持久化数据:比如持久化至数据库中或者文档中,能够长久保存。
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
1.2 数据库的相关概念
1.2.1 DB
DB(英文全称database,数据库)是依照某种数据模型组织起来并存放二级存储器中的数据集合。
1.2.2 DBMS
数据库管理系统(DatabaseManagementSystem)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。
1.2.3 SQL
结构化查询语言(StructuredQueryLanguage)简称 SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL是一种ANSI(美国国家标准协会)的标准,但也有许多不同版本的SQL语言。SQL是关系数据库系统的标准语言。所有关系型数据库管理系统,如MySQL,SQLServer,Oracle,Sybase,postgreSQL 和 MSAccess使用SQL作为标准数据库语言。
1.2.3.1 SQL 使用
允许用户访问在关系数据库管理系统的数据。
让用户来描述数据。
允许用户定义数据库中的数据和处理数据。
允许使用SQL模块,库和预编译器的其他语言中嵌入。
允许用户创建和删除数据库和表。
允许用户创建视图,存储过程,函数在数据库中。
允许用户设置表,过程和视图的权限
1.2.3.2 SQL 命令
标准的SQL命令进行互动使用在关系型数据库有:CREATE,SELECT,INSERT,UPDATE,DELETE 和
DROP。这些命令可分为基于其性质组。
- DQL(Data Query Language)- 数据查询语言
- DML(Data Manipulate Language)-数据操作语言
- DDL(Data Define Languge)- 数据定义语言
- DCL(Data Control Language)-数据控制语言
- TCL(Transaction Control Language)- 事务控制语言 commit、rollback
1.2.4 数据库术语
数据库:数据库是一些关联表的集合。
数据表:表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列:一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
参照完整性:参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
1.2.5 数据模型
1.2.5.1 模型
模型是对事务、对象、过程等客观系统中的内容的模拟和抽象表达。
1.2.5.2 数据模型
数据模型也是一种模型,它是对现实世界数据特征的抽象。
数据模型分为两大类:概念模型、组织层数据模型也称组织模型。
组织模型分为:层次模型(用树形结构组织数据)、网状模型(用图形结构组织数据)、关系模型(用简单二维表结构组织数据)、对象-关系模型(用复杂的表格以及其他组织结构组织数据)。
数据模型是数据库的基础,数据是对客观事物的符号表示,模型是现实世界的抽象。
信息世界是对现实世界的抽象,人们把事物的特征和联系通过符号记录下来,并用规范化的语言描述现实世界的事物,从而构成一个基于现实世界的信息世界,这个信息世界就是概念模型。概念模型主要用来描述显示世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及数据库管理系统的具体技术问题,集中精力分析数据以及数据之间的联系。在概念模型中,最常用的设计模型就是实体—联系模型(ER模型)。
逻辑数据模型是具体的数据库管理系统所支持的数据模型,主要有**关系数据模型、层次数据模型和网状数据模型。**关系数据模型是目前最流行的数据库模型,支持关系数据模型的数据库管理系统称为关系数据库管理系统,MySQL就属于关系数据库管理系统。关系数据模型以二维表结构来表示事物与事物之间的联系,也可以称为实体与实体之间的联系。
1.3 数据库种类
逻数据库模型主要是两种,即关系型数据库和非关系型数据库。
1.3.1 关系型数据库
关系型数据库,是指采用了关系模型来组织数据的数据库。
- 关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所 组成的一个数据组织。
- 通过SQL结构化查询语句存储数据。
- 强调ACID规则, 保持数据一致性,ACID规则即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
1.3.2 Nosql 数据库
NoSQL 最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL 仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。
NoSQL 的产生并不是要彻底地否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。
1、NOSQL 不是否定关系数据库,而是作为关系数据库的一个重要补充
2、NOSQL 为了高性能、高并发而生,忽略影响高性能,高并发的功能
3、NOSQL 典型产品memcached(纯内存),redis(持久化缓存),mongodb(文档的数据库)。
1.3.3 关系型数据库和非关系型数据库优缺点
关系型数据库优缺点:
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
非关系型数据库优缺点:
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、
图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
1.4.2 数据库存储数据的特点
将数据放列表中,表再放到库中
一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。
表具有一些特性,这些特性定义了数据在表中如何存储,类似C++中“类”的设计表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似C++中的“属性”。
表中的数据是按行存储的,每一行类似于C++中的“对象”。
对于学员管理系统数据库中的表设计有如下:
(1) 学生档案信息表
(2) 班级设置信息表
(3) 院系信息表
(4) 寝室信息表
(5) 用户信息表

二、初始化MySQL
2.1 MySQL 产品介绍
2.1.2 平台及软件支持
支持各种平台,常搭配Linux。组成的LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的网站架构方案。
2.1.3 体系结构
MySQL 体系结构

MySQL 由以下几部分组成:
连接池组件、管理服务和工具组件、SQL接口组件、查询分析器组件、优化器组件、缓冲组
件、插件式存储引擎、物理文件。
连接者:不同语言的代码程序和mysql的交互(SQL交互)
1、连接池 管理、缓冲用户的连接,线程处理等需要缓存的需求
2、管理服务和工具组件 系统管理和控制工具,例如备份恢复、Mysql复制、集群等
3、sql 接口 接受用户的SQL命令,并且返回用户需要查询的结果
4、查询解析器SQL命令传递到解析器的时候会被解析器验证和解析(权限、语法结构)
5、查询优化器 SQL语句在查询之前会使用查询优化器对查询进行优化
select id,name from user where age = 40;
a.这个select 查询先根据where语句进行选取,而不是先将表全部查询出来以后再进行age过滤
b.这个select查询先根据id和name进行属性投影,而不是将属性全部取出以后再进行过滤
c.将这两个查询条件联接起来生成最终查询结果
6、缓存如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据
7、插入式存储引擎存储引擎说白了就是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也 可以称为表类型(即存储和操作此表的类型)
相关文章:
Mysql 数据库编程技术01
一、数据库基础 1.1 认识数据库 为什么学习数据库 瞬时数据:比如内存中的数据,是不能永久保存的。持久化数据:比如持久化至数据库中或者文档中,能够长久保存。 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长…...
Class<?> 和Class<T >有什么区别
Class<?> 和 Class<T> 在 Java 中都表示 Class 类型的对象,但它们的使用方式和作用略有不同。让我们详细分析它们的区别: 1. Class<?>(通配符 Class 类型) ? 代表一个未知类型(Wildcard…...
[自制调试工具]利用模板函数打造通用调试工具
引言 上一篇文章 我们介绍了调式类工具,这篇文章我们补充一下 点击这里查看 在软件开发的过程中,调试是必不可少的环节。为了能更高效地定位和解决问题,我们常常需要在代码中插入一些调试信息,来输出变量的值、函数的执行状态等。传统的调试…...
Python地理数据处理 28:基于Arcpy批量操作实现——按属性提取和分区统计
Arcpy批量操作 1. 批量按属性提取2. 批量分区统计(最大值、最小值和像元个数等) 1. 批量按属性提取 # -*- coding: cp936 -*- """ PROJECT_NAME: ArcPy FILE_NAME: batch_attribute_extract AUTHOR: JacksonZhao DATE: 2025/04/05 &qu…...
Mysql慢查询设置 和 建立索引
1 .mysql慢查询的设置 slow_query_log ON //或 slow_query_log_file /usr/local/mysql/data/slow.log long_query_time 2 修改后重启动mysql 1.1 查看设置后的参数 mysql> show variables like slow_query%; --------------------------------------------------…...
【Android】界面布局-相对布局RelativeLayout-例子
题目 完成下面相对布局,要求: 中间的button在整个屏幕的中央,其他的以它为基准排列。Hints:利用layout_toEndof,_toRightof,_toLeftof,_toStartof完成。 结果演示 代码实现 <?xml version"1.0" encoding"u…...
Spring Boot 中使用 Redis:从入门到实战
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...
【ROS】 CMakeLists 文件详解
【ROS】 CMakeLists文件详解 前言标准的CMAKELIST.TXT文件的组成部分CMake 版本要求和项目名称指定编译器和设置构建规则查找 ROS 依赖消息和服务文件catkin_package设置头文件目录路径添加可执行文件的构建规则设置编译依赖关系(构建顺序)设置目标文件的…...
【每日算法】Day 17-1:位图(Bitmap)——十亿级数据去重与快速检索的终极方案(C++实现)
解锁海量数据处理的极致空间效率!今日深入解析位图的核心原理与实战应用,从基础操作到分块优化,彻底掌握仅用1bit存储一个数据的压缩艺术。 一、位图核心思想 位图(Bitmap) 是一种通过比特位表示数据存在性的数据结构…...
7-1 素数求和(线性筛实现)
7-1 素数求和。 分数 10 中等 全屏浏览 切换布局 作者 魏英 单位 浙江科技大学 输入两个正整数m和n(1<m<n<500)统计并输出m和n之间的素数个数以及这些素数的和。 输入格式: 输入两个正整数m和n(1<m<n<500࿰…...
NLP简介及其发展历史
自然语言处理(Natural Language Processing,简称NLP)是人工智能和计算机科学领域中的一个重要分支,致力于实现人与计算机之间自然、高效的语言交流。本文将介绍NLP的基本概念以及其发展历史。 一、什么是自然语言处理?…...
ZKmall开源商城多云高可用架构方案:AWS/Azure/阿里云全栈实践
随着企业数字化转型的加速,云计算服务已成为IT战略中的核心部分。ZKmall开源商城作为一款高性能的开源商城系统,其在多云环境下的高可用架构方案备受关注。下面将结合AWS、Azure和阿里云三大主流云平台,探讨ZKmall的多云高可用架构全栈实践。…...
优化 Web 性能:处理非合成动画(Non-Composited Animations)
在 Web 开发中,动画能够增强用户体验,但低效的动画实现可能导致性能问题。Google 的 Lighthouse 工具在性能审计中特别关注“非合成动画”(Non-Composited Animations),指出这些动画可能增加主线程负担,影响…...
Eliet Chat开发日志:信令服务器注册与通信过程
目录 1. 架构设计:信令服务器与客户端 2. 选择技术栈 3. 实现信令服务器 4. 客户端实现 5. 测试 6. 下一步计划 日期:2025年4月5日 今天的工作重点是实现两个设备通过信令服务器注册并请求对方公网地址信息,以便能够进行点对点通信。我…...
leetcode二叉树刷题调试不方便的解决办法
1. 二叉树不易构建 在leetcode中刷题时,如果没有会员就需要将代码拷贝到本地的编译器进行调试。但是leetcode中有一类题可谓是毒瘤,那就是二叉树的题。 要调试二叉树有关的题需要根据测试用例给出的前序遍历,自己构建一个二叉树,…...
颜色性格测试:探索你的内在性格色彩
颜色性格测试:探索你的内在性格色彩 在我们的日常生活中,颜色无处不在,而我们对颜色的偏好往往能反映出我们内在的性格特质。今天我要分享一个有趣的在线工具 —— 颜色性格测试,它能通过你最喜欢的颜色来分析你的性格倾向。 &…...
hashtable遍历的方法有哪些
在 Java 中,遍历 Hashtable(或其现代替代品 HashMap)有多种方式,以下是 6 种常用方法的详细说明和代码示例: 1. 使用 keySet() 增强 for 循环 Hashtable<String, Integer> table new Hashtable<>(); // …...
CMake学习--Window下VSCode 中 CMake C++ 代码调试操作方法
目录 一、背景知识二、使用方法(一)安装扩展(二)创建 CMake 项目(三)编写代码(四)配置 CMakeLists.txt(五)生成构建文件(六)开始调试 …...
浅谈ai - Activation Checkpointing - 时间换空间
前言 曾在游戏世界挥洒创意,也曾在前端和后端的浪潮间穿梭,如今,而立的我仰望AI的璀璨星空,心潮澎湃,步履不停!愿你我皆乘风破浪,逐梦星辰! Activation Checkpointing(激…...
提高MCU的效率方法
要提高MCU(微控制器单元)的编程效率,需要从硬件特性、代码优化、算法选择、资源管理等多方面入手。以下是一些关键策略: 1. 硬件相关优化 时钟与频率: 根据需求选择合适的时钟源(内部/外部振荡器),避免过高的时钟频率导致功耗浪费。关闭未使用的外设时钟(如定时器、UA…...
5G从专家到小白
文章目录 第五代移动通信技术(5G)简介应用场景 数据传输率带宽频段频段 VS 带宽中低频(6 GHz以下):覆盖范围广、穿透力强高频(24 GHz以上):满足在热点区域提升容量的需求毫米波热点区…...
神经网络入门:生动解读机器学习的“神经元”
神经网络作为机器学习中的核心算法之一,其灵感来源于生物神经系统。在本文中,我们将带领大家手把手学习神经网络的基本原理、结构和训练过程,并通过详细的 Python 代码实例让理论与实践紧密结合。无论你是编程新手还是机器学习爱好者…...
web漏洞靶场学习分享
靶场:pikachu靶场 pikachu漏洞靶场漏洞类型: Burt Force(暴力破解漏洞)XSS(跨站脚本漏洞)CSRF(跨站请求伪造)SQL-Inject(SQL注入漏洞)RCE(远程命令/代码执行)Files Inclusion(文件包含漏洞)Unsafe file downloads(不安全的文件下载)Unsafe file uploads(不安全的文…...
vue watch和 watchEffect
在 Vue 3 中,watch 和 watchEffect 是两个用于响应式地监听数据变化并执行副作用的 API。它们在功能上有一些相似之处,但用途和行为有所不同。以下是对 watch 和 watchEffect 的详细对比和解释: 1. watch watch 是一个更通用的 API…...
函数和模式化——python
一、模块和包 将一段代码保存为应该扩展名为.py 的文件,该文件就是模块。Python中的模块分为三种,分别为:内置模块、第三方模块和自定义模块。 内置模块和第三方模块又称为库内置模块,有 python 解释器自带,不用单独安…...
Python解决“数字插入”问题
Python解决“数字插入”问题 问题描述测试样例解题思路代码 问题描述 小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数,而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置,以形成一个最大的可能数字。 你…...
Go语言的嵌入式网络
Go语言的嵌入式网络 引言 在当今快速发展的互联网时代,嵌入式系统和网络技术的结合变得越来越普遍。嵌入式系统是指嵌入到设备中以实现特定功能的计算机系统,它们通常具有资源有限的特点。随着物联网(IoT)的兴起,嵌入…...
Dart 语法
1. 级联操作符 … var paint Paint()..color Colors.black..strokeCap StrokeCap.round..strokeWidth 5.0;2. firstWhereOrNull 3. 隐藏或导入部分组件 // Import only foo. import package:lib1/lib1.dart show foo;// Import all names EXCEPT foo. import package:lib…...
MCP over MQTT:EMQX 开启物联网 Agentic 时代
前言 随着 DeepSeek 等大语言模型(LLM)的广泛应用,如何找到合适的场景,并基于这些大模型构建服务于各行各业的智能体成为关键课题。在社区中,支持智能体开发的基础设施和工具层出不穷,其中,Ant…...
ACM代码模式笔记
系列博客目录 文章目录 系列博客目录1.换行符 1.换行符 nextInt()、nextDouble() 等不会消耗换行符: 当使用 nextInt() 或 nextDouble() 读取数字时,它只读取数字部分,不会消耗掉输入后的换行符。 nextLine() 会读取并消耗换行符:…...
