MYSQL中对行与列的操作

在 mysql 中,修改列(表结构)和行(数据)的操作需要使用不同的 sql 语句。以下是详细的操作方法和示例:

一、修改列信息(表结构变更)

1. 修改列名

1.1代码使用

alter table 表名

change column 旧列名 新列名 数据类型 [约束];

1.2详细标注

在mysql中使用 alter table 语句修改列的数据类型,常见的数据类型和约束如下。

(1)数据类型:

整数类型: tinyint (1字节)、 smallint (2字节)、 mediumint (3字节)、 int (4字节)、 bigint (8字节)。

浮点数和定点数类型: float (单精度浮点数)、 double (双精度浮点数)、 decimal (用于存储精确的小数值,如货币金额)。

字符类型: char (固定长度字符串)、 varchar (可变长度字符串)、 text (用于存储长文本)。

日期和时间类型: date (只存储日期)、 time (只存储时间)、 datetime (存储日期和时间)、 timestamp (时间戳)。

(2)约束:

not null:表示该列不能为 null 值。

default:为列设置默认值。

unique:确保列中的值唯一。

primary key:定义主键,唯一标识表中的每一行记录。

foreign key:用于建立表之间的关联,定义外键约束。

1.3示例

将 employees 表中的 emp_name 列重命名为 employee_name

alter table employees

change column emp_name employee_name varchar(50) not null;

2. 修改列数据类型

2.1代码使用

alter table 表名

modify column 列名 新数据类型 [约束];

2.2示例

将 salary 列的数据类型从 int 改为 decimal(10,2)

alter table employees

modify column salary decimal(10,2);

3. 添加新列

3.1代码使用

alter table 表名

add column 列名 数据类型 [约束] [first|after 列名];

注意:在MySQL中使用 ALTER或者TABLE 语句在指定位置添加新列时,主要通过 AFTER 和 FIRST 关键字来实现。

3.2示例

添加 hire_date 列到 employees 表

alter table employees

add column hire_date date after employee_name;

4. 删除列

4.1代码使用

alter table 表名

drop column 列名;

4.2示例

删除 employees 表中的 temp_column 列

alter table employees

drop column temp_column;

5. 修改列的默认值

5.1代码使用

(1)设置默认值:

alter table 表名

alter column 列名 set default 默认值;

(2)删除默认值:

alter table 表名

alter column 列名 drop default;

5.2示例

为 status 列设置默认值 'active'

alter table employees

alter column status set default 'active';

二、修改行信息(数据更新)

1. 更新单行数据

1.1代码使用

update 表名

set 列1=值1, 列2=值2

where 条件;

1.2示例

将 employee_id=101 的工资改为 8000

update employees

set salary = 8000

where employee_id = 101;

2. 批量更新多行数据

2.1代码使用

update 表名

set 列名=新值

where 条件;

2.2示例

将所有 department_id=10 的员工工资增加 10%

update employees

set salary = salary *1.1

where department_id = 10;

3. 使用子查询更新

3.1代码使用

update 表名

set 列名 = (select 子查询)

where 条件;

3.2示例

将销售部的员工工资设置为部门平均工资

update employees e

set salary = (

select avg(salary)

from employees

where department_id = e.department_id

)

where department_id = 10;

4. 替换数据(replace)

4.1代码使用

replace into 表名 (列1, 列2)

values (值1, 值2);

4.2示例

替换 employee_id=101 的数据(若不存在则插入)

replace into employees (employee_id, emp_name, salary)

values (101, 'alice', 7500);

5. 删除行数据

在mysql中删除表中的行数据,主要使用 delete 语句,其基本语法和常见用法如下

(1)删除表中的所有行:

如果想删除表中的所有数据,但保留表结构,可以使用以下语句:

delete from table_name;

这里的 table_name 是你要操作的表名。例如,要删除名为 students 表中的所有行:

delete from students;

(2)根据条件删除特定行:

使用 where 子句来指定删除的条件,只有满足条件的行才会被删除。

delete from table_name

where condition;

例如,从 students 表中删除 age 大于30岁的学生记录:

delete from students where age > 30;

(3)使用连接(join)来删除相关行:

当涉及多个表之间的关联关系时,可以使用 join 子句结合 delete 语句来删除相关行。

delete t1

from table1 t1

join table2 t2 on t1.common_column = t2.common_column

where t2.some_condition;

在使用 delete 语句时要特别小心,尤其是没有 where 条件的情况,因为一旦执行,数据将被永久删除,难以恢复。建议在操作前先备份数据。

通过以上操作,你可以灵活修改 MySQL 中的表结构和数据。如果有其他需求,欢迎继续提问

相关推荐
blackA_17 分钟前
数据库MySQL学习——day4(更多查询操作与更新数据)
数据库·学习·mysql
极限实验室1 小时前
Easysearch 迁移数据之 Reindex From Remote
数据库
朴拙数科1 小时前
基于LangChain与Neo4j构建企业关系图谱的金融风控实施方案,结合工商数据、供应链记录及舆情数据,实现隐性关联识别与动态风险评估
数据库·langchain·neo4j
小李学不完2 小时前
Oracle--SQL事务操作与管理流程
数据库
qq_441996052 小时前
为何 RAG 向量存储应优先考虑 PostgreSQL + pgvector 而非 MySQL?
数据库·mysql·postgresql
Ivan陈哈哈2 小时前
Redis是单线程的,如何提高多核CPU的利用率?
数据库·redis·缓存
AI军哥3 小时前
MySQL8的安装方法
人工智能·mysql·yolo·机器学习·deepseek
小光学长3 小时前
基于vue框架的电信用户业务管理系统的设计与实现8ly70(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
程序员不想YY啊3 小时前
MySQL元数据库完全指南:探秘数据背后的数据
数据库·mysql·oracle
数据最前线3 小时前
Doris表设计与分区策略:让海量数据管理更高效
数据库