SQL中的update语句涉及到两张表,老是忘,现在记下了

 

使用SQL中UPDATE语句实现多表更新时间:2010-09-17 10:39 来源:互联网 

在开发中,数据库交换使用,关键性的语法各不相同,这是一件让开发人员很头痛的事情.下面为您介绍SQL中Update语句更新多表时在SQL Server,Oracle,MySQL三种数据库中的用法.,供您参考。

我也试了SQLite数据库,都没成功,不知是不支持多表更新还是咋的. 在本例中: 我们要用表gdqlpj中的gqdltks,bztks字段数据去更新landleveldata中的同字段名的数据,条件是当landleveldata 中的GEO_Code字段值与gdqlpj中的lxqdm字段值相等时进行更新.

SQL Server语法: { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited } SET { column_name = { expression | DEFAULT | NULL } | @variable = expression | @variable = column = expression } [ ,...n ] { { [ FROM { < table_source > } [ ,...n ] ] [ WHERE < search_condition > ] } | [ WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } [ OPTION ( < query_hint > [ ,...n ] ) ]

SQL中UPDATE示例: update a set a.gqdltks=b.gqdltks,a.bztks=b.bztks from landleveldata a,gdqlpj b where a.GEO_Code=b.lxqdm

Oracle语法: UPDATE updatedtable SET (col_name1[,col_name2...])= (SELECT col_name1,[,col_name2...] FROM srctable [WHERE where_definition])

Oracel 示例: update landleveldata a set (a.gqdltks, a.bztks)= (select b.gqdltks, b.bztks from gdqlpj b where a.GEO_Code=b.lxqdm)

MySQL语法: UPDATE table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]

MySQL 示例: update landleveldata a, gdqlpj b set a.gqdltks= b.gqdltks, a.bztks= b.bztks where a.GEO_Code=b.lxqdm

有A、B张表,其记录如下:

A表
c1       c2
--------------
1 a1
2 a2
3 a3
8 a8

B表
c1       c3
--------------
1 b1
2 b1
3 b3
10 b10

A.c1与B.c1相等,用一条sql语句,实现A.c2的值更新为B.c3
------------------------
UPDATE    A
SET A.c2 =B.c3
from A ,B
where A.c1=B.c1

UPDATE    A
SET A.c2 =B.c3
from A inner join B on A.c1=B.c1

注意:update后面是不能跟多表的,但跟在from子句后面

 

文章转载自网管之家:http://www.bitscn.com/pdb/mssql/201010/191163.html

SQL(结构化查询语言)是一种用于管理和操作关系型数据库的标准编程语言。它允许用户对存储在中的数据执行各种操作,如检索、插入、更新和删除记录等。以下是 SQL 语句的一些基本用法介绍: ### 1. 查询数据 (`SELECT`) 如果你想从一个或多个中获取某些列的数据,可以使用 `SELECT` 语句。最简单的形式是从单个中选择所有列: ```sql SELECT * FROM 名; ``` 如果你只需要特定的一两列数据,那么可以在 `*` 的位置列出你想获得的具体字段名称: ```sql SELECT 列1, 列2 FROM 名; ``` 还可以结合条件筛选出符合条件的结果集: ```sql SELECT 列1, 列2 FROM 名 WHERE 条件达式; ``` #### 示例: 查找学生内年龄大于等于18岁的所有学生的姓名和性别: ```sql SELECT name, gender FROM students WHERE age >= 18; ``` --- ### 2. 插入新纪录 (`INSERT INTO`) 当你需要向现有格添加新的行时,可以用 `INSERT INTO` 命令。如果要一次性给所有的非自增主键赋值的话就直接指定各列及对应的新数值即可;若只是部分字段有内容则需指明这些具体的字段列。 全部列都提供值的情况下: ```sql INSERT INTO 名 VALUES (值1, 值2,...); ``` 仅给定若干个已知项的情况下的语法为: ```sql INSERT INTO 名 (列1, 列2 ...) VALUES (值1, 值2 ... ); ``` #### 示例: 往成绩里新增一条学生成绩的信息: ```sql INSERT INTO scores (student_id, subject_name, score) VALUES ('S001', 'Mathematics', 95); ``` --- ### 3. 更新已有数据(`UPDATE`) 当你要修改已经存在的某一行或多行的数据的时候就会用到此命令。你需要指出想要更改哪些数据以及如何更改它们,并且通常还应该有一个过滤条件来确定影响哪几条目。 语法格式如下所示: ```sql UPDATE 名 SET 字段=新值 [WHERE 条件]; ``` 如果没有加 `WHERE` 子句,则整个里的相应字段都会被改写成相同的固定值,所以在大多数时候都应该加上合适的限制范围以免误操作造成不必要的麻烦。 #### 示例: 把编号为'S001'的学生的成绩由原来的数学分数改为96分: ```sql UPDATE scores SET score = 96 WHERE student_id='S001'; ``` --- ### 4. 删除数据 (`DELETE`) 最后一种常见的 DML 操作就是 `DELETE` —— 它可以从中移除满足一定条件的零条至多条记录。同样地,为了防止意外清空整张,记得总是带上明确的选择依据! 其一般形态是这样的: ```sql DELETE FROM 名 [WHERE 条件]; ``` 省略掉后面的方括号内的成分意味着会彻底清除该上的所有实体而只保留架构本身不变。 #### 示例: 删除名为'scores'这张里面所有关于英语科目的考试得分: ```sql DELETE FROM scores WHERE subject_name = 'English'; ``` 以上介绍了四种最常见的 CRUD (Create Retrieve Update Delete) 类别的 SQL 指令。当然实际应用当中还有很多更复杂的特性等着大家去探索呢~希望这个简短指南对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值