当前位置: 首页 > news >正文

表数据编辑(数据库)

目录

一、插入数据

1.插入单个元组: INSERT…VALUES语句

2.插入子查询的结果: INSERT…SELECT语句

3.使用SELECT…INTO语句进行数据插入

二、修改数据

1、数据修改语句:UPDATE

2、修改给定表的所有行

3、基于给定表修改某些行

4、基于其他表修改某些行

5.用子查询修改某些行

三、删除数据

1.数据删除语句:DELETE

2.删除给定表的所有行

3. 基于给定表删除某些行

4.基于其他表删除某些行

5.用子查询删除某些行


表数据编辑又称数据更新,包括插入数据、修改数据和删除数据三类命令。

一、插入数据

1.插入单个元组: INSERT…VALUES语句

格式为:

INSERT [INTO]<表名> [ ( ]<列名> [,…n] ) ]

VALUES ( [,…n] )

注意:

(1)未出现在列名列表中的列插入时取空值

(2)表达式数量必须和列名数量相等,表达式的数据类型必须和对应列的数据类型相兼容;

(3)关系中的NOT NULL列必须出现在列名列表中;

(4)若省略列名列表,则VALUES须指定所有列的值。

【例】将(’S060102’, ’010201’)插入选课表。

INSERT INTO 选课表 (学号, 开课号)

VALUES ('S060102', '010201')

2.插入子查询的结果: INSERT…SELECT语句

格式为:

INSERT [INTO]<表名> [ <列名>( [,…n] ) ]

SELECT语句

【例】求各个专业学生的平均累计学分,把结果存入表中。

CREATE TABLE 主修专业 ( 专业 CHAR(20), avgpa INT)

GO

INSERT INTO 主修专业(专业, avgpa)

SELECT 专业, AVG(累计学分) FROM 学生表

GROUP BY 专业

3.使用SELECT…INTO语句进行数据插入

格式为:

SELECT <目标列>[,…n] INTO<新表名>

[ SELECT语句的其他子句 ]

注意:

(1)系统会自动创建一个新表,新表的结构由目标列表达式定义,然后将 SELECT 语句的结果集插入这个新表 ;

(2)当目标列是计算列时,必须为它起别名。

【例】用SELECT … INTO语句,求各个专业学生的平均累计学分,把结果存入表中。

SELECT 专业, AVG(累计学分) AS 平均累计学分 INTO 主修专业

FROM 学生表

GROUP BY 专业

二、修改数据

1、数据修改语句:UPDATE

格式为:

UPDATE<表名> SET {<列名> = <表达式>}[,…n]

[ FROM <表名>[,…n] ]

[ WHERE <修改条件>]

注意:

(1)UPDATE语句用来修改指定表中满足WHERE条件的元组。修改方法是用SET子句中的值取代相应列的值 ;

(2)修改条件和SELECT语句中WHERE条件完全相同,它不仅可以直接使用UPDATE后面的表,也可通过引入FROM子句直接使用其他表,还可以将子查询嵌入修改条件中。

2、修改给定表的所有行

省略WHERE子句,则UPDATE将修改表的所有行。

【例】将所有学生的累计学分增加3分。

UPDATE 学生表 SET 累计学分=累计学分+3 

3、基于给定表修改某些行

如果省略FROM子句,但含有WHERE子句,则UPDATE语句将修改满足修改条件的行,但是此时的修改条件只能直接使用UPDATE后面的表所包含的列。

【例】将计算机专业所有女生的籍贯改为“杭州”,累计学分增加3分。

UPDATE 学生表 SET 累计学分=累计学分+3, 籍贯='杭州'

WHERE 专业 = '计算机' AND 性别 = '女'

4、基于其他表修改某些行

如果修改条件需要使用其他表的列,就要用FROM子句将这些表引入到UPDATE语句中。

【例】将计算机专业所有学生的数据库原理课程的成绩增加10分。

UPDATE 选课表

SET 成绩 = 成绩+10

FROM 开课表 AS O, 课程表 AS C, 学生表 AS S

WHERE 专业 = '计算机' AND 课名 = '数据库原理'

AND C.课号 = O.课号 AND O.开课号 = 选课表.开课号

AND 选课表.学号 = S.学号

5.用子查询修改某些行

UPDATE中的修改条件还可以通过嵌入子查询进行构造。

【例】用子查询构造,将计算机专业所有学生的数据库原理课程的成绩增加10分。

UPDATE 选课表

SET 成绩 = 成绩+10

FROM 学生表 AS S

WHERE 专业 = '计算机' AND 选课表.学号 = S.学号 AND 开课号

IN (SELECT 开课号 FROM 开课表 WHERE 课号 IN

( SELECT 课号 FROM 课程表 WHERE 课名 = '数据库原理' ) )

三、删除数据

1.数据删除语句:DELETE

格式为:

DELETE [FROM]<目标表名>

[ FROM <表名>[,…n] ]

[ WHERE <删除条件>]

注意:

(1) DELETE语句用来删除指定表中满足删除条件的元组;

(2)删除条件和SELECT语句中WHERE条件完全相同,它不仅可以直接使用DELETE后面的表,也可通过引入FROM子句直接使用其他表,还可以将子查询嵌入删除条件中。

2.删除给定表的所有行

省略WHERE子句,则DELETE将删除表的所有行。

【例】将Student表清空。

DELETE FROM Student 3.

3. 基于给定表删除某些行

如果省略FROM子句,但含有WHERE子句,则DELETE语句将删除满足删除条件的行,但是此时的删除条件只能直接使用DELETE后面的表所包含的列。

【例】从Student表中删除计算机专业所有女生的信息。

DELETE FROM 学生表

WHERE 专业 = '计算机' AND 性别 = '女'

4.基于其他表删除某些行

如果删除条件需要使用其他表的列,就要用FROM子句将这些表引入到DELETE语句中。

【例】从选课t表中删除计算机专业所有学生对数据库原理课程的选修信息。

DELETE FROM 选课表 FROM 开课表 AS O, 课程表 AS C, 学生表 AS S

WHERE 专业 = '计算机'

AND 课名 = '数据库原理'

AND C.课号 = O.课号

AND O.开课号 = 选课表.开课号

AND 选课表.学号 = S.学号

5.用子查询删除某些行

DELETE中的删除条件还可以通过嵌入子查询进行构造。

【例】用子查询构造从选课t表中删除计算机专业所有学生对数据库原理课程的选修信息。

DELETE FROM 选课表 FROM 学生表 AS S

WHERE 专业 = '计算机' AND 选课表.学号 = S.学号 AND 开课号

      IN ( SELECT 开课号

             FROM 开课表WHERE 课号

             IN ( SELECT 课号 FROM 课程表

                    WHERE 课名 = '数据库原理’ ) )

http://www.lryc.cn/news/68003.html

相关文章:

  • 考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Python代码实现)
  • RocketMQ整理
  • Springboot +Flowable,会签、或签简单使用(二)
  • 将核心交换机配置为NTP服务器
  • application.properties文件注释
  • MySql查询报错this is incompatible with sql_mode=only_full_group_by
  • VMware Workstation 网络备忘 + 集群规模
  • 被裁现状,给找工作的同学一些建议
  • 编程到底难在哪里?
  • C++ 仿函数(一)
  • MATLAB连续LTI系统的时域分析(十)
  • HBuilderX使用
  • 【JavaSE】多态(多态实现的条件 重写 向上转移和向下转型 向上转型 向下转型 多态的优缺点 避免在构造方法种调用重写的方法)
  • MySQL学习---13、存储过程与存储函数
  • Mysql日志管理、备份与恢复
  • STM32单片机声控语音识别RGB彩灯多种模式亮度可调WS2812彩灯
  • 高校9大学术工具推荐,一定要用起来哦!
  • 记一次压力测试
  • 一个文明是否有竞争力,在很大程度上取决于信息传递的效率。
  • 测试4年,跳槽一次涨8k,我跳了3次···
  • Redis 入门教程(简单全面版)
  • java并发-AQS
  • openAI图像生成开发文档
  • Python综合案例—利用tkinter实现计算器的程序
  • canvas学习笔记
  • Navicat Premium 15安装注教程
  • yolo v8
  • 2022IDEA的下载、安装、配置与使用
  • 实验十 超市订单管理系统综合实验
  • 微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建