数据库原理及设计
同学们好!
第六讲:
SQL 数据库
标准语言(2)
3. 4. 操纵数据语言(DML)
数据操纵语言(DML)是 SQL的一部分,用于在关系型数据库对象中操纵数据。
有三条主要的的DML命令:
INSERT 插入纪录
UPDATE 修改纪录
DELETE 删除纪录
这些命令将在第5节中详细讨论。
新术语:查询是对数据库中的信息的寻找和定位。
. 插入数据
一、插入单个元组
向数据库文件中插入一条记录(单个元组),该记录添加在文件尾部。语法如下:
INSERT
INTO <表名> [(<属性列1>[,<属性列2>...])
VALUES (<常量1> [,<常量2>]...)
如果某些属性列在INTO子句中没有出现,则新记录在这些列上将取空值。但必须注意的是,在表定义时说明了NOT NULL的属性列不能取空值。否则会出错。
如果INTO子句中没有指明任何列名,则新插入的记录必须在每个属性列上均有值。
例1:将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:计算机;年龄:18岁)插入Student表中
INSERT
INTO Student
VALUES ('95020', '陈冬', '计算机', 'IS', 18);
例2:在表STUDENT中插人一个新的学生记录。语句如下:
INSERT INTO Student (学号,姓名,年龄,性别,系名,宿舍,家庭地址)
VALUES (’9603”,”刘京”,16,”男”,”计算机”,”l-301”,”北京海淀”)
例3:插入一条选课记录('95020','1')
INSERT
INTO SC(Sno, Cno)
VALUES ('95020', '1')
新插入的记录在Grade列上取空值。
二、插入子查询结果
子查询不仅可以嵌套在SELECT语句中,用以构造父查询的条件(),也可以嵌套在INSERT语句中,用以生成要插入的数据。
插入子查询结果的INSERT语句的格式为:
INSERT
INTO <表名> [(<属性列1> [,<属性列2>...])
子查询;
其功能是以批量插入,一次将子查询的结果全部插入指定表中。
,求学生的平均年龄,并把结果存入数据库
对于这道题,首先要在数据库中建立一个有两个属性列的新表,其中一列存放系名,另一列存放相应系的学生平均年龄。
CREATE TABLE Deptage (Sdept CHAR(15) ;
Avgage SMALLINT);
然后对数据库的Student表按系分组求平均年龄,再把系名和平均年龄存入新表中。
INSERT
INTO Deptage(Sdept, Avgage)
SELECT Sdept, AVG(Sage)
FROM Student GROUP BY Sdept;
修改数据
修改操作又称为更新操作,可对表中的字段值进行修改。其语句的一般格式如下:
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]...
[WHERE <条件>];
其功能是修改指定表中满足WHERE子句条件的元组。其中SET子句用于指定修改方法,即用的值取代相应的属性列值。如果省略WHERE子句,则表示要修改表中的所有元组。
一、改某一个元组的值
:
UPDATE Student
SET Sage=22
WHERE Sno='95001';
二、修改多个元组的值
例6:将表STUDENT中所有学生的年龄增加 1岁,语句如下:
UPDATE Student
SET Sage=Sage+1;
三、带子查询的修改语句
查询也可以嵌套在UPDATE语句中,用以构造执行修改操作的条件。
例 7. 将计算机科学系全体学生的成绩置零
UPDATE SC
SET Grade=0
WHERE 'CS'=
(SELETE Sdept
FROM Student
WHERE =);
第四章 第四讲 数据库标准语言(2) 来自淘豆网m.daumloan.com转载请标明出处.