当前位置: 首页 > news >正文

3.MySQL数据表操作全解析,一篇吃透!

目录

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

二、数据值类型

补充说明:

三、字符串类型

应用场景:

四、日期类型

五、真正需要关心的类型

六、表的操作

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;
http://www.jsqmd.com/news/785655/

相关文章:

  • 2026年一键去水印工具怎么选?在线去水印操作教程及推荐排行 - 科技热点发布
  • AI模型公平性:从统计定义到工程实践的全面解析
  • 别追了,那个终点线会自己往后跑
  • 从围棋AI到决策教学:AI如何成为人类复杂决策的超级陪练
  • 魔兽争霸3终极兼容性解决方案:WarcraftHelper完整指南
  • AI公平性感知:个体特征如何影响用户对算法决策的公平判断
  • 5分钟掌握DeepSeek集成配置:从新手到专家的完整实战指南
  • 3.快乐数专题学习笔记——双指针法在LeetCode 202题中的应用
  • SQL示例:获得积分最多的人,求和操作与去重的关系
  • 观察Taotoken在应对不同时段API请求压力时的稳定性表现
  • 从树状LSTM到神经符号计算:结构化表示与可解释推理的技术演进
  • CANN驱动DCMI自定义信息查询
  • ChatGPT编程能力实测:Kattis平台15%通过率揭示AI代码生成局限
  • 10分钟自动化部署OpenClaw AI助手:基于Ubuntu VPS的完整实践指南
  • 光纤稳定平台动态误差仿真系统GUI设计与实现【附程序】
  • 纵列式双旋翼无人机动力学建模与控制仿真【附模型】
  • 卫星通信遇到“太空天气”会怎样---电离层闪烁对卫星通信的影响
  • P4 猴痘病识别
  • Layui上传组件upload怎么监听大文件上传的百分比进度条
  • Flutter for OpenHarmony 跨平台开发:待办事项功能实战指南
  • CANN/AMCT创建蒸馏模型API
  • 开源OSINT终端Horus:构建本地优先的实时态势感知驾驶舱
  • 本地AI技能安全运行:基于MCP协议与沙盒隔离的Mac离线自动化方案
  • React:useTransition 超详细教程、为什么有了 Fiber,React 默认更新依然会卡顿?useDeferredValue超详细教程
  • ViGEmBus内核驱动深度解析:从系统架构到高级配置的完整技术指南
  • Scikit-learn:从问题到模型——监督学习的最小闭环
  • 将docx博客草稿转化为适于博客园发布的markdown文件
  • AI赋能可持续发展:从技术祛魅到实践审辨
  • CANN/asc-devkit:AlltoAllvWrite集合通信API
  • AI与Web 3.0深度融合:联邦学习、智能合约与AI代理的架构实践