后端Web之数据库(以MySQL为例)

目录

1.概述

2.MySQL

3.DDL

4.DML

5.DQL


1.概述

对于我们自己写的一些小功能,数据一般存储在文件中,比如XML文件。而在实际项目中,数据都是存放在数据库中的。数据库(DataBase )是一个存储数据的集合,它允许用户存储、检索和管理信息。数据库通常由多个表组成,这些表通过键关联,以便于数据的组织和访问。

在企业中,由于数据库要共享,所以都是将数据库安装在服务器上,服务器放置于恒温恒湿无尘的专业机房中。开发人员通过客户端远程连接数据库。

数据库类型主要分为两大类:

  • 关系型数据库(RDBMS):如MySQL、PostgreSQL、Oracle、SQL Server等,它们使用表格模型存储数据,并通过SQL进行操作。
  • 非关系型数据库(NoSQL):如MongoDB、Cassandra、Redis等,它们不使用表格模型,可以存储结构化、半结构化或非结构化数据。

简单来说,基于二维表(有行和列,如excel表)来存储数据的数据库就是关系型数据库,不通过表结构存储数据的就是非关系型数据库,如redis。

我们通过发送sql语句给数据库管理系统DataBase Management System (DBMS)来操纵和管理数据库。

SQL(Structured Query Language,结构化查询语言)是一种标准化的语言,用于在关系型数据库管理系统(RDBMS)中进行数据管理和操作。

目前主流的一些关系型数据库:虽然产品不一样,但它们都可以通过相同的sql语句进行操作

项目中的数据库设计:

项目中的数据库表的设计:

2.MySQL

MySQL是一个流行的开源关系型数据库管理系统(RDBMS),它是基于客户端-服务器模型的,并广泛应用于Web应用程序的后端,提供数据存储、查询和维护的功能。它以其可靠性、易用性和性能而闻名,并且由于其开源特性,拥有庞大的社区支持。

数据模型:

SQL语句通常分为以下四类:

通过命令行去操作数据库比较繁琐,采用图形化工具会方便一些,以下是常见的图形化工具,其中DataGrip集成在IDEA中,能够在IDEA中使用

MySQL中的数据类型:

主要分为三类:数值类型、字符串类型、日期时间类型。在满足业务的情况下,选占用磁盘小的更合适

数值类型:

字符串类型:定长是指字符串固定占用空间,比如char(10)就占用10个字符空间。变长是指字符串有多长就占用多长,比如varchar(10)有三个字符就占用3个字符空间。

但是计算机不用判断定长的空间占用,需要判断变长的空间占用。因此定长的性能高,但占用磁盘多,变长则相反。即空间换时间和时间换空间

日期时间类型:

3.DDL

DDL已经很大程度上被图形化界面工具替代了,以下简单介绍DDL:

创建表:其中约束是作用于表中字段上的规则,用于限制存储在表中的数据。比如id不能重复只能唯一,这就是唯一约束或者主键约束。约束用来保证数据库中数据的正确性、有效性和完整性。

约束的种类:自增可以让主键id自动增加,而不用手动输入

修改表:

4.DML

增加数据(insert):

修改数据(update):

删除数据:

5.DQL

查询操作是所有sql语句中最重要、最常用、最复杂的的操作。

基本查询:其中*号不建议使用,不直观而且效率低(会查询并传输所有信息)。

条件查询where:在基本查询上添加where条件(运算符筛选)列表

分组查询group by:分组后通常会计算每个组的数据,因此要结合聚合函数使用

其中字段值为null的数据不参与聚合函数的计算,因此要做统计的话要选择一个非空字段,比如id

where与having都是条件查询,它们的区别是:

1. 执行时机不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

2. 判断条件不同: where不能对聚合函数进行判断,而having可以。

排序查询order by:在分组查询的基础上加上order by,排序方式只有升序ASC和降序DESC,默认是升序,因此ASC可省略

分页查询limit:

要让 Web 前端与 Python 后端连接 MySQL 数据库,可以使用以下步骤: 1. 在 Python 中安装 `mysql-connector-python` 库: ``` pip install mysql-connector-python ``` 2. 在 Python 中编写数据库连接代码,例如: ```python import mysql.connector # 连接 MySQL 数据库 cnx = mysql.connector.connect( host="localhost", user="root", password="password", database="mydatabase" ) # 创建游标对象 cursor = cnx.cursor() # 执行 SQL 查询 cursor.execute("SELECT * FROM customers") # 获取查询结果 result = cursor.fetchall() # 关闭游标和连接 cursor.close() cnx.close() ``` 在这个例子中,我们使用 `mysql.connector.connect()` 方法连接 MySQL 数据库,然后使用 `cursor()` 方法创建游标对象,使用 `execute()` 方法执行 SQL 查询语句,最后使用 `fetchall()` 方法获取查询结果。 3. 在 Python 中使用 Flask 或 Django 等 Web 框架编写 API 接口,返回查询结果给前端: ```python from flask import Flask, jsonify import mysql.connector app = Flask(__name__) @app.route("/customers") def get_customers(): # 连接 MySQL 数据库 cnx = mysql.connector.connect( host="localhost", user="root", password="password", database="mydatabase" ) # 创建游标对象 cursor = cnx.cursor() # 执行 SQL 查询 cursor.execute("SELECT * FROM customers") # 获取查询结果 result = cursor.fetchall() # 关闭游标和连接 cursor.close() cnx.close() # 返回结果给前端 return jsonify(result) ``` 在这个例子中,我们使用 Flask 框架编写了一个 `/customers` 接口,当用户访问该接口时,会返回 MySQL 数据库中的 `customers` 表的所有数据。我们使用 `jsonify()` 方法将查询结果转换为 JSON 格式,并返回给前端。 4. 在前端中使用 AJAX 或 Fetch API 等技术调用后端接口,获取查询结果,并将其渲染到页面上。 以上是一个基本的 Web 前端、Python 后端MySQL 数据库连接的示例,实际应用中还需要考虑更多的安全性和错误处理等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值