SQL语言—数据更新

SQL语言—数据更新本文主要讲解了 SQL 语言中的数据更新的语法 并且举例进行相关知识的说明和讲解

大家好,欢迎来到IT知识分享网。

文章目录

  • 前言
  • 一、数据更新之插入数据
    • 1.插入单个元组
      • (1)语句格式
      • (2)语法说明
        • INTO子句
        • VALUES子句
        • 插入规则
      • (3)举例讲解
        • 例子1:
        • 例子2:
        • 易犯错误
    • 2.插入子查询结果
      • (1)语句格式
      • (2)语法说明
        • INTO子句(与插入单条元组类似)
        • 子查询
        • 查询规则
      • (3)举例讲解
        • 例子1:新建一张表存放每部门员工的平均工资。
  • 二、数据更新之修改数据
    • 1.修改某一个元组的值
      • (1)语法格式
      • (2)语法说明
        • SET子句
        • WHERE子句
        • 语法规则
      • (3)举例讲解
        • 例子1:部门调整
    • 2.修改多个元组的值
      • (1)举例讲解
        • 例子1:为员工发放薪金
    • 3.带子查询的修改语句
      • (1)语法结构
      • (2)举例讲解
        • 例子1:不知道部门编号的情况下发奖金
  • 三、数据更新之删除数据
    • 1.删除某一元组的值
      • (1)语法格式
      • (2)语法说明
        • FROM子句
        • WHERE子句
      • (3)举例讲解
        • 例子1:删除离职人员信息
    • 2.删除多个元组的值
      • (1)举例讲解
        • 例子1:解散部门
    • 3.带子查询的删除语句
      • (1)语法格式
      • (2)举例讲解
        • 例子1:不知道部门编号的情况下解散部门
    • 4.删除的易错点
      • (1)违反完整性约束条件
      • (2)DELETE不支持CASCADE
  • 总结

前言

本文主要讲解了SQL语言中的数据更新的语法,并且举例进行相关知识的说明和讲解。


一、数据更新之插入数据

1.插入单个元组

插入单个元组可以理解为给表插入一行数据

(1)语句格式

功能:将新元组插入指定表中

INSERT INTO <表名> [(<属性1>[,<属性2>...])] VALUES (<常量1>[,<常量2>]...); 

(2)语法说明

INTO子句
  • 指定要插入数据的表名及属性列
  • 属性列的顺序可与表定义中的顺序不一致
  • 没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
  • 指定部分属性列:插入的元组在其余属性列上取空值(ORACLE这条不适用)
VALUES子句
  • 提供的值必须与INTO子句匹配
    – 值的个数
    – 值的类型

插入规则

b.参照完整性

c.用户定义的完整性

  • 对于有NOT NULL约束的属性列是否提供了非空值
  • 对于有UNIQUE约束的属性列是否提供了非重复值
  • 对于有值域约束的属性列所提供的属性值是否在值域范围内

(3)举例讲解

在这里插入图片描述

例子1:

插入单个元组进入表:

INSERT INTO DEPT VALUES ('50','MARKETING','BEIJING'); 
例子2:
INSERT INTO DEPT VALUES ('60','TECHNOLOGY',''); 

插入方法2:

INSERT INTO DEPT VALUES ('60','TECHNOLOGY',NULL); 
易犯错误

NULL值多了单引号,表示插入的是NULL这个单词,而不是插入的空值
正确代码:

INSERT INTO DEPT VALUES ('60','TECHNOLOGY',NULL); 

错误代码:

INSERT INTO DEPT VALUES ('60','TECHNOLOGY','NULL'); 

结果会发现错误的代码相当于把NULL当成字符串写入了表中。
在这里插入图片描述

2.插入子查询结果

将子查询结果插入到指定表中

(1)语句格式

INSERT INTO <表名> [(<属性1>[,<属性2>...])] 子查询; 

(2)语法说明

INTO子句(与插入单条元组类似)
  • 指定要插入数据的表名及属性列
  • 属性列的顺序可与表定义中的顺序不一致
  • 没有指定属性列:表示要插入的是一条完整的元组
  • 指定部分属性列:插入的元组在其余属性列上取空值(ORACLE这条不适用)
子查询

SELECT子句目标列必须与INTO子句匹配

  • 值的个数
  • 值的类型
查询规则

b.参照完整性

c.用户定义的完整性

  • 对于有NOT NULL约束的属性列是否提供了非空值
  • 对于有UNIQUE约束的属性列是否提供了非重复值
  • 对于有值域约束的属性列所提供的属性值是否在值域范围内

(3)举例讲解

例子1:新建一张表存放每部门员工的平均工资。
  • 第一步,先建一张表,表字段DEPTNO、AVGSAL
  • 第二步,查询EMP表中的部门平均工资,将查到的值插入新建的表中
CREATE TABLE DEPT_AVGSAL ( DEPTNO NUMBER(2,0) NOT NULL, AVGSAL NUMBER(6,2) NOT NULL, CONSTRAINT DEPT_AVGSAL_PK PRIMARY KEY ( DEPTNO ) ENABLE ); 
INSERT INTO DEPT_AVGSAL(DEPTNO,AVGSAL) SELECT DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO; 

二、数据更新之修改数据

1.修改某一个元组的值

修改指定表中满足WHERE子句条件的元组

(1)语法格式

UPDATE <表名> SET <列名>=<表达式>[,<列名>=<表达式>][WHERE <条件>]; 

(2)语法说明

SET子句

指定修改方式

  • 要修改的列
  • 修改后取值
WHERE子句

指定要修改的元组

  • 缺省表示要修改表中的所有元组
语法规则

b.主码不允许修改

c.用户定义的完整性

  • NOT NULL约束
  • UNIQUE约束
  • 值域约束

(3)举例讲解

例子1:部门调整
UPDATE EMP SET DEPTNO=50 WHERE ENAME='SMITH'; 

在这里插入图片描述

2.修改多个元组的值

语法格式和规则与修改单个元组的值一致,不作赘述

(1)举例讲解

例子1:为员工发放薪金
UPDATE EMP SET SAL=SAL+100; 
UPDATE EMP SET COMM=100 WHERE DEPTNO=20; 

3.带子查询的修改语句

(1)语法结构

UPDATE <表名> SET <列名>=<表达式>[,<列名>=<表达式>]WHERE (子查询); 

(2)举例讲解

例子1:不知道部门编号的情况下发奖金

所有数据与之前的例子一致,这里只放代码,不做过多赘述

UPDATE EMP SET COMM=200 WHERE( SELECT DEPTNO FROM EMP WHERE DNAME='ACCOUNTING' ); 

三、数据更新之删除数据

1.删除某一元组的值

删除指定表中满足WHERE子句条件的元组

(1)语法格式

DELETE FROM <表名> [WHERE <条件>]; 

(2)语法说明

FROM子句

指定从哪个表删除

WHERE子句
  • 指定要删除的元组所满足的条件
  • 缺省表示要修改表中的所有元组

(3)举例讲解

例子1:删除离职人员信息
DELETE FROM EMP WHERE ENAME='MARTIN'; 

在这里插入图片描述

2.删除多个元组的值

语法格式和规则与修改单个元组的值一致,不作赘述

(1)举例讲解

例子1:解散部门

公司裁员,解散RESEARCH部门(假设知道部门编号为20),删除RESEARCH部门的所有信息。

DELETE FROM EMP WHERE DEPTNO=20; 

3.带子查询的删除语句

(1)语法格式

DELETE FROM <表名> WHERE (子查询); 

(2)举例讲解

例子1:不知道部门编号的情况下解散部门

公司裁员,解散ACCOUNTING部门(假设不知道部门编号),删除ACCOUNTING部门的所有信息。

DELETE FROM EMP WHERE( SELECT DEPTNO FROM EMP WHERE DNAME='ACCOUNTING'; ) 

4.删除的易错点

(1)违反完整性约束条件

在这里插入图片描述

(2)DELETE不支持CASCADE

在这里插入图片描述


总结

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121385.html

(0)
上一篇 2025-10-23 22:15
下一篇 2025-10-23 22:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信