文档详情

数据库概论第三章SQL.ppt

发布:2025-04-06约1.8万字共10页下载文档
文本预览下载声明

相关子查询*例41找出每个学生超过他选修课程平均成绩的课程号.SELECTSNO,CNOFROMSCXWHEREGRADE=(SELECTFROMSCYWHEREY.SNO=X.SNO)例求比刘晨年龄大的学生信息SELECT*FROMSWHERESAGE=(SELECTSAGEFROMSWHERSNAME=‘刘晨’)例44:求选修了1号课程学生姓名。01020304selectsnamefromSwhereexists(select*fromSCwheresno=S.sno05Andcno=‘1’);例46:求选修了全部课程的学生姓名。selectsnamefromSwherenotexists(select*fromCwherenotexists(select*fromSCwhereSno=S.SnoAndCno=C.Cno));数据操纵命令将导致数据库中数据的改变。SQL语言的数据操纵功能包括三部分:INSERT向表中插入数据UPDATE修改表中已存在行中的数据DELETE删除表中的数据SQL数据更新(操纵)---DML1.插入数据要求表必须是已存在的。①单行插入一般格式:INSERTINTO表名[(属性列1[,属性列2]…)]

VALUES(值表达式1[,值表达式2]…);?insertintosvalues(96001,李刚,CS,NULL,男,20)注意:在表定义时说明了NOTNULL的属性列不能取空值,否则会出错。字符型和日期型数据在插入时要加单引号。对于在INSERT语句中未出现的列,那么这些列则为NULL;也可以显式地在VALUES子句中用NULL来代表空值进行插入数据。insertintos(sno)values(96001)子查询INSERTINTO表名1[(属性列1[,属性列2]…)]

SELECT[列表达式1[,列表达式2]…]

FROM表名2

WHERE条件表达式;一般格式:②多行插入多行插入也称为表间拷贝,即从一个表中抽取若干行数据插入到另一个表中。例50:把学生表S中在计算机系(‘CS’)中的学生插入到表S1中。CreatetableS1(snochar(10),snamechar(10),sageint,ssexchar(2));InsertintoS1Selectsno,sname,sage,ssexfromSWheresdept=‘CS’;0102③利用查询实现表的定义与数据插入CREATETABLE表名

[(属性列1[,属性列2]…)]

[AS子查询];产生一个表,但这个表的列是从子查询的结果中全部复制或部分复制,且子查询结果作为表的行插入到表中。一般格式:例:求每一个学生的平均成绩,把结果存入表S_GR中。CreatetableS_GR(Snochar(8),Avg_gradeint)AsSelectsno,AVG(grade)formScGroupbysno;01可以修改表中某些指定列的数据。2.修改数据02UPDATE表名[别名]

SET列名=表达式[,列名=表达式]…

[WHERE条件表达式];其中:表达式={表达式|常量|列名}一般格式:例:把所有学生的年龄改为22。UpdateSsetsage=22;例:把所有学生的年龄加上2。UpdateSsetsage=sage+2;例:把学号为“0401”学生的年龄改为22。UpdateSsetsage22wheresno=‘0401’;例:将计算机科学系所有学生的成绩置零。UpdateSCsetGrade=0Where‘CS’=(selectsdeptfromSwhereS.sno=SC.sno);AB如果不选WHERE子句,则表中所有的行全被更新;如果选择了WHERE子句,则使WHERE中条件表达式为真的行被更新;注意:删除表中某些行的数据。3.删除数据DELETEFROM表名

[WHERE条件表达式];其中:表达式={表达式|常量|列名};一般格式:删除表中的全部记录后,该表的定义仍在数据字典中。注意:例

显示全部
相似文档