MySQL 入门到单表操作超全总结(数据库 + SQL + 表操作 + 数据 CRUD)

本文为 MySQL 基础入门全套笔记,涵盖数据库基础、MySQL 安装、SQL 分类、库表操作、数据增删改查(CRUD)、约束、数据类型、乱码解决等内容,零基础可直接上手学习,适合 Java 开发入门 MySQL 使用。

一、数据库简介

1. 什么是数据库

  • 数据库就是数据仓库,本质也是一个文件系统
  • 访问数据库必须使用 SQL 语句

2. 数据库的作用

作用:存储数据任何应用程序开发,都离不开数据库支撑。

3. 关系型数据库

数据库中保存的都是实体与实体之间的关系,是最常用的数据库类型。

4. 常见数据库

  • Oracle:甲骨文公司,大型收费数据库,Java 开发常用
  • MySQL:轻量级、免费开源,被 Oracle 收购(6.x 版本开始收费),Java 开发首选
  • SQLServer:微软公司数据库
  • DB2:IBM 公司,大型收费数据库
  • SyBASE:已退出历史舞台
  • PowerDesigner:数据库设计工具

二、MySQL 安装与卸载

1. 安装注意事项

安装路径不能包含中文和空格

2. 安装后测试

打开 CMD,执行命令:

复制代码
mysql -u root -p

回车后输入密码,成功进入 MySQL 服务器即安装正常。


三、MySQL 概念

一个数据库服务器中包含多个数据库 一个数据库中包含多张表 一个表中包含多个字段 (字段与 JavaBean 属性对应)表中一行数据 对应 一个 JavaBean 实体对象


四、SQL 语言基础

1. 什么是 SQL

  • 全称:Structured Query Language 结构化查询语言
  • 用于操作数据库的标准语言

2. SQL 是非过程性语言

  • 过程性语言:依赖上一条 / 上几条语句执行
  • 非过程性语言:一条语句对应一个返回结果,SQL 属于此类

3. SQL 通用性

  • SQL 是所有关系型数据库通用基础
  • Oracle 有专属语言PL/SQL,仅能在 Oracle 中使用

五、SQL 分类

本文重点讲解数据库操作、表结构操作、数据 CRUD 操作


六、数据库操作(CURD)

1. 创建数据库

  • 基本语法

    create database 数据库名称;

  • 标准语法(指定字符集 + 校对规则)

    create database 数据库名称 character set 编码 collate 校对规则;

示例

复制代码
-- 创建mydb1
create database mydb1;

-- 创建utf8编码的mydb2
create database mydb2 character set 'utf8';

-- 创建utf8编码+utf8_bin校对规则的mydb3
create database mydb3 character set 'utf8' collate 'utf8_bin';

2. 查看数据库

复制代码
-- 查看所有数据库
show databases;

-- 使用指定数据库(核心)
use 数据库名称;

-- 查看数据库创建信息
show create database 数据库名称;

-- 查看当前正在使用的数据库
select database();

3. 删除数据库

复制代码
drop database 数据库名称;

-- 示例:删除mydb1
drop database mydb1;

4. 修改数据库

复制代码
alter database 数据库名称 character set 'gbk' collate '校对规则';

七、表结构操作(CURD)

1. 创建表语法

复制代码
create table 表名称(
    字段1 类型(长度) 约束,
    字段2 类型(长度) 约束,
    字段3 类型(长度) 约束
);

创建注意事项

  • 表结构用小括号包裹,结尾加分号
  • 字段之间用逗号分隔,最后一个字段不能加逗号
  • 字符串类型必须指定长度
  • 不指定长度则用默认值,int 默认长度 11

示例

复制代码
create table employee(
    id int,
    name varchar(30),
    gender char(5),
    birthday date,
    entry_date date,
    job varchar(50),
    salary double,
    resume text
);

查看表结构

复制代码
desc employee;

2. MySQL 数据类型

字符串类型
  • CHAR:长度不可变,不足用空格补齐
  • VARCHAR:长度可变
大数据类型(不常用)
  • BLOB:存储字节数据(电影、MP3 等)
  • TEXT:存储文本内容
数值类型(重点)

TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE

逻辑类型
  • BIT:存储 1/0,对应 Java 中 true/false
日期类型
  • DATE:年月日
  • TIME:时分秒
  • DATETIME:日期 + 时间,插入 null 则为 null
  • TIMESTAMP:日期 + 时间,插入 null 自动取当前系统时间

3. 单表约束(了解)

作用:保证数据完整性

  • 主键约束(primary key):记录唯一标识,唯一 + 非空,可被外键引用
  • 唯一约束(unique):字段值不可重复
  • 非空约束(not null):字段值不能为空

4. 查看与删除表

复制代码
-- 查看表结构
desc 表名;

-- 查看当前库所有表
show tables;

-- 查看表创建信息
show create table 表名;

-- 删除表
drop table 表名;

5. 修改表(高频)

复制代码
-- 添加列
alter table 表名 add 新列名 类型(长度) 约束;

-- 删除列
alter table 表名 drop 列名;

-- 修改列类型/约束
alter table 表名 modify 列名 类型(长度) 约束;

-- 修改列名
alter table 表名 change 旧列名 新列名 类型(长度) 约束;

-- 修改表名
rename table 表名 to 新表名;

-- 修改表字符集
alter table 表名 character set utf8;

实操示例

复制代码
-- 增加image列
alter table employee add image varchar(50);

-- 修改job列长度为60
alter table employee modify job varchar(60);

-- 删除gender列
alter table employee drop gender;

-- 表名改为user
rename table employee to user;

-- 修改表字符集为utf8
alter table user character set utf8;

-- 列名name改为username
alter table user change name username varchar(30);

八、数据操作(CRUD)

1. 插入数据(insert)

语法

复制代码
-- 指定字段插入
insert into 表名 (字段1,字段2,字段3) values (值1,值2,值3);

-- 全字段插入
insert into 表名 values (值1,值2,值3);

注意事项

  • 数据类型与字段一致
  • 数据大小在字段范围内
  • 值与字段一一对应
  • 字符串 / 日期必须用单引号包裹

示例

复制代码
insert into user values (1,'meimei','1956-1-1','1957-1-1','HR',5000,'meimeimei','xx');
insert into user values (2,'小凤','1996-1-1','2013-1-1','BOSS',15000,'mei','xx');

2. MySQL 插入中文乱码解决

  1. 停止 MySQL 服务

  2. 打开my.ini配置文件

  3. 修改配置:

    [client]
    port=3306
    [mysql]
    default-character-set=gbk

  4. 重启 MySQL 服务

3. 修改数据(update)

复制代码
-- 所有员工薪水改为5000
update user set salary = 5000;

-- 聪聪薪水改为3000
update user set salary = 3000 where username = '聪聪';

-- 小凤薪水4000、职位改为ccc
update user set salary = 4000,job = 'ccc' where username = '小凤';

-- 如花薪水+1000
update user set salary = salary+1000 where username = '如花';

4. 删除数据(delete)

语法

复制代码
delete from 表名 where 条件;

delete 与 truncate 区别

  • delete from 表名:一行一行删除,支持事务回滚
  • truncate 表名:删除整张表再重建,清空速度快,不可回滚

示例

复制代码
-- 删除聪聪
delete from user where username = '聪聪';

-- 删除所有数据
delete from user;

-- truncate清空表
truncate user;

5. 查询数据(select)

(1)基础查询

先建学生表:

复制代码
create database day15;
use day15;
create table stu(
    id int,
    name varchar(30),
    math int,
    english int,
    chinese int
);

insert into stu values (1,'美美',78,93,56);
insert into stu values (2,'聪聪',18,13,16);
insert into stu values (3,'小凤',98,96,89);
insert into stu values (4,'如花',90,100,46);
insert into stu values (5,'欧阳锋',74,93,56);
insert into stu values (6,'吴彦祖',37,11,89);
insert into stu values (7,'聪大',88,77,66);
insert into stu values (8,'聪二',55,44,33);
(2)运算与别名
复制代码
-- 所有分数+10
select name,(math+10) m,(english+10) e,(chinese+10) c from stu;

-- 统计总分
select name,(math+english+chinese) 总分 from stu;
(3)where 条件过滤
复制代码
-- 查询聪聪成绩
select name,math,chinese from stu where name = '聪聪';

-- 英语>90
select name,english from stu where english > 90;

-- 总分>200
select name,math+english+chinese from stu where (math+english+chinese) > 200;

-- 英语80-90
select * from stu where english >=80 and english <90;

-- 数学是89/90/91
select * from stu where math in (89,90,91);

-- 姓小
select * from stu where name like '小%';

-- 数学>80 或 语文>80
select * from stu where math > 80 or chinese > 80;
(4)排序(order by)

语法:order by 列名 asc/desc

  • asc:升序(默认)

  • desc:降序

  • order by 必须放在语句最后

    -- 数学降序
    select name,math from stu order by math desc;

    -- 总分降序
    select name,(math+english+chinese) as total from stu order by total desc;

    -- 英语降序,同分数学降序
    select name,english,math from stu order by english desc,math desc;

(5)聚集函数
  • count():统计数量

  • sum():求和

  • avg():平均值

  • max():最大值

  • min():最小值

    -- 统计总人数
    select count(name) from stu;

    -- 数学≥90人数
    select count(math) from stu where math >= 90;

    -- 总分>200人数
    select count(*) from stu where math + english+chinese > 200;

    -- 数学总成绩
    select sum(math) from stu;

    -- 各科总成绩
    select sum(math),sum(english),sum(chinese) from stu;

全套笔记可直接用于学习、复习、面试准备,Java 开发入门 MySQL 必看 ~

相关推荐
hef2882 小时前
HTML5中SVG描边虚线Stroke-dasharray的配置技巧
jvm·数据库·python
黑牛儿2 小时前
2026 MySQL 面试 100 题: 索引 / 事务 / 锁(答案 + 原理)
android·mysql·面试
wuchen10042 小时前
SQLite的外键SQL小总结
数据库·sql·sqlite
u0107475462 小时前
SQL在分布式SQL环境下的JOIN性能优化_减少跨节点数据传输
jvm·数据库·python
鸽芷咕2 小时前
一张表的三种身份证:金仓数据库 OID vs ROWID vs 自增主键选型指南
数据库·oracle
Warren982 小时前
Windows 本地安装 Jenkins 教程
linux·运维·windows·功能测试·mysql·jenkins
鸽芷咕2 小时前
从边缘到云端:2026年工业物联网时序数据库选型策略
数据库·物联网·时序数据库
雨墨✘2 小时前
CSS如何实现不同屏幕下的字体缩放_利用clamp函数动态调整
jvm·数据库·python
hef2882 小时前
Go语言如何刷LeetCode_Go语言LeetCode刷题教程【速学】
jvm·数据库·python