update

数据库SQL语法用语

Update是SQL语句中DML类(DataManipulation Language,数据操纵语言)中的一个指令,用于更新(修改)表中原有数据。

语句概述
Update是SQL语句中DML类(Data Manipulation Language,数据操纵语言)中的一个指令,用于更新(修改)表中原有数据。基本书写规则
(1)SQL 语句使用分号(;)结尾;
(2)Update作为关键字不区分大小写。
语法结构
UPDATE 表名称
SET 列名称 = 新值, 列名称2 = 新值2,...
WHERE 条件;
其中,表名称是需要更新数据的表的名称;列名称= 新值部分指定了要更新的列及其新值;WHERE条件用于指定哪些记录需要被更新。如果省略WHERE子句,所有记录将被更新。
SQL的UPDATE语句通过指定表、列及其新值以及适用的条件来实现对数据库表中数据的更新操作。使用WHERE子句
更新部分数据行时可以使用WHERE来指定更新对象的条件。通过WHERE
子句指定更新对象的UPDATE语句称为搜索型UPDATE语句。
更新操作
(1)更新表中的特定行
UPDATE语句用于修改表中的数据,而WHERE子句则用于指定哪些行需要被更新。
语法说明:
UPDATE< 表名 >
SET< 列名 = 表达式 >[,…n]
WHERE< 查询条件 >
具体说明:
1)< 表名 > 指定需要修改数据的表的名称。
2)< 列名 = 表达式 > 指定要修改的列名和相应的值,表达式值的数据类型要与对应列的数据类型一样。
3)WHERE子句指定表中修改数据所要满足的条件。如果WHERE子句省略,则表示要修改表中的所有行。
例如:
客户1000000005现在有了电子邮件地址,因此他的记录需要更新。
语句如下:
输入▼
UPDATE Customers
SET cust_email = ‘kim@thetoystore.com’
WHERE cust_id = ‘1000000005’;
UPDATE语句总是以要更新的表名开始。在这个例子中,要更新的表名为Customers。SET命令用来将新值赋给被更新的列。在这里,SET子句设置cust_email列为指定的值:
SET cust_email = ‘kim@thetoystore.com’ UPDATE语句以WHERE子句结束,它告诉DBMS 更新哪一行。没有WHERE子句,DBMS将会用这个电子邮件地址更新Customers表中的所有行。
(2)更新表中的所有行
省略WHERE子句,所有记录将被更新。
语法说明:
UPDATE <表名>
SET <列名> = <表达式>;
(3)多列更新
同时更新多列时,可以在UPDATE语句的SET子句中,使用逗号分隔更新对象的多个列。
语法说明:
UPDATE< 表名 >
SET< 列名1 = 表达式1,列名2=表达式2,…… >
WHERE< 查询条件 >
例如:
输入▼
UPDATE Customers
SET cust_contact = 'Sam Roberts', cust_email = 'sam@toyland.com'
WHERE cust_id = '1000000006';
在更新多个列时,只需要使用一条SET命令,每 个“列=值”对之间用逗号分隔(最后一列之后不用逗号)。在此例子中,更新顾客1000000006的 cust_contact和cust_email列。
(4)使用NULL进行更新
使用 UPDATE 也可以将列更新为 NULL(该更新俗称为 NULL 清空)。此时只需要将赋值表达式右边的值直接写为 NULL 即可。和 INSERT 语句一样,UPDATE 语句也可以将 NULL 作为一个值来使用。但是,只有未设置 NOT NULL 约束和主键约束的列才可以清空为NULL。如果将设置了上述约束的列更新为NULL,就会出错。要删除某个列的值,可设置它为NULL(假如表定义允许NULL值)。
语法说明:
UPDATE< 表名 >
SET< 列名 = NULL,…… >
WHERE< 查询条件 >
例如:
输入▼
UPDATE Customers SET cust_email = NULL WHERE cust_id = ‘1000000005’
其中NULL用来去除cust_email列中的值。这与保存空字符串不同(空字符串用‘’表示,是一个值),而NULL表示没有值。
(5)FROM关键字在有些数据库系统中,SQL实现支持在UPDATE语句中使用FROM子句,用一个表的数据更新另一个表的行。如想知道是否支持该特性需查阅数据库系统文档。
(6)update语句中使用子查询
在有些数据库系统中,update语句中可以使用子查询,使得能用SELECT 语句检索出的数据更新列数据。
子查询是嵌套在另一个查询中的查询,通常用在WHERE子句中,但也可以用于SET子句。
例如:
1)在WHERE子句中使用子查询
假设有一个sales表,将那些销售额超过所有销售人员平均销售额的记录的bonus字段更新为100。
UPDATE sales
SET bonus = 100
WHERE sales_amount > (SELECTAVG(sales_amount) FROM sales);
在这个例子中,子查询计算sales表中所有记录的sales_amount的平均值,然后WHERE子句根据这个平均值来更新记录。
2)在SET子句中使用子查询
假设有两个表:employees和departments。根据departments表中的信息更新employees表中的salary字段。
UPDATE employees
SET salary = salary * (SELECTdepartment_increase FROM departments WHERE departments.department_id =employees.department_id)
WHERE EXISTS (SELECT 1 FROMdepartments WHERE departments.department_id = employees.department_id);
在这个例子中,department_increase是departments表中的一个字段,表示每个部门的工资增长百分比。SET子句中的子查询根据department_id字段来更新employees表中的salary字段。
(7)在SQL UPDATE语句中使用JOIN来更新表中的数据
当需要根据一张或多张表的数据来更新另一张表的数据时,可以使用UPDATE语句结合JOIN操作。
1)选择合适的JOIN类型:INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)。
2)编写UPDATE语句并包含JOIN:首先,确定要更新的目标表和源表,并使用别名来简化查询。使用ON子句指定JOIN条件。使用SET子句来定义要更新的字段及其新值。
假设我们有一个客户表(Customers)和订单表(Orders),我们想要更新客户的姓氏为“Smith”,但仅当他们的订单包含键盘时才进行更新。
UPDATE Customers C
JOIN Orders O ONC.customer_id = O.customer_id
SET C.last_name = 'Smith'
WHERE O.item = 'Keyboard';
在这个例子中,通过Customers和Orders表之间的连接,找到了所有相关联的客户,并将他们的姓氏更新为“Smith”。
如果需要在一个表内更新数据,可以使用自连接。例如,更新每个员工的上级姓名:
UPDATE employee AS t1
JOIN employee AS t2 ON t1.经理_id = t2.员工_id
SET t1.经理_姓名= t2.姓名;
这个语句的目的是更新employee表中每个员工的“经理_姓名”字段,使其与对应经理的“姓名”字段相匹配。使用了自连接(self-join),即同一个表employee通过两个不同的别名t1和t2来表示,t1和t2代表同一个表employee的不同实例或行集,t1代表当前正在处理的员工,t2代表当前员工的上级,通过ON子句中的条件t1.经理_id = t2.员工_id,确定了t1中的每一行与t2中的哪一行相关联。
3)在某些数据库系统中(如SQL Server),可能需要使用FROM子句和表别名来明确指定源表。确保JOIN条件正确且高效,以避免性能问题。
操作举例说明
例子:
以Product(商品)表为例
1)更新表中的所有行:将登记日期全部更新为“2009-10-10”
UPDATEProduct
SETregist_date = '2009-10-10';
此时,连登记日期原本为 NULL的数据行(运动 T 恤)的值也更新为2009-10-10了。
2)更新特定行
将商品种类(product_type)为厨房用具的记录的销售单价(sale_price)更新为原来的 10 倍
UPDATEProduct
SETsale_price = sale_price * 10
WHEREproduct_type = '厨房用具';
该语句通过WHERE 子句中的“product_type = '厨房用具'”条件,将更新对象限定为 3 行。然后通过 SET 子句中的表达式sale_price * 10,将原来的单价扩大了 10 倍。SET 子句中赋值表达式的右边不仅可以是单纯的值,还可以是包含列的表达式。
3)多列更新
将销售单价(sale_price)更新为原来的 10 倍,同时将进货单(purchase_price)更新为原来的一半
UPDATEProduct
SETsale_price = sale_price * 10, purchase_price = purchase_price / 2
WHEREproduct_type = '厨房用具';
4)使用NULL进行更新
将商品编号(product_id)为 0008的数据(圆珠笔)的登记日期(regist_date)更新为 NULL
UPDATEProduct
SETregist_date = NULL
WHEREproduct_id = '0008';
4 UPDATE与安全
在客户端/服务器的DBMS中,使用UPDATE语句可能需要特殊的安全权限。在使用UPDATE前,应该保证自己有足够的安全权限。
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市