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 中的表结构和数据。如果有其他需求,欢迎继续提问

相关推荐
小白男神1 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G1 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备1 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远1 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
kybs19911 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
2601_962218611 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
程序猿_极客1 天前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安1 天前
MySQL-触发器
数据库·mysql