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

相关推荐
广州智造3 小时前
OptiStruct实例:3D实体转子分析
数据库·人工智能·算法·机器学习·数学建模·3d·性能优化
技术宝哥6 小时前
Redis(2):Redis + Lua为什么可以实现原子性
数据库·redis·lua
学地理的小胖砸7 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
dddaidai1238 小时前
Redis解析
数据库·redis·缓存
数据库幼崽8 小时前
MySQL 8.0 OCP 1Z0-908 121-130题
数据库·mysql·ocp
Amctwd8 小时前
【SQL】如何在 SQL 中统计结构化字符串的特征频率
数据库·sql
betazhou9 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg
lyrhhhhhhhh9 小时前
Spring 框架 JDBC 模板技术详解
java·数据库·spring
喝醉的小喵10 小时前
【mysql】并发 Insert 的死锁问题 第二弹
数据库·后端·mysql·死锁
付出不多11 小时前
Linux——mysql主从复制与读写分离
数据库·mysql