二维码

MySQL

4 人阅读 | 时间:2025年04月30日 10:19

数据库介绍

    数据库( Database )是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的API 接口用于创建,访问,管理,搜索和复制所保存的数据。 我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢,所以现在我们使用关系型数据库管理系 来存储和管理的大数据量。
    所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库、网状数据库和关系型数据库。
    而在当今的互联网企业中,最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。
    关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。

常用关系型数据库

Oracle数据库

    Oracle 前身叫 SDL ,由 Larry Ellison 和另两个编程人员在 1977 创办,他们开发了自己的拳头产品,在市场 上大量销售,1979 年, Oracle 公司引入了第一个商用 SQL 关系数据库管理系统。 Oracle 公司是最早开发关系数 据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle 关系数据库产品的市场占有率数一数二。

MySQL数据库

    MySQL 数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典 MySQL AB 公司。在 2008  1  16 号被Sun公司收购,后 Sun 公司又被 oracle 公司收购。目前 MySQL 被广泛地应用在 Internet 上的大中小型网站中。
    由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多大中小型网站为了降低网站总体拥有 成本而选择了 MySQL 作为网站数据库 
    MySQL 数据库主要应用范围:互联网领域,大中小型网站,游戏公司,电商平台等等。

SQL Server数据库

    Microsoft SQL Server 是微软公司开发的大型关系型数据库系统。 SQL Server的功能比较全面,效率高, 可以作为中型企业或单位的数据库平台。 SQL Server 可以与 Windows 操 作系统紧密集成,不论是应用程序开 发速度还是系统事务处理运行速度,都能得到较大的提升。

MySQL基础

1. MySQL简介

MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典公司MySQL AB开发,现隶属于Oracle公司。它以高性能、可靠性和易用性著称,是Web应用(如 WordPress、Facebook 等)和许多企业系统的核心数据库解决方案。

  • 开源关系型数据库管理系统(RDBMS)

  • 使用SQL(结构化查询语言)进行数据库操作

  • 支持多种存储引擎,如InnoDB、MyISAM等

2. 数据类型

通过合理选择数据类型,可以显著提高数据库性能和减少存储空间。

  • 数值类型:INT, SMALLINT, TINYINT, BIGINT, FLOAT, DOUBLE, DECIMAL

  • 字符串类型:CHAR, VARCHAR, TEXT, BLOB

  • 日期时间类型:DATE, TIME, DATETIME, TIMESTAMP, YEAR

  • 其他类型:ENUM, SET, JSON(5.7+)

3. 常用命令

掌握这些指令可以完成大多数数据库操作任务。实际使用时需要根据具体场景选择合适的指令和语法。

-- 数据库操作CREATE DATABASE dbname;USE dbname;DROP DATABASE dbname;-- 表操作CREATE TABLE name (column1 datatype, column2 datatype, ...);DROP TABLE name ;ALTER TABLE name ADD columnname datatype;ALTER TABLE name DROP COLUMN columnname;

SQL语句

1. DML(数据操作语言)

DML是SQL中用于操作数据库中实际数据的语言部分

-- 插入数据INSERT INTO name (column1, column2) VALUES (value1, value2);-- 更新数据UPDATE name SET column1 = value1 WHERE condition;-- 删除数据DELETE FROM name WHERE condition;-- 查询数据SELECT column1, column2 FROM name WHERE condition;

DML 特点

  • 操作对象是表中的数据(记录)

  • 需要事务控制(COMMIT/ROLLBACK)

  • 可以包含 WHERE 子句来限定操作范围

  • 通常需要表级别的权限才能执行

  • 执行后会影响数据库中的数据内容

2. DQL(数据查询语言)

DQL是SQL中专门用于数据查询的子语言,虽然从技术上讲它是DML的一个子集,但在实践中常被单独分类DQL的核心语句是SELECT。DQL 虽然只包含 SELECT 语句,但因其强大的查询能力和复杂的语法结构,成为SQL中最重要和最常使用的部分。

-- 基本查询SELECT * FROM name;-- 条件查询SELECT * FROM name WHERE column1 = value1 AND column2 > value2;-- 排序SELECT * FROM name ORDER BY column1 ASC, column2 DESC;-- 分组SELECT column1, COUNT(*) FROM name GROUP BY column1;-- 连接查询SELECT a.column1, b.column2 FROM name1 a JOIN name2 b ON a.id = b.id;-- 子查询SELECT * FROM name WHERE column1 IN (SELECT column1 FROM table2);

DQL 特点

  • 只用于数据查询,不会修改数据库内容

  • 可以非常复杂,支持多表关联、嵌套查询等

  • 结果通常以结果集(ResultSet)的形式返回

  • 是 SQL 中使用最频繁的部分

  • 性能优化重点区域(通过索引、执行计划等)

3. 聚合函数

聚合函数是SQL中用于对一组值执行计算并返回单个值的函数,通常与GROUP BY子句一起使用。

  1. COUNT(): 计数

  2. SUM(): 求和

  3. AVG(): 平均值

  4. MAX(): 最大值

  5. MIN(): 最小值

  6. GROUP_CONCAT(): 连接字符串

注意事项

  1. 聚合函数不能直接用在WHERE子句中(使用HAVING替代)

  2. 选择列表中非聚合的列通常需要包含在GROUP BY子句中

  3. 不同数据库系统可能支持不同的聚合函数或有不同的函数名称

  4. 聚合函数通常会导致全表扫描,在大数据量查询时需要考虑性能优化


索引与优化

索引是数据库中用于加速数据检索的数据结构,它通过创建额外的数据结构来存储表中某些列的排序值,从而快速定位数据位置,避免全表扫描。合理使用索引可以显著提高查询性能,但需要根据实际业务场景和数据特点进行设计和优化。

1. 索引类型

  • 普通索引:最基本的索引

  • 唯一索引:列值必须唯一

  • 主键索引:特殊的唯一索引,不允许NULL

  • 复合索引:多列组合的索引

  • 全文索引:用于全文搜索

 2. 索引操作

-- 创建索引CREATE INDEX index_name ON name (columnname);ALTER TABLE name ADD INDEX index_name (columnname);-- 删除索引DROP INDEX index_name ON name ;

3. 查询优化

  • 使用EXPLAIN分析查询

  • 避免SELECT *,只查询需要的列

  • 合理使用索引

  • 避免在WHERE子句中对字段进行函数操作

  • 使用JOIN代替子查询

  • 适当分表分库


高级特性

 1. 视图

视图是MySQL中的一种虚拟表,其内容由查询定义。视图不实际存储数据,而是基于一个或多个基表(或其它视图)的动态查询结果。

CREATE VIEW view_name AS SELECT column1, column2 FROM name;

2. 存储过程

存储过程是MySQL中一组预编译的SQL语句集合,存储在数据库中,可以通过调用来执行。

DELIMITER //CREATE PROCEDURE procedure_name(IN param1 INT)BEGIN-- SQL语句END //DELIMITER ;

3. 触发器

触发器是MySQL中一种特殊的存储过程,它会在特定的数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行。

CREATE TRIGGER trigger_name BEFORE/AFTER INSERT/UPDATE/DELETEON name FOR EACH ROWBEGIN-- 触发逻辑END;

4. 分区表

分区表是MySQL中将一个大表物理分割为多个更小、更易管理的部分的特性,但对用户而言仍然表现为单个逻辑表。

  • 范围分区(RANGE)

  • 列表分区(LIST)

  • 哈希分区(HASH)

  • 键分区(KEY)

总结:

    MySQL 是一款开源、高性能的关系型数据库管理系统,支持事务、索引优化和多种存储引擎,适合高并发场景。它跨平台、易扩展,广泛用于Web开发、企业应用和云计算,并支持主从复制与集群部署。

    MySQL从基础到高级的完整知识体系涵盖了数据库设计、性能优化、高可用架构等多个维度,实际应用中需要根据业务场景灵活选择合适的技术方案。 


©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
  • 验证码
◎已有 270 人评论
搜索
作者介绍
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×