Java学习31

上午 3h MySQL 环境搭建 + 数据库 & 数据表操作

1.1 MySQL 安装与环境配置详解

1. 安装核心要点

  1. 下载社区免费版 MySQL8.0(企业版收费,学习用社区版)
  2. 安装注意事项
    • 配置root 超级管理员密码(牢记,登录必备)
    • 端口默认3306,无需修改
    • 选择Developer Default开发默认安装模式
    • 配置环境变量:将MySQL安装目录/bin加入系统 PATH,任意窗口可执行 mysql 命令

2. MySQL 服务启停(Windows)

  • 命令行方式(管理员身份运行 CMD)

cmd

复制代码
# 启动MySQL服务
net start mysql80
# 关闭MySQL服务
net stop mysql80
  • 图形化:此电脑→管理→服务→找到 MySQL 手动启停

3. 登录与退出 MySQL

① 黑窗口原生登录

cmd

复制代码
# 标准登录格式
mysql -u用户名 -p密码
# root用户登录示例
mysql -uroot -p123456
# 隐藏密码登录(推荐,安全)
mysql -uroot -p

输入密码回车即可进入数据库命令行界面

② 退出数据库

sql

复制代码
exit;
quit;
4. 常用客户端连接方式
  1. 原生 CMD 命令行(基础必备)
  2. Navicat Premium(可视化工具,开发主流)
  3. DBeaver、SQLyog(免费可视化工具)连接三要素:主机localhost、端口 3306、账号密码
5. 字符集配置(重中之重,解决中文乱码)

MySQL8.0 默认字符集utf8mb4(支持所有中文 + 表情)低版本需手动配置,统一设置数据库字符集避免中文存入乱码

6. 基础权限了解
  • root:最高权限管理员,拥有所有操作权限
  • 普通用户:仅分配查询、新增等部分权限
  • 学习阶段全程使用 root 用户即可

1.2 数据库基础命令(DDL 库操作)

语法通用规则

  1. SQL 语句大小写不敏感,建议关键字大写,表名字段小写规范书写
  2. 每条 SQL 语句结尾必须加分号; 结束
  3. 注释写法:-- 单行注释 /* 多行注释 */

1. 查看当前所有数据库

sql

复制代码
SHOW DATABASES;

解释:查询 MySQL 服务器中已经创建好的全部数据库

2. 创建数据库

sql

复制代码
-- 基础创建数据库
CREATE DATABASE 数据库名;
-- 标准规范创建(指定字符集,杜绝乱码)
CREATE DATABASE db_student DEFAULT CHARACTER SET utf8mb4;

详解

  • db_student:自定义数据库名(学生数据库)
  • DEFAULT CHARACTER SET utf8mb4:指定数据库字符集为通用中文编码

3. 使用 / 切换数据库

sql

复制代码
USE db_student;

核心 :所有表操作、数据操作必须先选中数据库,否则报错

4. 删除数据库

sql

复制代码
-- 危险语句,删除后数据全部丢失无法恢复
DROP DATABASE 数据库名;
DROP DATABASE db_student;

重点提醒:工作中严禁随意执行 DROP 删除语句


1.3 数据表操作 + 字段类型 + 主键约束

1. MySQL 常用字段数据类型(必背)

表格

数据类型 作用 使用场景
int 整数类型 年龄、编号、成绩
varchar (长度) 可变长度字符串 姓名、地址、手机号(最常用)
double 小数类型 分数、价格、薪资
date 日期类型 生日、入学日期 格式:yyyy-MM-dd
char (长度) 固定长度字符串 性别、状态码

2. 核心约束:主键约束 PRIMARY KEY

  • 作用:唯一标识表中每一行数据,非空且唯一,不能重复、不能为空
  • 业务场景:学生编号、用户 ID、商品 ID,每张表必须设置主键

3. 创建数据表完整语法

sql

复制代码
-- 语法格式
CREATE TABLE 表名(
    字段名1 数据类型 约束,
    字段名2 数据类型 约束,
    字段名3 数据类型 约束
);

-- 实战:创建学生表 student
CREATE TABLE student(
    sid INT PRIMARY KEY, -- 学生编号 主键
    sname VARCHAR(20), -- 学生姓名
    sage INT, -- 学生年龄
    sgender CHAR(2), -- 学生性别
    sbirth DATE, -- 出生日期
    sscore DOUBLE -- 考试分数
);

逐行详解

  1. sid INT PRIMARY KEY:定义整型学生编号,设置为主键,唯一不重复
  2. sname VARCHAR(20):姓名可变字符串,最大存储 20 个字符
  3. 最后一行字段末尾不要加逗号,语法规范

4. 查看表结构

sql

复制代码
-- 简洁查看表字段
DESC student;
-- 完整查看建表语句
SHOW CREATE TABLE student;

5. 修改数据表(计划重点补充)

sql

复制代码
-- 1. 添加新字段
ALTER TABLE student ADD saddress VARCHAR(50);
-- 2. 修改字段数据类型
ALTER TABLE student MODIFY sname VARCHAR(30);
-- 3. 删除表中字段
ALTER TABLE student DROP COLUMN saddress;
-- 4. 修改表名
ALTER TABLE student RENAME TO stu;

6. 删除数据表

sql

复制代码
DROP TABLE student;

下午 2.5h DML 增删改 + 基础条件查询

2.1 DML 数据增删改操作(业务最常用)

1. 插入数据 INSERT

① 单行指定字段插入

sql

复制代码
INSERT INTO student(sid,sname,sage,sgender,sbirth,sscore)
VALUES(1,'张三',20,'男','2005-01-10',90.5);

解释:精准给对应字段插入数据,字段与值一一对应

② 单行全字段插入(省略字段名)

sql

复制代码
INSERT INTO student
VALUES(2,'李四',19,'女','2006-02-15',88.0);

要求:值的顺序、数量必须和建表字段顺序完全一致

③ 多行批量插入(高效写法)

sql

复制代码
INSERT INTO student VALUES
(3,'王五',21,'男','2004-05-20',76.5),
(4,'赵六',18,'女','2007-03-08',95.0),
(5,'孙七',20,'男','2005-09-12',82.0);

2. 修改数据 UPDATE(重点防全表修改)

语法:UPDATE 表名 SET 字段 = 值 WHERE 条件;

sql

复制代码
-- 带条件修改(安全写法,只改指定数据)
UPDATE student SET sscore=92 WHERE sid=1;
-- 同时修改多个字段
UPDATE student SET sage=22,sgender='女' WHERE sid=3;

致命禁忌

sql

复制代码
-- 无WHERE条件,修改整张表所有数据,生产绝对禁用
UPDATE student SET sscore=100;

3. 删除数据 DELETE

sql

复制代码
-- 条件删除:删除指定编号学生
DELETE FROM student WHERE sid=5;
-- 清空表所有数据(危险)
DELETE FROM student;

补充区分(计划必补知识点)

  1. DELETE:删除表数据,表结构保留,可恢复
  2. TRUNCATE TABLE 表名:清空全表数据,速度更快,无法回滚

2.2 基础查询语句 SELECT

1. 查询全表所有字段数据

sql

复制代码
SELECT * FROM student;

* 代表通配符,查询表中全部字段

2. 查询指定字段数据

sql

复制代码
-- 只查询姓名、年龄、分数
SELECT sname,sage,sscore FROM student;
-- 字段起别名 AS 简化显示
SELECT sname AS 姓名,sage AS 年龄 FROM student;

2.3 条件查询 WHERE(核心重点)

1. 关系运算符

> < >= <= = !=

sql

复制代码
-- 查询年龄大于19岁的学生
SELECT * FROM student WHERE sage>19;
-- 查询分数不等于90分的学生
SELECT * FROM student WHERE sscore!=90;

2. 逻辑运算符 AND / OR / NOT

sql

复制代码
-- AND 同时满足两个条件:年龄20岁 且 男生
SELECT * FROM student WHERE sage=20 AND sgender='男';
-- OR 满足其一即可:分数大于90 或者 女生
SELECT * FROM student WHERE sscore>90 OR sgender='女';
-- NOT 取反
SELECT * FROM student WHERE NOT sage=20;

3. 范围查询 BETWEEN AND

sql

复制代码
-- 查询分数在80~95之间的学生(包含首尾数值)
SELECT * FROM student WHERE sscore BETWEEN 80 AND 95;

4. 集合查询 IN

sql

复制代码
-- 查询编号为1、3、4的学生
SELECT * FROM student WHERE sid IN(1,3,4);

5. 空值判断 NULL

注意 :MySQL 中null不能用=判断,必须用IS NULL / IS NOT NULL

sql

复制代码
-- 查询生日为空的学生
SELECT * FROM student WHERE sbirth IS NULL;
-- 查询生日不为空的学生
SELECT * FROM student WHERE sbirth IS NOT NULL;

晚上 1.5h 排序查询 + 分页查询 + 综合实战

3.1 排序查询 ORDER BY

1. 基础升降序

  • ASC:升序(从小到大,默认可不写
  • DESC:降序(从大到小)

sql

复制代码
-- 分数升序排列
SELECT * FROM student ORDER BY sscore ASC;
-- 分数降序排列(成绩从高到低)
SELECT * FROM student ORDER BY sscore DESC;

2. 多字段排序(先按第一个字段,相等再按第二个)

sql

复制代码
-- 先按年龄降序,年龄相同再按分数升序
SELECT * FROM student ORDER BY sage DESC,sscore ASC;

3.2 分页查询 LIMIT(项目必备)

标准语法

sql

复制代码
SELECT 字段 FROM 表名 LIMIT 起始索引,每页展示条数;

核心计算公式(必记)

起始索引 = (当前页码 - 1) * 每页条数

实战案例

假设:每页展示 2 条数据

sql

复制代码
-- 第1页:(1-1)*2=0
SELECT * FROM student LIMIT 0,2;
-- 第2页:(2-1)*2=2
SELECT * FROM student LIMIT 2,2;
-- 第3页:(3-1)*2=4
SELECT * FROM student LIMIT 4,2;

详解

  • 第一个数字:从第几条数据开始查(索引从 0 开始)
  • 第二个数字:一页显示多少条数据

3.3 全天全套综合实战练习(必完成)

完整流程:建库→建表→插数据→增删改查→条件→排序→分页

sql

复制代码
-- 1. 创建学生数据库
CREATE DATABASE db_school DEFAULT CHARACTER SET utf8mb4;
-- 2. 使用数据库
USE db_school;
-- 3. 创建学生表
CREATE TABLE student(
    sid INT PRIMARY KEY,
    sname VARCHAR(20),
    sage INT,
    sgender CHAR(2),
    sscore DOUBLE
);
-- 4. 批量插入测试数据
INSERT INTO student VALUES
(1,'小明',19,'男',85),
(2,'小红',18,'女',96),
(3,'小刚',20,'男',79),
(4,'小丽',19,'女',92),
(5,'小华',21,'男',88);
-- 5. 条件查询:查询19岁女生
SELECT * FROM student WHERE sage=19 AND sgender='女';
-- 6. 排序查询:分数降序
SELECT * FROM student ORDER BY sscore DESC;
-- 7. 分页查询:每页2条,查询第2页数据
SELECT * FROM student LIMIT 2,2;
-- 8. 修改数据:把小刚分数改为86
UPDATE student SET sscore=86 WHERE sid=3;
-- 9. 删除数据:删除编号5的学生
DELETE FROM student WHERE sid=5;

计划缺失重要知识点全面补充(必学)

  1. SQL 语句四大分类区分

    • DDL:库、表结构操作(CREATE/ALTER/DROP)
    • DML:数据增删改(INSERT/UPDATE/DELETE)
    • DQL:数据查询(SELECT 90% 开发常用)
    • DCL:权限管理(学习阶段暂不学)
  2. 主键自增 AUTO_INCREMENT 实际开发主键无需手动赋值,设置自增

    sql

    复制代码
    sid INT PRIMARY KEY AUTO_INCREMENT
  3. 去重查询 DISTINCT

    sql

    复制代码
    SELECT DISTINCT sage FROM student;
  4. 模糊查询 LIKE(高频遗漏)

    sql

    复制代码
    -- %匹配任意字符,查询姓小的学生
    SELECT * FROM student WHERE sname LIKE '小%';
  5. 执行顺序FROM → WHERE → ORDER BY → LIMIT

  6. 事务基础认知:增删改属于 DML 会触发事务,查询不会改动数据


Day31 完整版验收标准

  1. 独立完成 MySQL 安装、环境变量配置、服务启停、账号登录
  2. 熟练使用库操作命令:建库、查库、选库、删库
  3. 掌握数据表创建、修改、删除,熟记常用字段类型与主键约束
  4. 熟练编写单行 / 多行 INSERT 插入、条件 UPDATE 修改、条件 DELETE 删除
  5. 精通全表查询、指定字段查询、多条件组合查询
  6. 熟练使用升降序排序、多字段排序语法
  7. 牢记分页计算公式,独立编写 LIMIT 分页 SQL
  8. 独立完成学生表全套业务 SQL 手写练习
  9. 区分危险 SQL 语句,杜绝无条件修改、删除全表数据

核心语句速查清单

(按你今天的学习顺序整理,每句都能直接复制执行)


一、MySQL 服务 & 登录命令

1. 服务启停(CMD 管理员权限)

cmd

复制代码
# 启动MySQL服务(用你自己的服务名,比如MySQL84)
net start MySQL84

# 停止MySQL服务
net stop MySQL84

2. CMD 登录 MySQL(需配置环境变量或进入 bin 目录)

cmd

复制代码
# 安全登录方式(推荐,隐藏密码)
mysql -uroot -p

# 退出MySQL
exit;
quit;

二、数据库操作(DDL)

1. 查看所有数据库

sql

复制代码
SHOW DATABASES;

2. 创建数据库(指定字符集,防乱码)

sql

复制代码
CREATE DATABASE db_student DEFAULT CHARACTER SET utf8mb4;

3. 使用 / 切换数据库

sql

复制代码
USE db_student;

4. 删除数据库(危险操作,慎用)

sql

复制代码
DROP DATABASE db_student;

三、数据表操作(DDL)

1. 创建数据表(带主键约束)

sql

复制代码
CREATE TABLE student(
    sid INT PRIMARY KEY AUTO_INCREMENT, -- 主键+自增(开发常用)
    sname VARCHAR(20),
    sage INT,
    sgender CHAR(2),
    sscore DOUBLE
);

2. 查看表结构

sql

复制代码
DESC student;

3. 删除数据表(危险操作,慎用)

sql

复制代码
DROP TABLE student;

四、数据增删改(DML)

1. 插入数据(INSERT)

sql

复制代码
-- 单行插入(指定字段)
INSERT INTO student(sid, sname, sage) VALUES(1, '张三', 20);

-- 多行批量插入(高效写法)
INSERT INTO student VALUES
(2, '李四', 19, '女', 88),
(3, '王五', 21, '男', 76);

2. 修改数据(UPDATE,必须带条件!)

sql

复制代码
-- 安全修改(只改指定数据)
UPDATE student SET sscore=92 WHERE sid=1;

-- 同时修改多个字段
UPDATE student SET sage=22, sgender='女' WHERE sid=3;

3. 删除数据(DELETE,必须带条件!)

sql

复制代码
-- 条件删除(安全写法)
DELETE FROM student WHERE sid=5;

五、数据查询(DQL)

1. 基础查询

sql

复制代码
-- 查询全表所有字段
SELECT * FROM student;

-- 查询指定字段
SELECT sname, sage, sscore FROM student;

-- 字段起别名
SELECT sname AS 姓名, sscore AS 分数 FROM student;

2. 条件查询(WHERE)

sql

复制代码
-- 关系运算符
SELECT * FROM student WHERE sscore > 90;
SELECT * FROM student WHERE sage != 20;

-- 逻辑运算符 AND / OR
SELECT * FROM student WHERE sage=19 AND sgender='女';
SELECT * FROM student WHERE sscore>90 OR sgender='男';

-- 范围查询 BETWEEN AND
SELECT * FROM student WHERE sscore BETWEEN 80 AND 95;

-- 集合查询 IN
SELECT * FROM student WHERE sid IN(1,3,4);

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

3. 排序查询(ORDER BY)

sql

复制代码
-- 分数降序(从高到低)
SELECT * FROM student ORDER BY sscore DESC;

-- 多字段排序(先按年龄降序,再按分数升序)
SELECT * FROM student ORDER BY sage DESC, sscore ASC;

4. 分页查询(LIMIT,项目必备)

sql

复制代码
-- 语法:LIMIT 起始索引, 每页条数
-- 起始索引 = (当前页码 - 1) * 每页条数

-- 第1页(每页2条)
SELECT * FROM student LIMIT 0, 2;

-- 第2页(每页2条)
SELECT * FROM student LIMIT 2, 2;

六、今日必背高频易错点

  1. 危险语句UPDATE/DELETE 不加 WHERE 会全表修改 / 删除,严禁乱用
  2. 主键约束PRIMARY KEY 必须非空且唯一,每张表必须设置
  3. 字符集 :建库时指定 utf8mb4,避免中文乱码
  4. 分页公式:起始索引 = (当前页码 - 1) × 每页条数
  5. SQL 结尾 :每条语句必须加 ; 结束
相关推荐
周淳APP1 小时前
微前端核心沙箱机制深度解析:从iframe到乾坤沙箱
前端·学习·iframe·微前端·qiankun·前端架构
SenChien1 小时前
C#学习笔记-入门篇
笔记·学习·c#·rider
Restart-AHTCM1 小时前
LangChain学习之提示词模板 Prompts(2/8)
学习·langchain
weixin_428005301 小时前
C#调用 AI学习从0开始-第1阶段(基础与工具)-第6天流式输出
开发语言·学习·c#·流式输出stream
清平乐的技术专栏1 小时前
【Flink学习】(七)Flink 四大窗口机制,实时时间段统计
大数据·学习·flink
清平乐的技术专栏1 小时前
【Flink学习】(九)Flink 容错机制 Checkpoint 与 Savepoint
大数据·学习·flink
库奇噜啦呼1 小时前
【iOS】源码学习-dyld加载
学习·ios·cocoa
林夕071 小时前
Qt QML与C++混合编程实战指南
java·开发语言·数据库
Kiling_07041 小时前
Java Map集合详解与实战
java·开发语言·python·算法