MySQL的表操作

文章目录

一、日期类型(继上一篇文字的数据类型)

  • 上一篇文章讲了数字的类型如整型还有浮点型,和字符类型,在这里便讲时间类型

timestamp

datetime

  • 这里讲到时间戳类型,那么什么是时间戳类型?

1.1、时间戳

  • 我们知道我们看到的时间是形如 2026 / 7 / 29 / 11 : 45 : 25 ,这样的

这其实是格式化时间日期 ,主要是方便人来看

  • 但是如果计算机也是按照这种形式来存储和处理时间的话,如果把各种数值按整型来储存,那么就会需要很多个变量。如果是用字符串来存储的话,那么计算时间时,又不方便。

所以这时就有了时间戳的这个概念

  • 这时就有大佬,把1970年1月1日约定为基准,然后计算当前时刻与基准时刻的"秒数"之差,这就是时间戳

之差的单位不止秒数,还有可以是毫秒,微秒

时间戳是计算机保存时间的主流方式

  • 如果是这样,就可以用一个整数变量来表示时间和日期

比如三天之后,是几号,3年前是几号都可以计算

  • 可以看当前时间戳已经达17亿,而 timestamp 的取值范围是 -21亿 到 21亿 ,17亿快达到21亿了。

也就是说以后工作时要使用日期类型,要用datetime

二、数据库表的操作

  • 我们知道一个服务器里面不可能只有一个数据库的。所以
  • MySQL服务器里面有很多数据库,而里面的数据库又有很多的表
  • 数据表中

行:每一行就是一条"数据"/"记录"

列:每一列叫做"属性"/"字段"

通常在创建表的时候,就需要定义好,这个表里面有哪些列,都叫什么名字,啥类型

  • 使用use选中数据库,是进行所有表操作的前提条件

2.1、查看数据库有什么表

  • 在此之前应该选定数据库
sql 复制代码
show tables;
  • 查看库里有多少表 ,用 show
  • 因为库里不知道有多少个表,一般来说都有很多表,所以这里的 table 用复数

2.2、创建数据表

sql 复制代码
create [temporary] table [if not exists] 表名(列名 类型 ,列名 类型,...)[charset...] [engine 存储引擎];
  • 创建数据表使用 create
  • " "的意思是可有可无
  • temporary 的作用是指明这个表是不是临时表,如果不是临时表就是储存在硬盘上。如果是临时表就不会存储在硬盘上,即断电就会消失
  • if not exists 的作用是 检查你所创建的表的名字在数据库里是否重复,不重复则创建,重复则不作为。(如果没有这段语句,如果重名的话,程序便中止并报错)
  • charset 的作用是指定字符集,如果在创建数据库的时候指定了,这里就默认跟数据库所指的一样
  • engine 的作用是指定存储引擎,一般默认的是Innodb
  • 注意这里是列名,然后才类型,和我们之前所学的 Java / c 不一样(类型 变量名)
  • 在MySQL中,表名和列名 需要两个单词时,使用的是蛇形命名法, 如( class_id )

Java 使用的是驼峰命名法如 ( classId ) 主流方式

  • 这个类型和类型的长度,在我们工作时,由产品经理给我们,不是随便写
  • 什么是存储引擎?

我们知道MySQL数据库,本体是服务器。MySQL的服务器,是一个很复杂的软件。包含很多个功能模块,其中一个模块就是存储引擎。主要是负责数据如何在硬盘上进行存储。MySQL提供了很多存储引擎。通常默认使用Innodb

2.3、查看表的结构

sql 复制代码
desc 表名;

查看使用 desc

  • 效果如下

表中的 Null 的意思 是 这一列 是否可以为空 (是否可以不填)

C语言中,null 的意思是空指针

Java 中,null 的意思是空引用

2.4、修改表

sql 复制代码
alter table 表名 动作 

修改使用 alter

2.4.1、 加一个列

sql 复制代码
alter table 表名 add  列名  列类型

加列 用 add

  • 我要在 student 这个表中的 id 这个列的后面加一个名为 class_id 的列

有个 student 表,表中有 name 和 id 俩个列

sql 复制代码
alter table student add class_id int after id;
  • 在 id 之后,用 after
  • 效果如下

2.4.2、改变表中列的类型

sql 复制代码
alter table 表名 modify 要改类型的列名  改成的类型

改类型用 modify

  • 我要在 student 这个表中把class_id 的类型 改为 bigint
sql 复制代码
alter table student modify class_id bigint;
  • 效果如下

2.4.3、在表中改变列的名字

sql 复制代码
alter table 表名 rename column 要改的列名 to 列的新名;

给列改名字使用 rename column to

  • 我要在 student 这个表中,把class_id 这个列名改为 classId
sql 复制代码
alter table  student rename  column  class_id to classId;
  • 效果如下

2.4.4、在表中删除列(危险操作)

sql 复制代码
alter table 表名 drop 列名;
  • 删除某一列,用drop
  • 注意这个是危险动作,删了数据也就不见了
  • 我要在 student 这个表中删除class_id 这个列
sql 复制代码
alter table student drop class_id;
  • 效果如下

2.5、删表(注意这个是危险动作)

sql 复制代码
drop table 表名;
  • 删表要用 drop
  • 注意这个动作是危险动作,要慎重
相关推荐
Lyyaoo.9 小时前
Spring Boot Validation 声明式参数校验
spring boot·后端·mysql
oradh10 小时前
Oracle闪回技术操作总结
数据库·oracle·oracle闪回技术操作总结·oracle闪回·flashback技术
南城以南溫暖如初14710 小时前
外卖CPS实战指南:从技术选型到运营落地全流程解析
java·spring boot·mysql·架构·vue
ltl10 小时前
RocksDB 并发 Compaction 与 Rate Limiter
数据库
闻道且行之12 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
夏炳辉.13 小时前
PostgreSQL 高可用集群核心配置参数全解:从原生流复制到 Patroni 企业级方案
数据库·postgresql
努力的小雨14 小时前
KES 开启 SSL 前,证书、端口和客户端要一起验
数据库
DevOps老兵14 小时前
AI全栈知识07:向量数据库 - Milvus/Chroma实战
数据库·ai·milvus
这个DBA有点耶14 小时前
当数据库从“存储”走向“决策”:金仓数据库的融合架构之路
数据库·架构·aigc
smilejingwei14 小时前
Trae+SQLazy 实践 SQL 国产化移植:Oracle => 达梦
数据库·sql·oracle