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
  • 注意这个动作是危险动作,要慎重
相关推荐
万亿少女的梦16820 小时前
基于Spring Boot、Vue.js与MySQL的流浪猫狗救助系统设计与实现
vue.js·spring boot·mysql·javaweb·权限管理
这就是佬们吗20 小时前
回溯算法三板斧---掌握「回溯三问」思考模板快速入门回溯
java·数据库·算法
青皮桔20 小时前
Redis AOF 文件损坏修复记录
运维·数据库·redis
happyh h h h p p p p20 小时前
LVS 项目完整知识点总结
linux·服务器·数据库
要开心吖ZSH21 小时前
一次 HikariCP 连接池耗尽导致的线上雪崩排查实录——完整排查报告
java·spring boot·mysql·连接池·hikaricp
万亿少女的梦16821 小时前
基于SSM、JSP与MySQL的秦皇岛旅游服务管理系统设计与实现
mysql·mybatis·ssm·jsp·spring mvc
仙宇觉尘21 小时前
记一次 .NET 某中医药附属医院门诊系统 崩溃分析
数据库·oracle·.net
灵机一物21 小时前
2026智能清洁设备推荐榜:无人值守与效率提升解析
数据库
xuankuxiaoyao21 小时前
WQ 算子尝试1
数据库·mysql