Java与SQL基础知识总结

第一部分:Java基础知识(完整版)

1. Java是什么?

Java是一种面向对象的编程语言,特点是"一次编写,到处运行"(通过Java虚拟机JVM实现跨平台)。

2. 基础语法

2.1 变量与数据类型

数据类型分类:

  • 基本类型byteshortintlong(整数)、floatdouble(小数)、char(字符)、boolean(true/false)

  • 引用类型:类、接口、数组、枚举

java

复制代码
int age = 25;           // 整数
double price = 99.9;    // 小数
char grade = 'A';       // 单引号
String name = "张三";    // 字符串(引用类型)
boolean isPass = true;  // 布尔值

2.2 运算符

  • 算术:+ - * / %

  • 比较:== != > < >= <=

  • 逻辑:&&(与) ||(或) !(非)

  • 赋值:= += -= *= /=

java

复制代码
int a = 10, b = 3;
int sum = a + b;        // 13
boolean result = (a > b) && (b > 0);  // true

2.3 控制流程

条件判断:

java

复制代码
int score = 85;
if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

// switch 适合多个固定值
int day = 3;
switch (day) {
    case 1: System.out.println("周一"); break;
    case 2: System.out.println("周二"); break;
    default: System.out.println("其他");
}

循环:

java

复制代码
// for循环:已知次数
for (int i = 0; i < 5; i++) {
    System.out.println("第" + i + "次");
}

// while循环:条件未知
int n = 0;
while (n < 3) {
    System.out.println(n);
    n++;
}

// do-while:至少执行一次
int m = 0;
do {
    System.out.println(m);
    m++;
} while (m < 0);  // 输出0,然后结束

2.4 数组

固定长度,存储同一类型数据。

java

复制代码
int[] numbers = {1, 2, 3, 4};          // 静态初始化
String[] names = new String[3];        // 动态初始化(长度3)
names[0] = "张三";
System.out.println(numbers[0]);        // 输出1
System.out.println(numbers.length);    // 数组长度4

3. 面向对象(OOP)核心

3.1 类与对象

是模板,对象是根据模板创建的具体实例。

java

复制代码
// 定义一个类
public class Student {
    // 属性(成员变量)
    String name;
    int age;
    
    // 方法
    public void study() {
        System.out.println(name + "正在学习");
    }
}

// 创建对象并使用
Student stu = new Student();
stu.name = "李华";
stu.age = 18;
stu.study();   // 输出:李华正在学习

3.2 构造方法

创建对象时自动调用,用于初始化。

java

复制代码
public class Student {
    String name;
    
    // 构造方法(无返回值,类名相同)
    public Student(String n) {
        name = n;
    }
}
Student stu = new Student("小明");  // 自动调用构造方法

3.3 三大特性:封装、继承、多态

封装:隐藏内部细节,通过getter/setter访问。

java

复制代码
public class Person {
    private int age;          // 私有
    
    public int getAge() {     // 公共获取
        return age;
    }
    public void setAge(int a) {
        if (a > 0) age = a;   // 可加入校验逻辑
    }
}

继承:子类复用父类的属性和方法。

java

复制代码
class Animal {
    public void eat() { System.out.println("吃东西"); }
}
class Dog extends Animal {
    public void bark() { System.out.println("汪汪"); }
}
Dog dog = new Dog();
dog.eat();   // 继承来的
dog.bark();  // 自己的

多态:同一方法在不同对象上有不同表现。

java

复制代码
Animal a = new Dog();   // 父类引用指向子类对象
a.eat();                // 调用Dog重写后的eat(如果重写了)

3.4 重载与重写

  • 重载:同一类中,方法名相同,参数列表不同。

  • 重写:子类重新定义父类的方法。

java

复制代码
// 重载
public void print(int a) {}
public void print(String s) {}

// 重写(子类中)
@Override
public void eat() {
    System.out.println("狗吃肉");
}

4. 常用API

4.1 字符串(String)

java

复制代码
String s = "Hello";
int len = s.length();          // 5
String upper = s.toUpperCase(); // "HELLO"
String sub = s.substring(1, 3); // "el"(从索引1到2)
boolean eq = s.equals("hello"); // false(区分大小写)

4.2 集合框架(重点)

接口 实现类 特点
List ArrayList 有序、可重复、有索引
Set HashSet 无序、不可重复
Map HashMap 键值对,键唯一

java

复制代码
// List
List<String> list = new ArrayList<>();
list.add("苹果");
list.add("香蕉");
System.out.println(list.get(0));  // 苹果

// Set
Set<Integer> set = new HashSet<>();
set.add(10);
set.add(10);   // 重复不会添加

// Map
Map<String, Integer> map = new HashMap<>();
map.put("语文", 90);
map.put("数学", 85);
int mathScore = map.get("数学");   // 85

4.3 异常处理

java

复制代码
try {
    int[] arr = {1,2};
    System.out.println(arr[5]);   // 会抛出异常
} catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("索引越界了");
} finally {
    System.out.println("无论是否异常,都执行");
}

5. 输入输出(IO)

java

复制代码
// 读取文件内容
try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

6. 多线程

java

复制代码
// 方式1:继承Thread
class MyThread extends Thread {
    public void run() {
        System.out.println("线程运行中");
    }
}
new MyThread().start();

// 方式2:实现Runnable(推荐)
Runnable task = () -> {
    System.out.println("另一个线程");
};
new Thread(task).start();

第二部分:SQL基础知识(完整版)

1. SQL是什么?

结构化查询语言,用于操作关系型数据库(如MySQL、Oracle、SQL Server)。

2. SQL分类

分类 作用 关键字
DDL(数据定义) 定义表结构 CREATE, ALTER, DROP
DML(数据操作) 增删改数据 INSERT, UPDATE, DELETE
DQL(数据查询) 查询数据 SELECT
DCL(数据控制) 权限管理 GRANT, REVOKE

3. DDL:操作表

sql

复制代码
-- 创建表
CREATE TABLE student (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 主键自增
    name VARCHAR(50) NOT NULL,
    age INT,
    score DECIMAL(5,2)   -- 总共5位,小数2位
);

-- 修改表(添加列)
ALTER TABLE student ADD email VARCHAR(100);

-- 删除表
DROP TABLE student;

4. DML:增删改数据

sql

复制代码
-- 插入数据
INSERT INTO student (name, age, score) VALUES ('张三', 20, 85.5);

-- 更新数据
UPDATE student SET score = 90 WHERE name = '张三';

-- 删除数据
DELETE FROM student WHERE age < 18;

5. DQL:查询数据(重中之重)

5.1 基础查询

sql

复制代码
-- 查询所有列
SELECT * FROM student;

-- 查询指定列
SELECT name, score FROM student;

-- 去重
SELECT DISTINCT age FROM student;

-- 别名
SELECT name AS 姓名, score 成绩 FROM student;

5.2 条件过滤(WHERE)

sql

复制代码
SELECT * FROM student
WHERE age > 18 AND score >= 60;   -- AND / OR / NOT

-- 模糊查询(%任意字符,_单个字符)
SELECT * FROM student WHERE name LIKE '张%';

-- 范围查询
SELECT * FROM student WHERE age BETWEEN 18 AND 22;
SELECT * FROM student WHERE id IN (1,3,5);

-- 空值判断
SELECT * FROM student WHERE email IS NULL;

5.3 排序(ORDER BY)

sql

复制代码
SELECT * FROM student ORDER BY score DESC;   -- 降序
SELECT * FROM student ORDER BY age ASC, score DESC;  -- 先按年龄升,再按成绩降

5.4 分组与聚合函数

常用聚合函数: COUNT、SUM、AVG、MAX、MIN

sql

复制代码
-- 每个年龄的人数
SELECT age, COUNT(*) AS 人数
FROM student
GROUP BY age;

-- 分组后过滤(HAVING)
SELECT age, AVG(score) AS 平均分
FROM student
GROUP BY age
HAVING AVG(score) > 80;

区别:WHERE在分组前过滤,HAVING在分组后过滤。

5.5 分页查询(LIMIT)

sql

复制代码
-- MySQL语法:跳过前2条,取3条
SELECT * FROM student LIMIT 2, 3;
-- 或者:从第0条开始取5条
SELECT * FROM student LIMIT 5;

6. 多表查询(连接)

假设有两张表:

  • student:id, name, class_id

  • class:id, class_name

6.1 内连接(INNER JOIN)

只返回两表匹配的行。

sql

复制代码
SELECT s.name, c.class_name
FROM student s
INNER JOIN class c ON s.class_id = c.id;

6.2 左外连接(LEFT JOIN)

返回左表所有行,右表没匹配则显示NULL。

sql

复制代码
SELECT s.name, c.class_name
FROM student s
LEFT JOIN class c ON s.class_id = c.id;

6.3 子查询

sql

复制代码
-- 查询成绩高于平均分的学生
SELECT * FROM student
WHERE score > (SELECT AVG(score) FROM student);

7. 事务(Transaction)

一组SQL要么全部成功,要么全部失败。

sql

复制代码
START TRANSACTION;          -- 开启事务
UPDATE account SET money = money - 100 WHERE name = '张三';
UPDATE account SET money = money + 100 WHERE name = '李四';
COMMIT;                     -- 提交(或 ROLLBACK 回滚)

8. 索引(提高查询速度)

sql

复制代码
-- 创建索引
CREATE INDEX idx_name ON student(name);

-- 删除索引
DROP INDEX idx_name ON student;

9. 常用函数举例

sql

复制代码
-- 字符串
SELECT CONCAT(name, '的分数是', score) FROM student;
SELECT LENGTH('Hello');  -- 5

-- 日期
SELECT NOW();                 -- 当前日期时间
SELECT DATEDIFF('2025-01-01', '2024-01-01'); -- 天数差

-- 数学
SELECT ROUND(3.14159, 2);   -- 3.14
SELECT ABS(-5);              -- 5

总结一句话

  • Java基础:掌握变量、流程控制、面向对象(类/对象/继承/多态)、集合(List/Set/Map)、异常、IO、多线程。

  • SQL基础:掌握增删改查(尤其SELECT的WHERE/GROUP/ORDER/JOIN),以及事务和索引的基本概念。

相关推荐
停水咋洗澡2 小时前
Redis Sentinel高可用实战:主从自动故障转移
java·redis·sentinel
大黄说说2 小时前
React Hooks 与 Class Components 的本质区别:从“面向对象”到“函数式”的范式转移
开发语言
ch.ju2 小时前
Java程序设计(第3版)第二章——引用数据类型:String
java
sycmancia2 小时前
Qt——对话框及其类型
开发语言·qt
趙卋傑2 小时前
测试开发场景下常见的 MCP 服务
开发语言·python·测试工具·ai编程
@atweiwei2 小时前
langchainrust:Rust 版 LangChain 框架(LLM+Agent+RAG)
开发语言·rust·langchain·agent·向量数据库·rag
阿里嘎多学长2 小时前
2026-04-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
yugi9878382 小时前
基于最大信息熵的粒子群优化算法图像分割(MATLAB实现)
开发语言·算法·matlab
yaoxin5211232 小时前
376. Java IO API - 使用 Globbing 和自定义 Filter 过滤目录内容
java·开发语言·python