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 关系型数据库

关系型数据库,是指采用了关系模型来组织数据的数据库。

  1. 关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所 组成的一个数据组织。
  2. 通过SQL结构化查询语句存储数据。
  3. 强调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、插入式存储引擎存储引擎说白了就是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也 可以称为表类型(即存储和操作此表的类型)

相关推荐
狮歌~资深攻城狮37 分钟前
ClickHouse和TiDB怎么选型
数据库·clickhouse
longlong int5 小时前
【每日算法】Day 16-1:跳表(Skip List)——Redis有序集合的核心实现原理(C++手写实现)
数据库·c++·redis·算法·缓存
Tee xm5 小时前
清晰易懂的跨平台 MySQL 安装与配置教程
linux·windows·mysql·macos·安装
一 乐5 小时前
实验室预约|实验室预约小程序|基于Java+vue微信小程序的实验室预约管理系统设计与实现(源码+数据库+文档)
java·数据库·微信小程序·小程序·毕业设计·论文·实验室预约小程序
极限实验室5 小时前
INFINI Labs 产品更新 | Coco AI 0.3 发布 – 新增支持 Widget 外部站点集成
数据库·搜索引擎
我科绝伦(Huanhuan Zhou)5 小时前
MySQL数据库如何在线修改表结构及字段类型?
数据库·mysql
独行soc5 小时前
2025年渗透测试面试题总结- 某四字大厂面试复盘扩展 一面(题目+回答)
java·数据库·python·安全·面试·职场和发展·汽车
rockmelodies6 小时前
【MongoDB + 向量搜索引擎】MongoDB Atlas 向量搜索 提供全托管解决方案
数据库·mongodb·搜索引擎
西元.7 小时前
详解 Redis repl_backlog_buffer(如何判断增量同步)
数据库·redis·缓存