3.MySQL数据表操作全解析,一篇吃透!
2026/5/9 22:29:21 网站建设 项目流程

目录

一、上节:数据库操作回顾

二、数据值类型

补充说明:

三、字符串类型

应用场景:

四、日期类型

五、真正需要关心的类型

六、表的操作

1. 表的概念

2. 表的常用操作

(1)查看所有表(当前数据库下)

(2)创建表

(3)查看表结构

(4)修改表

(5)删除表

七、课后练习

需求:

实现SQL:


最近在学习数据库操作,把课堂笔记整理成博客啦~ 这篇笔记围绕数据表操作展开,包含了数据库操作、数据值类型、字符串/日期类型、表的操作及课后练习,都是实战中常用的知识点,分享给大家~

一、上节:数据库操作回顾

同一个术语在不同上下文中含义不同,先复习数据库的核心操作

  1. show databases;—— 查看所有数据库

  2. create database 数据库名;(可加if not exists避免重复,charset utf8mb4指定字符集)—— 创建数据库

  3. use 数据库名;—— 选中(切换)数据库

  4. alter database 数据库名 选项;—— 修改数据库

  5. drop database 数据库名;—— 删除数据库(非常危险!应对措施:① 权限管控;② 提前备份;③ 危险操作找人一起检查~)

二、数据值类型

数据库会给数据“分类”,不同类型含义和操作不同,分为数据值类型、字符串类型、二进制类型、日期类型

重点看数据值类型的表格(红色标注):

类型

大小

说明

BIT[(n)]

bit

位值类型,M表示位数,范围1-64,默认1。

TINYINT[(n)]

1 byte

取值范围 -2⁷ ~ 2⁷-1,无符号则0 ~ 2⁸-1。

BOOL

1 byte

TINYINT(1)同义词,非零为true,零为false。

SMALLINT[(n)]

2 byte

取值范围 -2¹⁵ ~ 2¹⁵-1,无符号则0 ~ 2¹⁶-1。

MEDIUMINT[(n)]

3 byte

取值范围 -2²³ ~ 2²³-1,无符号则0 ~ 2²⁴-1。

INT[(n)]

4 byte

取值范围 -2³¹ ~ 2³¹-1,无符号则0 ~ 2³²-1。

INTEGER[(n)]

4 byte

INT

BIGINT[(n)]

8 byte

取值范围 -2⁶³ ~ 2⁶³-1,无符号则0 ~ 2⁶⁴-1。

FLOAT[(M,D)]

4 byte

单精度浮点型,M总位数,D小数点后位数,约7位精度。

DOUBLE[(M,D)]

8 byte

双精度浮点型,M总位数,D小数点后位数,约15位精度。

DECIMAL[(M,D)]

动态

高精度小数,M总位数,D小数点后位数,MySQL特有存储标准,精确表示小数(代价:存储、速度不如double)。

补充说明:

  • float/double是IEEE754标准,容易出现“不精确”(比如金额计算),实际开发常用decimal精确存储小数。

  • Java中对应BigDecimal类处理高精度小数。

三、字符串类型

字符串类型重点区分charvarchar,以及长文本用text系列:

类型

大小(参考)

说明

CHAR(M)

固定长度(M字符)

比如char(100),存“hello”也占100字符空间,超长报错。

VARCHAR(M)

可变长度(最大M字符)

比如varchar(100),存“hello”只占5字符,超长报错。

TINYTEXT

最大255字符

短文本。

TEXT

最大65535字符

长文本。

MEDIUMTEXT

最大16777215字符

更长的文本。

LONGTEXT

最大4294967295字符

超长文本。

应用场景:

  • 长度可预期(如手机号、用户名)→ 用char/varchar

  • 长文本(如博客正文、评论)→ 用text系列。

四、日期类型

日期时间类型的表格:

类型

大小

说明

TIMESTAMP[(fsp)]

4 bytes

时间戳,支持范围1970-01-01 ~ 2038-01-19,自动更新(需配置)。

DATETIME[(fsp)]

8 bytes

日期+时间,支持1000-01-01 ~ 9999-12-31,显示格式YYYY-MM-DD hh:mm:ss

DATE

3 bytes

仅日期,格式YYYY-MM-DD,支持1900-01-01 ~ 9999-12-31。

TIME[(fsp)]

3 bytes

仅时间,格式hh:mm:ss,支持-838:59:59~838:59:59

YEAR[(4)]

1 byte

4位年份,支持1901 ~ 2155,默认0(或2000?看版本)。

五、真正需要关心的类型

实战中高频使用的类型(记下来!):

boolintbigintdoubledecimalvarchartextdatetime

六、表的操作

表是关系型数据库的核心,操作围绕“表结构”和“表数据”展开。

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,列如下:

列名

类型

描述

id

bigint

商品编号

name

varchar(50)

商品名

unitprice

decimal(12,2)

零售单价

costprice

decimal(12,2)

成本价

category

varchar(20)

商品类型

provider

varchar(20)

供应商

实现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;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询