程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • MySQL速查

    • MySQL 数据库操作
    • MySQL 数据表操作
    • MySQL 数据列 (字段) 操作
      • 1. 添加一列
      • 2. 删除一列
      • 3. 增加多列
      • 4. 删除多列
      • 5. 同时修改列名称和列数据类型
      • 6. 只修改列数据类型
      • 7. 修改列的默认值
      • 8. 修改列的可空性(允许/不允许空值)
      • 9. 移动列的位置
      • 10. 重命名列
    • MySQL 数据增删改操作
    • MySQL 单表查询
    • MySQL 多表查询
    • MySQL 数据字段设计
    • MySQL 特殊字段的设计
  • MySQL速查
  • MySQL速查
scholar
2024-08-20
目录

MySQL 数据列 (字段) 操作

# MySQL 数据列 (字段) 操作

前言

MySQL数据库表中的“列”指的就是字段。每个列代表表中的一个属性,表的每一行(记录)都有一个对应的列值。

例如,在一个用户信息表(users)中:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,  -- 这里的 id 是一列/字段
    name VARCHAR(50),                   -- 这里的 name 是一列/字段
    email VARCHAR(100)                  -- 这里的 email 是一列/字段
);
1
2
3
4
5

在这个表中,id、name 和 email 都是列(或字段)。它们定义了每个用户的不同属性。通常,列(字段)的定义包括其名称、数据类型(如 INT、VARCHAR 等),以及是否允许空值、默认值等属性。

# 1. 添加一列

-- 使用 `alter table 表名 add 列名 数据类型;` 为表添加新列
alter table 表名 add 列名 数据类型;

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- 该命令用于在指定表中添加一个新列,通常添加在表的末尾。
-- 如果需要在特定位置添加列,可以使用 `after 现有列名` 关键字指定列的位置。
1
2
3
4
5
6
7
8
9

# 2. 删除一列

-- 使用 `alter table 表名 drop 列名;` 删除指定的列
alter table 表名 drop 列名;

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- 删除列后,表结构会更新,该列中的数据将被永久删除。该操作不可逆,需谨慎操作。
-- 删除列的操作通常不会影响表中的其他数据。
1
2
3
4
5
6
7
8
9

# 3. 增加多列

-- 使用 `alter table 表名 add (列定义1, 列定义2, ...);` 添加多个列
alter table 表名 add (
    xh int(4), -- 新增的第一列,表示序号
    zc char(8), -- 新增的第二列,表示职称
    ads char(50) -- 新增的第三列,表示地址
);

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- 使用 `add` 关键字可以同时增加多列,列的定义需要用逗号分隔。
-- 添加的列会按顺序添加到表末尾,也可以使用 `after 现有列名` 将每一列插入到指定位置。
1
2
3
4
5
6
7
8
9
10
11
12
13

# 4. 删除多列

-- 使用 `alter table 表名 drop 列名1, drop 列名2, ...;` 删除多列
alter table 表名 drop xh, drop zc, drop ads;

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- 删除多列时,`drop` 关键字需要在每个列名前重复,确保每一列都被正确删除。
-- 删除多列后,表的结构将发生显著变化,操作不可逆。
1
2
3
4
5
6
7
8
9

# 5. 同时修改列名称和列数据类型

-- 使用 `alter table 表名 change 旧列名 新列名 数据类型;` 同时修改列名称和数据类型
alter table 表名 change 旧列名 新列名 新数据类型;

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- `change` 关键字允许在修改列名称的同时更改其数据类型。这对于重命名列或调整列的存储格式非常有用。
-- 注意,`change` 后必须提供新列名,即使只想更改数据类型。
1
2
3
4
5
6
7
8
9

# 6. 只修改列数据类型

-- 使用 `alter table 表名 modify 列名 数据类型;` 仅修改列的数据类型
alter table 表名 modify 列名 新数据类型;

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- `modify` 关键字用于修改现有列的数据类型,而不改变列名。这在需要调整列的存储格式或增加长度时非常实用。
-- 修改数据类型不会删除现有数据,但可能会导致数据截断或格式变化。
1
2
3
4
5
6
7
8
9

# 7. 修改列的默认值

-- 使用 `alter table 表名 alter 列名 set default 默认值;` 设置或修改列的默认值
alter table 表名 alter 列名 set default 默认值;

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- 该命令允许为列设置新的默认值。默认值将在插入新数据且未指定该列值时生效。
-- 可以使用 `alter 列名 drop default` 来移除默认值。
1
2
3
4
5
6
7
8
9

# 8. 修改列的可空性(允许/不允许空值)

-- 使用 `alter table 表名 modify 列名 数据类型 not null;` 禁止空值
alter table 表名 modify 列名 数据类型 not null;

-- 使用 `alter table 表名 modify 列名 数据类型 null;` 允许空值
alter table 表名 modify 列名 数据类型 null;

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- `not null` 和 `null` 关键字用于设置列是否允许空值。更改列的可空性不会影响现有数据,但可能导致插入新数据时触发约束错误。
1
2
3
4
5
6
7
8
9
10
11

# 9. 移动列的位置

-- 使用 `alter table 表名 modify 列名 数据类型 after 现有列名;` 将列移动到指定位置
alter table 表名 modify 列名 数据类型 after 现有列名;

-- 使用 `alter table 表名 modify 列名 数据类型 first;` 将列移动到最前面
alter table 表名 modify 列名 数据类型 first;

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- 使用 `after` 关键字可以将列移动到指定的现有列之后。使用 `first` 关键字可以将列移动到表的最前面。该操作仅影响列的显示顺序。
1
2
3
4
5
6
7
8
9
10
11

# 10. 重命名列

-- 使用 `alter table 表名 change 旧列名 新列名 数据类型;` 重命名列
alter table 表名 change 旧列名 新列名 数据类型;

-- 输出示例
Query OK, 0 rows affected (0.01 sec)

-- 解释:
-- `change` 关键字允许重命名列,同时需要提供列的现有数据类型。如果不希望更改数据类型,则需保持与当前类型一致。
1
2
3
4
5
6
7
8
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
MySQL 数据表操作
MySQL 数据增删改操作

← MySQL 数据表操作 MySQL 数据增删改操作→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式