- 博客(58)
- 收藏
- 关注
原创 【MySQL】JDBC的使用(万字解析)
摘要:JDBC是Java连接关系型数据库的标准API,提供统一接口规范,由数据库厂商实现具体驱动。使用JDBC可避免针对不同数据库单独编码,降低维护成本。文章详细介绍了两种数据库连接方式(DriverManager和DataSource),演示了Maven项目配置MySQL驱动的完整流程,包括创建Statement对象、执行SQL语句、处理ResultSet结果集以及资源释放。特别讲解了PreparedStatement预处理机制解决SQL注入问题,并对比了Statement与PreparedStateme
2025-12-20 20:33:31
866
原创 【MySQL】事务
本文系统介绍了MySQL事务的核心概念与应用。首先阐述了事务的定义及其ACID特性(原子性、一致性、隔离性、持久性),通过转账案例说明事务确保数据一致性的重要性。其次详细讲解了事务的使用方法,包括存储引擎支持检查、事务开启/提交/回滚操作,以及保存点设置。重点分析了四种事务隔离级别(读未提交、读已提交、可重复读、串行化)及其引发的数据问题:脏读、不可重复读和幻读,通过实例演示了这些异常现象的发生场景。最后澄清了常见概念混淆点,强调不同隔离级别在并发性能和数据安全之间的权衡。全文为理解MySQL事务机制提供了
2025-12-12 20:51:06
581
5
原创 【MySQL】索引 (下) —— 索引的类型、创建索引、删除索引
本文详细介绍了MySQL索引的分类、创建与删除方法。主要内容包括:1. 索引类型划分:按物理存储分为聚集索引(InnoDB特有)和非聚集索引;按逻辑功能分为主键索引、唯一索引、普通索引、复合索引和全文索引。2. 索引特性:聚集索引直接存储数据,非聚集索引存储键值;介绍了索引覆盖与回表查询概念。3. 索引操作:详细说明了各类索引的3种创建方式(建表时指定、ALTER语句修改、CREATE INDEX创建)和删除方法(主键索引需特殊处理)。4. 复合索引:创建规则和使用注意事项,包括主键复合索引和唯一复合索引的
2025-12-07 19:15:00
731
9
原创 【MySQL】索引 (上) —— 索引的定义与数据结构、MySQL的页
MySQL索引是提高查询效率的有序数据结构,主要采用B+树实现。相比哈希表(不支持范围查询)、二叉搜索树(易退化、维护成本高)、B树(查询不稳定),B+树具有树高最小化、范围查询高效、性能稳定等优势。MySQL将数据组织为16KB的页结构,包含页头、页主体和页目录,通过分组和槽机制实现快速页内查询。索引页和数据页都采用双向链表连接,但存储内容不同:索引页存储路由键和子节点指针,数据页存储实际数据或回表指针。B+树与页结构的结合使MySQL能高效处理海量数据查询。
2025-12-05 16:44:35
1312
16
原创 【MySQL】用户和权限管理
本文介绍了MySQL用户与权限管理的核心操作。主要内容包括:1)用户管理:查看用户信息(存储在mysql.user表)、创建用户(指定用户名、主机IP和密码)、修改密码和删除用户;2)权限管理:MySQL支持的权限类型及作用范围,使用SHOW GRANTS查看用户权限,GRANT命令授予权限(可指定全局、数据库或表级权限),REVOKE命令回收权限(遵循"谁授予谁回收"原则)。重点强调了用户创建时的安全规范(避免使用通配符%)、权限的精细控制以及root用户的特殊权限。
2025-12-01 21:27:51
941
2
原创 【MySQL】视图
视图是数据库中的虚拟表,不存储实际数据,而是基于底层表的查询结果。创建视图使用CREATE VIEW语法,可为查询字段设置别名。视图常用于简化复杂查询、隐藏敏感数据、提供逻辑独立性。通过视图可以查询数据,但若视图定义包含ORDER BY等语句则不可修改数据。修改视图或基表数据会互相影响,但删除视图不影响基表。视图优点包括简化查询、提高安全性、实现数据独立性。
2025-11-30 12:23:18
922
11
原创 联合查询(1) —— 联表查询
本文详细介绍了SQL联表查询的多种方法,包括内连接、外连接和自连接。首先展示了4张示例表(班级、课程、学生、成绩)的创建和数据准备。然后重点讲解了内连接的两种写法(WHERE和JOIN)及其查询步骤,包括笛卡尔积过滤、条件筛选和分组查询。外连接部分说明了左/右外连接的区别和应用场景。自连接部分阐述了如何通过表别名实现行间比较,并提供了具体案例。最后总结了复合联表查询的完整流程,包含表关系分析、相同/不同点确定、连接条件设置和结果精简等步骤。文章通过多个实例演示了不同连接方式的实际应用。
2025-11-26 21:07:33
916
原创 【MySQL】数据库约束
文章详细介绍了六种常见约束类型:1) NOT NULL非空约束,防止列出现NULL值;2) UNIQUE唯一约束,确保列值不重复;3) PRIMARY KEY主键约束,结合非空和唯一性,包括单列主键、自增约束和复合主键;4) FOREIGN KEY外键约束,维护表间关系;5) DEFAULT默认约束,为未指定值的列提供默认值;6) CHECK检查约束,限制列值的范围。
2025-11-22 19:25:39
820
11
原创 增删查改基础(其三)—— 聚合函数、分组查询(group by与having)、内置函数
本文系统介绍了MySQL数据库中的聚合函数、分组查询和常用内置函数。主要内容包括:1. 聚合函数的详细用法(COUNT、SUM、AVG、MAX、MIN)及示例;2. GROUP BY分组查询的语法规则和实际应用场景;3. HAVING子句与WHERE子句的区别及使用注意事项;4. 日期、字符串、数学等常用内置函数的功能说明;5. SQL查询子句的执行顺序解析和别名使用规则。文章通过创建示例表和具体SQL案例,帮助读者理解各个函数的实际应用场景。特别强调了在严格模式下GROUP BY的使用限制,以及MySQL
2025-11-17 19:46:01
975
7
原创 增删查改基础(其二) —— 修改删除数据、截断表、插入查询结果
本文介绍了数据库操作中的UPDATE、DELETE、TRUNCATE和INSERT SELECT四种关键语句。UPDATE用于修改表中数据,需注意WHERE条件避免全表更新;DELETE用于删除数据,危险操作建议使用伪删除;TRUNCATE可快速清空表并重置自增列;INSERT SELECT可将查询结果插入到其他表。文章通过示例数据详细演示了每种语句的语法、注意事项和常见应用场景,如成绩修改、数据去重等。重点强调了数据修改时的安全性考虑和最佳实践。
2025-11-13 09:56:16
633
1
原创 增删查改基础(其一) —— insert插入 与 select条件查询
介绍SQL中 INSERT 和 SELECT 语句的使用方法,重点讲解WHERE、ORDER BY和LIMIT等关键字的用法。
2025-11-11 14:02:25
1157
8
原创 简述数据库设计--范式、ER图
数据库范式是设计关系数据库的规范要求,共有六种范式(1NF-5NF)。范式越高,数据冗余越小,但可能导致性能下降,通常满足第三范式即可。第一范式要求数据具有原子性;第二范式消除非主键对候选键的部分依赖;第三范式消除传递依赖。E-R图用于描述实体间关系,包括1:1、1:N和M:N三种关联方式。实际设计中,1:N关系通过外键实现,M:N关系需创建中间表。遵循范式能避免数据冗余和操作异常,但需平衡范式等级与系统性能。
2025-11-05 19:32:13
709
原创 初识MySQL:库的操作、数据类型、表的操作
本文系统介绍了MySQL数据库的基础知识和操作。主要内容包括:1.数据库基础概念,区分关系型和非关系型数据库;2.MySQL客户端工具使用,包括命令行和图形化界面;3.数据库基本操作(创建、查看、修改和删除);4.常见数据类型,包括数值、字符串、日期等;5.表的操作(创建、查看结构、修改和删除)。文章详细说明了MySQL的配置、存储引擎和字符集设置,并提供了具体的SQL语法示例。适合数据库初学者系统学习MySQL的基本概念和操作规范。
2025-11-02 17:06:03
1336
8
原创 【Java】异常的初步认识
本文详细介绍了Java中的异常处理机制,包括异常的概念、体系结构、相关关键字、自定义异常类以及防御式编程。异常是程序执行过程中发生的不正常行为,Java通过异常类封装这些异常对象。
2025-05-22 18:26:04
1358
20
原创 万字解析:Java字符串
本文详细介绍了Java中String类及其相关类的使用和特性。首先,文章探讨了String类的初始化方式、存储机制以及常用功能方法,如字符串长度获取、比较、查找、转化、替换、截取和拆分等。接着,文章深入分析了String类的不可变性,解释了其内部成员和设计原因。随后,文章对比了StringBuilder和StringBuffer的异同,重点介绍了它们的可变性、常用功能方法以及在不同场景下的应用。最后,文章总结了String类与StringBuilder/StringBuffer在方法传参时的行为差异,强调了
2025-05-14 18:05:17
886
21
原创 类和对象(6)——Object类、内部类
Object是Java默认提供的一个类。Object类是所有类的隐式父类,无论是否显式声明继承,所有类都直接或间接继承自Object。
2025-03-02 19:10:31
1228
31
原创 假面与演员:到底是接口在使用类,还是类在使用接口?编程接口与物理接口的区别又是什么?
本篇文章解释了接口学习过程中的2个常见问题,一个是“为什么是类在使用接口”,另一个一个是“编程接口与物理接口的差异源于所处的抽象层次和交互模式的不同”,旨在揭示编程接口的本质。
2025-02-17 22:56:55
1006
20
原创 类和对象(5)——抽象类和接口
抽象类中可以包含普通方法和普通字段,这样的普通方法和字段可以被子类直接使用(不必重写),而接口中 不能包含普通方法,子类必须重写所有的抽象方法。
2025-02-16 19:34:17
1253
29
原创 类和对象(4)——多态:方法重写与动态绑定、向上转型和向下转型、多态的实现条件
去完成某个行为时,当不同的对象去完成时会产生出不同的状态。又或者同一件事情,发生在不同对象身上,就会产生不同的结果。
2025-01-26 19:53:18
1553
28
原创 类和对象(3)——继承:extends关键字、super关键字、protected关键字、final关键字
在Java中,继承是指一个类(称为子类或派生类)可以获取另一个类(称为父类或基类)的属性和方法的机制。通过继承,子类可以复用父类的代码,并在此基础上添加新的属性和方法,从而实现代码的复用和扩展。
2025-01-19 00:47:34
1455
24
原创 类和对象(2)—— 封装:static关键字、代码块、包和import关键字、对象的打印
封装是面向对象编程(OOP)中的四大基本特性之一,它通过将数据(属性)和操作数据的方法(行为)捆绑在一起,形成一个独立的单位——类。封装的目的是隐藏对象的内部实现细节,控制对对象的访问级别,并提供一个可以访问该对象的接口。这样,外部代码只能通过这个接口与对象交互,而不能直接访问对象的内部状态,从而保护了对象的内部状态不受外部干扰和误用。
2024-11-26 14:08:31
1210
46
原创 类和对象(1) —— 类和对象的概念、类的实例化和初始化、构造方法和this关键词
学习Java中的类和对象对于掌握面向对象编程(OOP)至关重要,类是创建对象的蓝图或模板,而对象是类的实例。学习Java类和对象不仅对于理解面向对象编程至关重要,而且对于提高你的编程技能、解决问题的能力和就业前景都非常有帮助。
2024-11-20 20:08:13
1516
45
原创 Java:二维数组
在很多算法和数据结构中,二维数组是必不可少的工具。掌握二维数组有助于提高你的编程技能和解决问题的能力。它要求你对数组、循环和条件语句有更深入的理解。
2024-11-07 13:17:27
9047
73
原创 Java:数组的定义和使用(万字解析)
数组作为Java编程中最基本且常见的数据结构之一,其重要性不言而喻。通过深入了解数组的特点、用法以及在实际应用中的优势,开发者可以更好地应用它来解决问题,提高代码的效率和可读性。
2024-11-05 12:05:08
8056
45
原创 Java中的运算符【与C语言的区别】
Java中有很多操作符从C语言那继承过来,但又多了一些严格的限制。这些限制和区别将在这篇文章为大家一一解答。
2024-10-30 19:42:42
2362
40
原创 【Java】方法的使用 —— 语法要求、方法的重载和签名、方法递归
方法重载(Method Overloading)是Java中的一种重要特性,它允许在同一个类中定义多个同名的方法,但这些方法必须具有不同的参数列表。至于“为什么要方法重载”,我们以加法器为例:Java对于类型的检查比较严格,如果要写出加法的方法,一般来说我们要为int型数据设置一个方法addInt,为float型的数据设置方法addFloat,为long型的数据设置方法addLong……这样做就很麻烦,于是Java中引入了方法重载的概念,于是不同数据类型的加法方法都可以用add来命名了。
2024-10-30 18:20:56
2236
34
原创 【Java】逻辑控制 —— 三大结构 和 猜数字游戏
Java语言中的三大结构——顺序结构、选择结构和循环结构是编程的基础,它们共同构成了Java程序的基本框架。
2024-10-29 12:02:13
1529
26
原创 【Java】数据类型与变量
在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的 计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。
2024-10-27 13:23:02
1545
25
原创 初始Java —— 基础知识
大家好,欢迎进入Java的世界!在这个充满无限可能的编程领域,我们将一起探索Java语言的魅力。无论你是编程新手还是有一定基础的学习者,Java都能为你提供广阔的学习空间和实践机会。
2024-10-27 13:20:42
1548
24
原创 文件操作(1) —— 文件基础知识
如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了。等再次运⾏程序,是看不到上次程序的数据的。如果要将数据进⾏持久化的保存,我们可以使⽤⽂件。
2024-10-24 20:56:09
1581
43
原创 联合体(union)和枚举类型(enum)
联合体和枚举在C语言中各有其独特的作用和优势。理解并正确使用这两种数据类型,可以显著提高代码的质量和效率。
2024-10-19 15:07:06
1635
53
原创 动态内存管理
动态内存分配允许程序在运行时根据需要分配内存,而不是在编译时就固定下来。通过动态分配内存,程序仅在需要时才请求内存资源,这有助于减少不必要的内存浪费,提高系统的整体资源利用率。
2024-10-17 18:06:19
987
36
原创 结构体超详解:声明方式、自引用、内存对齐、位段成员、传参方式
在C语言中,结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合。它允许将不同类型的数据存放在一起,作为一个整体进行处理。
2024-10-13 13:22:15
1904
52
原创 进制数知识(2)—— 浮点数在内存中的存储 和 易混淆的二进制知识总结
常⻅的浮点数:3.14159、1E10等,浮点数家族包括: float、double、long double 类型。 浮点数表⽰的范围在 float.h 中定义long double类型通常占用更多的内存空间,一般是10到12个字节(80到96位),但在某些系统上可能达到16个字节(128位)。这里不多做解释。IEEE 754 对于有效数字M和指数E,还有⼀些特别规定。⽐如保存1.01的时候,只保存01,等到读取的时候,再把第⼀位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有2
2024-09-25 22:26:54
1554
47
原创 大小端字节序 和 内存高低地址顺序
对于位数⼤于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度⼤ 于⼀个字节,那么必然存在着⼀个如何将多个字节安排的问题。因此就导致了⼤端存储模式和小端存储模式。
2024-09-21 17:09:36
2025
59
原创 字符函数 和 字符串函数 的使用与模拟
字符函数与字符串函数是C语言中处理字符和字符串的两类重要工具。字符函数与字符串函数在C语言编程中扮演着至关重要的角色,它们提供了丰富的功能来处理单个字符以及整个字符串,使得字符串操作更为简便高效。
2024-09-18 17:58:46
1308
36
原创 指针之旅(5)—— 万能指针与回调函数的搭配:万能排序qsort函数的使用规则及其模拟实现。
万能排序qsort的作用主要体现在其能够对各种不同类型的数据结构进行排序,包括基本类型数组、字符串、二维数组以及结构体等。这使得qsort成为一个非常强大且灵活的排序工具,在C语言中被广泛应用。
2024-09-11 12:36:28
1487
36
原创 指针之旅(4)—— 指针与函数:函数指针、转移表、回调函数
函数与指针有着密切的关系,在C编程中,函数指针和指针函数是两个基本而重要的概念。函数指针是指向函数的指针变量,它保存了函数的地址,使得可以通过该指针间接地调用函数。声明一个函数指针类型时,需指明其返回类型和接受的参数类型。
2024-09-10 09:40:59
1406
22
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅