
目录一、上节数据库操作回顾二、数据值类型补充说明三、字符串类型应用场景四、日期类型五、真正需要关心的类型六、表的操作1. 表的概念2. 表的常用操作1查看所有表当前数据库下2创建表3查看表结构4修改表5删除表七、课后练习需求实现SQL最近在学习数据库操作把课堂笔记整理成博客啦~ 这篇笔记围绕数据表操作展开包含了数据库操作、数据值类型、字符串/日期类型、表的操作及课后练习都是实战中常用的知识点分享给大家~一、上节数据库操作回顾同一个术语在不同上下文中含义不同先复习数据库的核心操作show databases;—— 查看所有数据库create database 数据库名;可加if not exists避免重复charset utf8mb4指定字符集—— 创建数据库use 数据库名;—— 选中切换数据库alter database 数据库名 选项;—— 修改数据库drop database 数据库名;—— 删除数据库非常危险应对措施① 权限管控② 提前备份③ 危险操作找人一起检查~二、数据值类型数据库会给数据“分类”不同类型含义和操作不同分为数据值类型、字符串类型、二进制类型、日期类型。重点看数据值类型的表格红色标注类型大小说明BIT[(n)]bit位值类型M表示位数范围1-64默认1。TINYINT[(n)]1 byte取值范围 -2⁷ ~ 2⁷-1无符号则0 ~ 2⁸-1。BOOL1 byteTINYINT(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类处理高精度小数。三、字符串类型字符串类型重点区分char和varchar以及长文本用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。DATE3 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 byte4位年份支持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列如下列名类型描述idbigint商品编号namevarchar(50)商品名unitpricedecimal(12,2)零售单价costpricedecimal(12,2)成本价categoryvarchar(20)商品类型providervarchar(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;