SQLserver 怎么更新某一行的所有列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLserver 怎么更新某一行的所有列相关的知识,希望对你有一定的参考价值。

SQLserver 怎么更新某一行的所有列

update [表名] set [列名1]=值,[列名2]=值 ..... where [某列]=选定值 参考技术A 做了个例子,在BaiduSqlServerQAndA数据库中建立员工表:

USE [BaiduSqlServerQAndA]
GO
/****** 对象: Table [dbo].[Employee] 脚本日期: 12/29/2009 16:06:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Employee](
[EmployeeNo] [int] NOT NULL,
[NTAccount] [nvarchar](20) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL,
[Name_Chi] [nvarchar](20) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL,
[Birthday] [datetime] NOT NULL,
[DeptName] [nvarchar](20) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL,
[Email] [nvarchar](50) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL,
CONSTRAINT [PK__Employee__76CBA758] PRIMARY KEY CLUSTERED
(
[EmployeeNo] ASC
) ON [PRIMARY]
) ON [PRIMARY]

插入一行数据:
INSERT INTO [BaiduSqlServerQAndA].[dbo].[Employee]
([EmployeeNo]
,[NTAccount]
,[Name_Chi]
,[Birthday]
,[DeptName]
,[Email])
VALUES(10, 'Bill_lee', '李四', '1980/2/20', 'G200', 'Bill_lee@company')

更新这一行所有列:
UPDATE [BaiduSqlServerQAndA].[dbo].[Employee]
SET [EmployeeNo] = 30
,[NTAccount] = 'Gates_lu'
,[Name_Chi] = '张三'
,[Birthday] = '1990/8/18'
,[DeptName] = 'ResearchDepartment'
,[Email] = 'Gates_lu@company'
WHERE EmployeeNo=10本回答被提问者和网友采纳

在mysql中为某一行的某几列插入数据怎么写

1、数据库中创建课程信息表 tb_courses,包含课程编号 course_id、课程名称 course_name、课程学分 course_grade 和课程备注 course_info,输入的 SQL 语句和执行结果如下所示。

2、查看表里的数据还是空的。

3、在 tb_courses 表中插入一条新记录,course_id 值为 1,course_name 值为“Network”,course_grade 值为 3,info 值为“Computer Network”。

4、可以看到插入记录成功。在插入数据时,指定了 tb_courses 表的所有字段,因此将为每一个字段插入新的值。

5、在 tb_courses 表中插入一条新记录,course_id 值为 2,course_name 值为“Database”,course_grade 值为 3,info值为“MySQL”。输入的 SQL 语句和执行结果如下所示。

6、最后查看表数据,就完成了。

参考技术A

import_table(importTable) 的延申功能:可定制化行输入。

import_table(importTable) 我们之前有介绍过,是一款并行导入各种格式文本的工具,封装了 MySQL 语句 load data local infile。

比如说要导入一个以 TAB 为分隔符的文本数据文件:/tmp/sample_ytt.txt 到表:ytt_new.t1,可以执行下面语句:

上面结果是 load data infile 语句的导入结果。如果改用 import_table 方法来做同样的事情,基于 Python 语法,使用方法如下:

那接下来看另外一个需求:在导入文本文件时对每行做预处理(例如在导入数据之前更改列 r2 的值为 mod(r1,10),列 r5 的值为 abs(r4-46) ),这样可以减少导入后再次处理的时间开销。

这个需求用 load data infile 语句非常容易实现:(导入时更改列 r2 和 r5 的数据,类似 UPDATE 语法)

那如果要用 util.import_table(importTable) 来实现上面的需求,在 MySQL 8.0.22 之前是没办法的。

随着 MySQL 8.0.22 的发布,MySQL 对 import_table 方法做了些扩充功能,其中增加了一个选项 “decodeColumns” 可以实现字段的预先输入定制化功能,并且还可以更加丰富。

接下来用 import_table 来实现上面的需求,定制化字段 r2 和 r5:

以上 Options 选项,见下图:

我来具体解释下上图的含义:蓝色字体 columns 对应的数组分别指定数据文件中的每行字段,也就是默认的 TAB 分隔符所分割的每列值,1 和 2 代表占位符,1 代表数据文件中每行的第一个列,2 代表数据文件中每行的第四列,decodeColumns 字典分别对需要预先输入的字段做处理。比如 r1 字段保留为变量 @1,r2 字段对应 mod(r1,10) 等。

如果还是不太理解变换规则,可以临时打开 general log, 上面 import_table(importTable)对应的 MySQL 日志为:

以上日志写的很清楚,内部转换为最基本的load data infile语法。

那这里我简单解读了下 MySQL 8.0.22 对 MySQL Shell 的一项定制化输入文本文件的新特性,更多的新特性可以继续关注。

参考技术B 如果你有确定是那一行了,那就不叫插入了,叫更新:
update table_name set value1='aaa',value2='bbb' where id = xxx;
table_name是表名,value1和value2就是列名
参考技术C insert into _table(Value1,Value2)values (num1,num2); 参考技术D INSERT INTO tbl_name (col1,col2) VALUES(值1,值2) where (确认你那一行)

以上是关于SQLserver 怎么更新某一行的所有列的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver 约束

oracle中怎么批量更新某列数据

sqlserver trigger(触发器)-更新某几列数据时触发

C# WPF Listview 如何设置某一行的颜色

oracle数据库如何用update批量更新某列数据中的字段

sql修改某一行数据