数据库介绍
数据库( 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子句一起使用。
COUNT(): 计数
SUM(): 求和
AVG(): 平均值
MAX(): 最大值
MIN(): 最小值
GROUP_CONCAT(): 连接字符串
注意事项
聚合函数不能直接用在WHERE子句中(使用HAVING替代)
选择列表中非聚合的列通常需要包含在GROUP BY子句中
不同数据库系统可能支持不同的聚合函数或有不同的函数名称
聚合函数通常会导致全表扫描,在大数据量查询时需要考虑性能优化
索引与优化
索引是数据库中用于加速数据检索的数据结构,它通过创建额外的数据结构来存储表中某些列的排序值,从而快速定位数据位置,避免全表扫描。合理使用索引可以显著提高查询性能,但需要根据实际业务场景和数据特点进行设计和优化。
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从基础到高级的完整知识体系涵盖了数据库设计、性能优化、高可用架构等多个维度,实际应用中需要根据业务场景灵活选择合适的技术方案。
评论专区