作者:whisper
链接:http://proprogrammar.com:443/article/562
声明:请尊重原作者的劳动,如需转载请注明出处
3.5.1 插入数据
3.5.2 修改数据
3.5.3 删除数据
两种插入数据方式
可以一次插入多个元组
1. 插入元组
语句格式
INSERT
INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>]… );
功能
将新元组插入指定表中
INTO子句
VALUES子句
提供的值必须与INTO子句匹配
[例3.69]将一个新学生元组(学号: 201215128;姓名:陈冬;性别:男;所在系: IS;年龄: 18岁) 插入到Student表中。
INSERT
INTO Student (Sno,Sname,Ssex,Sdept,Sage)
VALUES ('201215128','陈冬','男','IS',18);
[例3.71] 插入一条选课记录('200215128','1 ') 。
INSERT INTO SC(Sno,Cno)
VALUES ('201215128 ',' 1 ');
关系数据库管理系统将在新插入记录的Grade列上自动地赋空值。
或者:
INSERT INTO SC
VALUES (' 201215128 ',' 1 ',NULL);
[例3.70]将学生张成民的信息插入到Student表中。
INSERT INTO Student
VALUES ('201215126','张成民','男’,18,'CS');
2. 插入子查询结果
语句格式
INSERT INTO <表名> [(<属性列1> [,<属性列2>… )]
子查询;
INTO子句
子查询
SELECT子句目标列必须与INTO子句匹配
[例3.72] 对每一个系,求学生的平均年龄,并把结果存入数据库
第一步:建表
CREATE TABLE Dept_age
( Sdept CHAR(15) /*系名*/
Avg_age SMALLINT); /*学生平均年龄*/
第二步:插入数据
INSERT INTO Dept_age(Sdept,Avg_age)
SELECT Sdept, AVG(Sage)
FROM Student
GROUP BY Sdept;
关系数据库管理系统在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则
语句格式
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];
功能
三种修改方式
1. 修改某一个元组的值
[例3.73] 将学生201215121的年龄改为22岁
UPDATE Student
SET Sage=22
WHERE Sno=' 201215121 ';
2. 修改多个元组的值
[例3.74] 将所有学生的年龄增加1岁。
UPDATE Student
SET Sage= Sage+1;
3. 带子查询的修改语句
[例3.75] 将计算机科学系全体学生的成绩置零。
UPDATE SC
SET Grade=0
WHERE Sno IN
(SELETE Sno
FROM Student
WHERE Sdept= 'CS' );
关系数据库管理系统在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则
语句格式
DELETE FROM <表名>
[WHERE <条件>];
功能
删除指定表中满足WHERE子句条件的元组
WHERE子句
三种删除方式
1. 删除某一个元组的值
[例3.76] 删除学号为201215128的学生记录。
DELETE FROM Student
WHERE Sno= 201215128 ';
2. 删除多个元组的值
[例3.77] 删除所有的学生选课记录。
DELETE FROM SC;
3. 带子查询的删除语句
[例3.78] 删除计算机科学系所有学生的选课记录。
DELETE
FROM SC
WHERE Sno IN
(SELETE Sno
FROM Student
WHERE Sdept= 'CS') ;
空值就是“不知道”或“不存在”或“无意义”的值。
一般有以下几种情况:
1. 空值的产生
空值是一个很特殊的值,含有不确定性。对关系运算带来特殊的问题,需要做特殊的处理。
空值的产生有其实际需求
学生在选课后,产生选课表,但是还没有成绩。这时候成绩部分就为空值,它和0不一样(不是0分)
2. 空值的判断
判断一个属性的值是否为空值,用IS NULL或IS NOT NULL来表示。
[例 3.81] 找出漏填了性别或者年龄信息的记录
SELECT *
FROM Student
WHERE Ssex IS NULL OR Sage IS NULL ;
3. 空值的约束条件
属性定义(或者域定义)中
4. 空值的算术运算、比较运算和逻辑运算
[例3.82] 找出选修1号课程的不及格的学生。
SELECT Sno
FROM SC
WHERE Grade < 60 AND Cno='1';
查询结果不包括缺考的学生,因为他们的Grade值为null。
[例 3.83] 选出选修1号课程的不及格的学生以及缺考的学生。
SELECT Sno
FROM SC
WHERE Cno='1' AND (Grade<60 OR Grade IS NULL);
亲爱的读者:有时间可以点赞评论一下
全部评论