数据库查询 实验报告_第1页
数据库查询 实验报告_第2页
数据库查询 实验报告_第3页
数据库查询 实验报告_第4页
数据库查询 实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实 验 报 告课程名称: 数据库系统概论 学 院: 工程学院 专 业: 年 级: 班 级: 姓 名: 学 号: 指导教师: 2015 年 12 月 10 日教务处 制实验名称: 数据库查询实验二时间:2015-12-10地点:三教205机房班组: 教 师 评 语成绩教师签名实验报告1  实验目的    1  熟悉数据库的交互式SQL工具;    2  熟悉通过SQL对数据库视图进行操作;    3  掌握通过SQL插入、更新、删除数据等操作。2  实验工具

2、KingbaseES    利用KingbaseES及其交互式查询工具ISQLW来熟悉SQL。3  实验内容和要求1.    在建立3.2节学生-课程数据库的基础上,完成课本例3.69-97的各例题;2.  根据以下要求认真填写实验报告,记录所有的实验用例。4 实验方法及步骤例3.69将一个新学生元组(学号:201215128,姓名:陈东,性别:男,年龄:18,所在系:IS)插入到student表中。INSERT INTO "S-C"."STUDENT" (&quo

3、t;SNO","SNAME","SSEX","SDEPT","SAGE" ) VALUES ('201215128','陈冬','男','IS',18 );select* from "S-C"."STUDENT"注意:在INTO子句中指出了表名student,并指出了新增加的元组在哪些属性上要赋值,属性的顺序可以与CREATE TABLE中的顺序不一样。例3.70将学生张成民的信息插入到student表

4、中。INSERT INTO "S-C"."STUDENT" VALUES ('201215126','张成民','男','18','CS' );select* from "S-C"."STUDENT"注意:值与属性要一一对应。例3.71插入一条选课记录('201215128','1')INSERT INTO "S-C".sc(sno,cno) VALUES ('20121512

5、8','1');SELECT*from "S-C".sc;注意:在新插入的记录中GRADE列自动地赋空值。或者:INSERT INTO "S-C".sc VALUES ('201215128','1',null);SELECT*from "S-C".sc;注意:若直接在SC中直接插入选课记录,由于没有指出SC的属性名,在GRADE列上要明确给出空值NULL。例3.72对每一个系,求学生的平均年龄,并把结果存入数据库中。创建新表CREATE TABLE dept_age( sdep

6、t CHAR (15), avg_age smallint);把系名和平均年龄存入新表insertinto dept_age(Sdept,avg_age)select sdept,avg(sage)from "S-C".studentgroup by sdept;例3.73将学生200215121的年龄改为22岁。UPDATE "S-C"."STUDENT"SET Sage=22WHERE sno=200215121;select*from "S-C".student;例3.74将所有学生的年龄增加1岁。UPDAT

7、E "S-C"."STUDENT"SET Sage=sage+1;select*from "S-C".student;例3.75将计算机科学系全体学生的成绩置零。UPDATE "S-C"."SC"SET Grade=0where sno in(select snofrom "S-C".studentwhere sdept='cs');SELECT* FROM "S-C".SC;例3.76删除学号为201215128的学生记录。DELETE

8、from "S-C".studentWHERE sno='201215128'select*from "S-C".student;例3.77删除所有学生选课记录DELETE FROM "S-C".SC;SELECT* FROM "S-C".SC;注意:这条DELETE语句将使SC成为空表,它删除了SC的所有元组。例3.78删除计算机科学系所有学生的选课记录SELECT* FROM "S-C".SC;DELETE from "S-C".scWHERE sno i

9、n(select sno from "S-C".studentwhere sdept='cs');注意:由于SC表全是CS系的,故结果为空表。例3.79 向SC表中插入一个元组INSERT INTO "S-C".SC(SNO,CNO,GRADE)VALUES('201215128','1',NULL); /*在插入该学生还没有考试成绩,取空值*/或者:INSERT INTO "S-C".SC(SNO,CNO)VALUES('201215126','1');

10、 /*在插入语句中没有赋值的属性,其值为空值*/SELECT* FROM "S-C"."SC"例3.80 将student表中学生号201215123的学生所属的系改为空值UPDATE "S-C".STUDENTSET SDEPT=NULLWHERE SNO='201215123'SELECT* FROM "S-C"."STUDENT"注意:另外,外连接也会产生空值,空值的关系运算也会产生空值。例3.81 从student表中查找出漏填了数据的学生信息SELECT*FROM &q

11、uot;S-C".STUDENTWHERE SNAME IS NULL OR SSEX IS NULL OR SDEPT IS NULL;SELECT* FROM "S-C"."STUDENT"例3.82 找出选修1号课程的不及格的学生SELECT SNOFROM "S-C".SCWHERE GRADE<60 AND CNO='1'注意:选出的学生是那些参加了考试而不及格的学生,不包括缺考的学生。例3.83 找出选修1号课程的不及格的学生以及缺考的学生SELECT SNO FROM "S-C&

12、quot;.SCWHERE GRADE<60 AND CNO='1'UNIONSELECT SNO FROM "S-C".SCWHERE GRADE IS NULL AND CNO='1'SELECT* FROM "S-C"."STUDENT"例3.84 建立信息系学生的视图CREATE VIEW IS_STUDENTASSELECT SNO,SNAME,SAGEFROM "S-C".STUDENTWHERE SDEPT='IS'SELECT"SNO&

13、quot;,"SNAME","SAGE" FROM "S-C"."IS_STUDENT"例3.85 建立信息系选修了1号课程的学生视图,并要求进行修改和插入操作时仍保证该视图只有信息系的学生。CREATE VIEW IS_STUDENTASSELECT SNO,SNAME,SAGEFROM "S-C".STUDENTWHERE SDEPT='IS' WITH CHECK OPTION; /*如果不加这个语句,可以把IS修改成其他的系,比如CS,加上这个语句之后会发现改不了,只能是

14、IS*/SELECT "SNO","SNAME","SAGE" FROM "S-C"."IS_STUDENT"例3.86 建立信息系选修了1号课程的学生视图(包括学号、姓名、成绩)CREATE VIEW IS_S1(SNO,SNAME,GRADE)ASSELECT STUDENT.SNO,SNAME,GRADEFROM "S-C".STUDENT,"S-C".SCWHERE SDEPT='IS' ANDSTUDENT.SNO=SC.SNO

15、AND SC.CNO='1'SELECT "SNO","SNAME","GRADE" FROM "S-C"."IS_S1"例3.87 建立信息系选修了1号课程且成绩在90分以上的学生视图CREATE VIEW IS_S2ASSELECT SNO,SNAME,GRADEFROM "S-C".IS_S1WHERE GRADE>=90;SELECT "SNO","SNAME","SAGE" FROM

16、"S-C"."IS_STUDENT"注意:这里的视图IS_S2就是建立在IS_S1之上的。例3.88 定义一个反应学生出生年份的视图CREATE VIEW BT_S(SNO,SNAME,SBIRTH)ASSELECT SNO,SNAME,2014-SAGEFROM "S-C".STUDENT;SELECT "SNO","SNAME","SBIRTH" FROM "S-C"."BT_S"注意:这里的视图BT_S是一个带表达式的视图。视图中

17、的出生年份值是通过计算得到的。还可以用带有聚集函数和GROUP BY子句的查询来定义视图,这种视图称为分组视图。例3.89 将学生的学号及平均成绩定义为一个视图CREATE VIEW S_G(SNO,GAVG)ASSELECT SNO,AVG(GRADE)FROM "S-C".SCGROUP BY SNO;SELECT "SNO","GAVG" FROM "S-C"."S_G"注意:由于AS子句中的SELECT语句的目标列平均成绩是通过作用聚集函数得到的,所以CREATE VIEW中必须明确定义

18、组成S_G视图的各个属性列名。S_G是一个分组视图。例3.90 将student表中所有女生记录定义为一个视图CREATE VIEW F_STUDENT(F_SNO,NAME,SEX,AGE,DEPT)ASSELECT* FROM "S-C".STUDENTWHERE SSEX='女'SELECT "F_SNO","NAME","SEX","AGE","DEPT" FROM "S-C"."F_STUDENT"注意:这里视

19、图F_STUDENT是由子查询“SELECT*”建立的。F_STUDENT视图的属性列要与STUDENT表的属性一一对应。否则会出错。例3.91 删除视图BT_S和视图IS_S1DROP VIEW BT_S; /*成功执行*/DROP VIEW IS_S1; /*拒绝执行*/执行此语句时由于IS_S1视图上还导出了IS_S2视图,所以该语句被拒绝执行。如果确定要删除,则使用级联删除语句。DROP VIEW IS_S1 CASCADE; /*删除了视图IS_S1和由它导出的所有视图*/例3.92 在信息系学生视图中找出年龄小于20岁的学生SELECT SNO,SAGE FROM "S-

20、C".IS_STUDENTWHERE SAGE<20;注意:视图定义后,用户可以像对基本表一样对视图进行查询了。例3.93 查询选修了1号课程的信息系学生SELECT IS_STUDENT.SNO,SNAMEFROM "S-C".IS_STUDENT,"S-C".SCWHERE IS_STUDENT.SNO=SC.SNO AND SC.CNO='1'例3.94 在S_G视图中查询平均成绩在90分以上的学生的学号和平均成绩SELECT SNO,AVG(GRADE)FROM "S-C".SCGROUP BY

21、 SNOHAVING AVG(GRADE)>=90;或者:SELECT*FROM(SELECT SNO,AVG(GRADE) /*子查询生成一个派生表S_G*/FROM"S-C".SCGROUP BY SNO) AS S_G(SNO,GAVG)HAVING GRADE>=90;注意:WHERE子句中不能用聚集函数作为条件表达式。视图一旦定义,其定义将永久保存在数据字典中,之后的所有查询都可以直接引用该视图。而派生表株数在语句执行时临时定义,语句执行后该定义将被删除。例3.95 将信息系学生视图IS_STUDENT中学号为“200215125”的学生姓名改为“刘辰

22、”UPDATE IS_STUDENTSET SNAME='刘辰'WHERE SNO='200215125'SELECT "SNO","SNAME","SAGE" FROM "S-C"."IS_STUDENT"例3.96 将信息系学生视图IS_STUDENT中插入一个新的学生记录,其中学号为“201215129”,姓名为 “赵新”,年龄为20岁INSERTINTO "S-C".STUDENT(SNO,SNAME,SAGE,SDEPT)VALUES

23、('201215129','赵新',20,'IS');SELECT "SNO","SNAME","SAGE" FROM "S-C"."IS_STUDENT"例3.97 删除信息系学生视图IS_STUDENT中学号为“201215129”的记录。 DELETEFROM "S-C".STUDENTWHERE SNO='201215129'AND SDEPT='IS'SELECT "SNO","SNAME","SAGE" FROM "S-C"."IS_STU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论