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、插入式存储引擎存储引擎说白了就是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也 可以称为表类型(即存储和操作此表的类型)

相关推荐
gsfl2 小时前
Redis 缓存
数据库·redis·缓存
恒悦sunsite8 小时前
Ubuntu之apt安装ClickHouse数据库
数据库·clickhouse·ubuntu·列式存储·8123
奥尔特星云大使8 小时前
MySQL 慢查询日志slow query log
android·数据库·mysql·adb·慢日志·slow query log
来自宇宙的曹先生8 小时前
MySQL 存储引擎 API
数据库·mysql
间彧8 小时前
MySQL Performance Schema详解与实战应用
数据库
间彧9 小时前
MySQL Exporter采集的关键指标有哪些,如何解读这些指标?
数据库
weixin_446260859 小时前
Django - 让开发变得简单高效的Web框架
前端·数据库·django
mpHH9 小时前
babelfish for postgresql 分析--todo
数据库·postgresql
zizisuo9 小时前
解决在使用Lombok时maven install 找不到符号的问题
java·数据库·maven
老苏畅谈运维10 小时前
Oracle的connect by level在MySQL中的华丽变身
mysql·oracle