表数据编辑(数据库)

目录

一、插入数据

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 课名 = '数据库原理’ ) )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值