3.MySQL数据表操作全解析,一篇吃透!
目录
一、上节:数据库操作回顾
二、数据值类型
补充说明:
三、字符串类型
应用场景:
四、日期类型
五、真正需要关心的类型
六、表的操作
1. 表的概念
2. 表的常用操作
(1)查看所有表(当前数据库下)
(2)创建表
(3)查看表结构
(4)修改表
(5)删除表
七、课后练习
需求:
实现SQL:
最近在学习数据库操作,把课堂笔记整理成博客啦~ 这篇笔记围绕数据表操作展开,包含了数据库操作、数据值类型、字符串/日期类型、表的操作及课后练习,都是实战中常用的知识点,分享给大家~
一、上节:数据库操作回顾
同一个术语在不同上下文中含义不同,先复习数据库的核心操作:
show databases;—— 查看所有数据库create database 数据库名;(可加if not exists避免重复,charset utf8mb4指定字符集)—— 创建数据库use 数据库名;—— 选中(切换)数据库alter database 数据库名 选项;—— 修改数据库drop database 数据库名;—— 删除数据库(非常危险!应对措施:① 权限管控;② 提前备份;③ 危险操作找人一起检查~)
二、数据值类型
数据库会给数据“分类”,不同类型含义和操作不同,分为数据值类型、字符串类型、二进制类型、日期类型。
重点看数据值类型的表格(红色标注):
类型 | 大小 | 说明 |
|---|---|---|
| bit | 位值类型,M表示位数,范围1-64,默认1。 |
| 1 byte | 取值范围 -2⁷ ~ 2⁷-1,无符号则0 ~ 2⁸-1。 |
| 1 byte |
|
| 2 byte | 取值范围 -2¹⁵ ~ 2¹⁵-1,无符号则0 ~ 2¹⁶-1。 |
| 3 byte | 取值范围 -2²³ ~ 2²³-1,无符号则0 ~ 2²⁴-1。 |
| 4 byte | 取值范围 -2³¹ ~ 2³¹-1,无符号则0 ~ 2³²-1。 |
| 4 byte | 同 |
| 8 byte | 取值范围 -2⁶³ ~ 2⁶³-1,无符号则0 ~ 2⁶⁴-1。 |
| 4 byte | 单精度浮点型,M总位数,D小数点后位数,约7位精度。 |
| 8 byte | 双精度浮点型,M总位数,D小数点后位数,约15位精度。 |
| 动态 | 高精度小数,M总位数,D小数点后位数,MySQL特有存储标准,精确表示小数(代价:存储、速度不如double)。 |
补充说明:
float/double是IEEE754标准,容易出现“不精确”(比如金额计算),实际开发常用decimal精确存储小数。Java中对应
BigDecimal类处理高精度小数。
三、字符串类型
字符串类型重点区分char和varchar,以及长文本用text系列:
类型 | 大小(参考) | 说明 |
|---|---|---|
| 固定长度(M字符) | 比如 |
| 可变长度(最大M字符) | 比如 |
| 最大255字符 | 短文本。 |
| 最大65535字符 | 长文本。 |
| 最大16777215字符 | 更长的文本。 |
| 最大4294967295字符 | 超长文本。 |
应用场景:
长度可预期(如手机号、用户名)→ 用
char/varchar。长文本(如博客正文、评论)→ 用
text系列。
四、日期类型
日期时间类型的表格:
类型 | 大小 | 说明 |
|---|---|---|
| 4 bytes | 时间戳,支持范围1970-01-01 ~ 2038-01-19,自动更新(需配置)。 |
| 8 bytes | 日期+时间,支持1000-01-01 ~ 9999-12-31,显示格式 |
| 3 bytes | 仅日期,格式 |
| 3 bytes | 仅时间,格式 |
| 1 byte | 4位年份,支持1901 ~ 2155,默认0(或2000?看版本)。 |
五、真正需要关心的类型
实战中高频使用的类型(记下来!):
bool、int、bigint、double、decimal、varchar、text、datetime
六、表的操作
表是关系型数据库的核心,操作围绕“表结构”和“表数据”展开。
1. 表的概念
表头:描述表的结构(列名、类型)。
每一行:一条数据(记录)。
每一列:字段(属性)。
约束:每行的列数、含义一致
2. 表的常用操作
(1)查看所有表(当前数据库下)
show tables;
(需要先use 数据库名;选中数据库~)
(2)创建表
语法:create table 表名(列名 类型, 列名 类型......);
示例:
use java117; -- 选中数据库 show tables; -- 查看已有表 -- 创建student表 create table student(id int, name varchar(20), gender int);⚠️ 注意:
SQL注释:
-- 注释内容或# 注释内容。创建时可加
if not exists避免重复:create table if not exists student(id int, name varchar(20), gender int);
(3)查看表结构
desc 表名;(describe的缩写)
示例:desc student;
(4)修改表
修改表属于低频操作,语法不用死记,改之前查文档即可。常见操作:
添加列:
alter table 表名 add 列名 类型 [after 列名];示例:
alter table student add classId int after gender;修改列类型:
alter table 表名 modify 列名 新类型;示例:
alter table student modify name varchar(200);删除列:
alter table 表名 drop 列名;示例:
alter table student drop classId;重命名列:
alter table 表名 rename column 旧列名 to 新列名;示例:
alter table student rename column id to studentId;
(5)删除表
drop table 表名;
⚠️ 危险操作!如果表数据量极大(几亿条),删除/修改会耗时很久,甚至卡住MySQL服务器,一定要谨慎!
七、课后练习
创建一个store数据库,管理商店的商品、顾客、订单数据,先建商品表(goods):
需求:
数据库:
store(若不存在则创建,字符集utf8mb4)。商品表:
goods,列如下:
列名 | 类型 | 描述 |
|---|---|---|
|
| 商品编号 |
|
| 商品名 |
|
| 零售单价 |
|
| 成本价 |
|
| 商品类型 |
|
| 供应商 |
实现SQL:
-- 1. 创建数据库(若存在则不报错,指定字符集) create database if not exists store charset utf8mb4; -- 2. 选中数据库 use store; -- 3. 创建商品表(若存在则不报错) create table if not exists goods ( id bigint, name varchar(50), unitprice decimal(12, 2), costprice decimal(12, 2), category varchar(20), provider varchar(20) ); -- 4. 查看所有表 show tables; -- 5. 查看表结构 desc goods;