在数据驱动的现代世界中,MySQL无疑是数据库领域的一颗璀璨明星。通过本次MySQL课程的学习,我深刻感受到了其强大的功能和灵活的应用性。接下来,我将结合实操体验,分享我的学习收获和心得,希望能够帮助大家更好地掌握MySQL。
MySQL 是当下最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 可以说是最流行的技术。选择 MySQL 数据库已是既成事实,绝大多数使用 Linux 操作系统的互联网网站都在使用 MySQL 作为其后端的数据库存储方式,从大型的 BAT 门户到电商平台、分类门户等无一例外。
原因可能有以下几点:
- MySQL 性能卓越,服务稳定,很少出现异常宕机的情况。
- MySQL 开放源代码且无版权制约,自主性强,使用成本低。
- MySQL 历史悠久,社区及用户非常活跃,遇到问题,可以寻求帮助。
- MySQL 软件体积小,安装使用简单,并且易于维护,安装及维护成本低。
- MySQL 品牌口碑效应好,使得企业无须考虑即可直接用之。
- LAMP、LNMP、LNMT(tomcat)等流行 Web 架构都含有 MySQL。
- MySQL 支持多种操作系统,提供了多种 API,支持多种开发语言,特别是对流行的 Java、Python、PHP 等语言都有很好的支持。
数据库分类
- SQL Sever: 微软的产品,.Net 程序员的最爱,适合中大型项目。
- Oracle: 甲骨文产品,适合大型项目和复杂的业务逻辑,并发性一般来说不如 MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的 SQL 处理效果好。
- PostgreSQL:加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究,都可以免费使用、修改和分发。
- SQLite: 是一款轻型的数据库,是遵守 ACID 的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
- H2: 是一个用 Java 开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
Mysql索引
一、环境搭建与基础认识
在学习的初期,我首先按照教程指引成功安装了MySQL数据库,并配置了相应的环境。这个过程中,我了解了MySQL的基本架构、运行机制和它作为一个关系型数据库管理系统(RDBMS)的核心特性。通过实际操作,我熟悉了MySQL的命令行界面和图形界面管理工具,为后续的学习打下了坚实的基础。
二、SQL基础操作与实战演练
在掌握了SQL的基础语法后,我通过实际操作创建了多个数据表,并进行了数据的增删改查。我深入学习了SELECT、INSERT、UPDATE、DELETE等SQL语句的用法,并了解了如何根据实际需求编写高效的SQL查询语句。通过大量的练习,我掌握了SQL语句的编写技巧和优化方法,提高了自己的动手能力和解决问题的能力。
三、索引与事务管理的深入理解
随着学习的深入,我详细了解了索引在提升查询效率中的重要作用。我学习了B-Tree索引、Hash索引等不同类型的索引,并掌握了如何根据实际需求选择合适的索引。通过实际操作,我感受到了索引对查询性能的巨大提升。同时,我也深入学习了事务的概念和用法,了解了事务的ACID属性(原子性、一致性、隔离性、持久性)对于保证数据完整性和一致性的重要意义。我通过编写事务相关的SQL语句,体验了事务的工作原理和应用场景。
# 取模运算: % mod
SELECT 12 % 3,12 % 5, 12 MOD -5,-12 % 5,-12 % -5
FROM DUAL; # 结果的符号只与被模数有关
+--------+--------+-----------+---------+----------+
| 12 % 3 | 12 % 5 | 12 MOD -5 | -12 % 5 | -12 % -5 |
+--------+--------+-----------+---------+----------+
| 0 | 2 | 2 | -2 | -2 |
+--------+--------+-----------+---------+----------+
三、索引与事务管理的深入理解
随着学习的深入,我详细了解了索引在提升查询效率中的重要作用。我学习了B-Tree索引、Hash索引等不同类型的索引,并掌握了如何根据实际需求选择合适的索引。通过实际操作,我感受到了索引对查询性能的巨大提升。同时,我也深入学习了事务的概念和用法,了解了事务的ACID属性(原子性、一致性、隔离性、持久性)对于保证数据完整性和一致性的重要意义。我通过编写事务相关的SQL语句,体验了事务的工作原理和应用场景。
五、实操练习,巩固与提高
我通过大量的实操练习巩固了所学知识,并提高了自己的动手能力和解决问题的能力。在实操中,我遇到了很多问题,但通过查阅资料和反复尝试,我最终都找到了解决方案。这些实践经历不仅让我更加深入地理解了MySQL的知识点,还让我学会了如何分析和解决问题。
条件查询:
DQL(数据查询语言)
语法:
SELECT
字段列表
FROM
表名字段
WHERE
条件列表
GROUPBY
分组字段列表
HAVING
分组后的条件列表
ORDERBY
排序字段列表
LIMIT
分页参数
基础查询
查询多个字段:SELECT 字段1, 字段2, 字段3, ... FROM 表名;SELECT * FROM 表名;
设置别名:SELECT 字段1 [ AS 别名1 ], 字段2 [ AS 别名2 ], 字段3 [ AS 别名3 ], ... FROM 表名;SELECT 字段1 [ 别名1 ], 字段2 [ 别名2 ], 字段3 [ 别名3 ], ... FROM 表名;
去除重复记录:SELECT DISTINCT 字段列表 FROM 表名;
转义:SELECT * FROM 表名 WHERE name LIKE '/_张三' ESCAPE '/'/ 之后的_不作为通配符
条件查询
语法:SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件:
比较运算符 | 功能 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN ... AND ... | 在某个范围内(含最小、最大值) |
IN(...) | 在in之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
IS NULL | 是NULL |
逻辑运算符 | 功能 |
AND 或 && | 并且(多个条件同时成立) |
OR 或 || | 或者(多个条件任意一个成立) |
NOT 或 ! | 非,不是 |
聚合查询(聚合函数)
常见聚合函数:
函数 | 功能 |
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
权限控制
常用权限:
权限 | 说明 |
ALL, ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
字符串函数
常用函数:
函数 | 功能 |
CONCAT(s1, s2, ..., sn) | 字符串拼接,将s1, s2, ..., sn拼接成一个字符串 |
LOWER(str) | 将字符串全部转为小写 |
UPPER(str) | 将字符串全部转为大写 |
LPAD(str, n, pad) | 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度 |
RPAD(str, n, pad) | 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度 |
TRIM(str) | 去掉字符串头部和尾部的空格 |
SUBSTRING(str, start, len) | 返回从字符串str从start位置起的len个长度的字符串 |
REPLACE(column, source, replace) | 替换字符串 |
数值函数
常见函数:
函数 | 功能 |
CEIL(x) | 向上取整 |
FLOOR(x) | 向下取整 |
MOD(x, y) | 返回x/y的模 |
RAND() | 返回0~1内的随机数 |
ROUND(x, y) | 求参数x的四舍五入值,保留y位小数 |
日期函数
常用函数:
函数 | 功能 |
CURDATE() | 返回当前日期 |
CURTIME() | 返回当前时间 |
NOW() | 返回当前日期和时间 |
YEAR(date) | 获取指定date的年份 |
MONTH(date) | 获取指定date的月份 |
DAY(date) | 获取指定date的日期 |
DATE_ADD(date, INTERVAL expr type) | 返回一个日期/时间值加上一个时间间隔expr后的时间值 |
DATEDIFF(date1, date2) | 返回起始时间date1和结束时间date2之间的天数 |
实操建议及步骤:
搭建MySQL环境 | 连接到MySQL服务器 |
创建数据库和数据表 | 创建数据表时,需要定义表的字段、数据类型、约束等 |
插入和查询数据 | 可以一次插入一行数据,也可以一次插入多行数据查询数据 |
索引和查询优化 | 创建索引后,可以使用EXPLAIN 语句来分析查询的执行计划,了解索引是否被正确使用 |
事务管理 | 可以确保数据的一致性和完整性 |
备份与恢复 | 防止数据丢失或损坏 |
持续学习与实践 | 不断提升自己的能力和水平 |
六、展望未来,持续学习
虽然我已经掌握了MySQL的基础知识,但学习之路永无止境。我将继续深入学习MySQL的高级特性和应用场景,如存储过程、触发器、分区表等。同时,我也将关注MySQL的最新发展动态和技术趋势,以便更好地应对未来的挑战和需求。我相信通过不断的学习和实践,我将能够在MySQL领域取得更大的进步和成就。