一、插入数据
1.两种插入数据方式 :插入元组:插入的属性的值应是确定的值,如常量或是查询的确定的结果 可以插入单个元组 也可以同时插入多个元组 插入子查询结果:可以将一个SELECT子查询结果插入到表中 SELECT子查询可以是对一个表的查询,也可以是多个表间的查询。
2.INTO子句:
指定要插入数据的表名及属性列
属性列的顺序可与表定义中的顺序不一致
没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
指定部分属性列:插入的元组在其余属性列上取空值(若属性列不允许为空,则系统会提示出错)
3.VALUES子句:提供的值必须与INTO子句匹配列:值的个数、值的类型
4.插入子查询结果:命令格式为 INSERT INTO <表名>[(<属性列1>[, …n])] SELECT 子查询语句 注意:SELECT子句的目标列必须与INTO子句相匹配:待插入表中的列数相同、对应各列数据类型兼容,如果表中存在某些列定义为NOT NULL,那么子查询的结果在该列上必须有值,否则插入会失败
二、修改数据
1.修改数据的语句格式: UPDATE <表名> SET <列名1>=<表达式1>[,…n] [WHERE <条件> ];
功能 :修改指定表中满足WHERE子句条件的元组 、SET子句是用<表达式1>的值取代相应的属性列的值 ,如果省略WHERE子句,表示要修改表中所有元组
2.四种修改方式:修改某一个元组的值、修改多个元组的值、带子查询的修改语句、 带子关系的修改语句*
3.带子查询的修改语句:
例:将给编号为112p0024课程授课的职称为教授的教师的工资上调10%
UPDATE Teachers
SET Tsal=ROUND(Tsal*1.10, 0)
WHERE Tprof='教授'
AND Tno IN
( SELECT Tno From Tutors WHERE Cno='112p0024' );
4.带子关系的修改语句*:可以用于成批地修改相关数据
首先,将两个关系进行连接得到一个新的关系
然后,在新的关系中,分别用每个元组的某个属性列的值去更新这个元组的另一个属性列的值
通常,这两关系中至少包含一个相同的属性列,用于建立连接。
语句格式:
UPDATE<表名>
SET <列名1> =<子关系.表达式1>[,…n]
FROM <表名><子关系>
WHERE<连接条件> AND <选择条件>;
例题:将每个学生获得的总学分更新到StuInfo表中
思路:(1) 创建StuInfo表(Sno, TotalCredit); (2) 将所有学生的学号添加到StuInfo表中; (3)统计出每个学生获得的总学分,然后按照学号将这些结果更新到 StuInfo表中对应的每个元组TotalCredit属性列中
三、删除语句
1.删除语句的格式为: DELETE FROM<表名> [WHERE] <条件>;功能:删除指定表中满足WHERE子句条件的元组 。WHERE子句:指定要删除元组需满足的条件 如果省略WHERE子句,表示要删除表中所有元组,但表的模式定义仍在字典中,即DELETE语句使表成为空表
2.带子查询的删除语句 :例:从选课表中删除所有20141121班的学生的选课记录
DELETE FROM Reports
WHERE Sno IN
( SELECT Sno FROM Students WHERE Sclass='20141121');