数据库实验3答案..
数据库原理与应用实验报告三及答案.doc
数据库原理与应用实验报告三及答案
广东金融学院实验报告课程名称:数据库原理与应用实验编号及实验名称实验三数据库高级应用实验系别计科系姓名学号班级实验地点新电1101实验日期05月14日实验时数8指导教师同组其他成员无成绩一、实验目的及要求1、掌握SQLServer存储过程的定义和使用。
2、掌握SQLServer触发器的定义和使用。
二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)1、计算机操作系统要求在windowsXP以上。
2、并要求SQLServer软件月日第3页共2页。
大学mysql实验报告(三)附答案
实验报告(三)专业:班级:学号:姓名:实验名称:数据库的简单查询实验报告内容:1、写出第182页实验3中的SQL语句(第5)7)11)13)16)18)19)20)21)题)。
5)查询全体学生的选课情况,其成绩列值都加5,并为各列设置中文的别名SELECT Sno '学号',Cno '课程号',Grade+5 '成绩' FROM Enrollment7)显示所有选课学生的学号,并去掉重复行。
SELECT DISTINCT Sno '学号' FROM Enrollment11)查询学生年龄不在20~30之间的学生学号、姓名、所在系。
SELECT Sno ,Sname,Sdept FROM Students WHERE Sage NOT BETWEEN 20 AND 30等价于:SELECT Sno ,Sname,Sdept FROM Students WHERE Sage<20 OR Sage>3013)查询既不是数学系、计算机系,也不是艺术系学生的学号、姓名。
SELECT Sno,Sname FROM StudentsWHERE Sdept NOT IN ('Math', 'Computer', 'Art')等价于:SELECT Sno,Sname FROM StudentsWHERE Sdept! ='Math' AND Sdept! = 'Computer' AND Sdept! = 'Art'16)查找姓名以S、D或J开头的所有学生的学号、姓名。
SELECT Sno,Sname FROM Students WHERE Sname LIKE '[SDJ]%'18)查询无考试成绩的学生的学号和相应的课程号。
SELECT Sno, Cno FROM Enrollment WHERE Grade IS NULL不等价于:SELECT Sno, Cno FROM Enrollment WHERE Grade =019)查询有考试成绩(即成绩不为空值)的学生的学号、课程号。
sql 数据库 实验3答案
实验三:创建及管理数据表1、创建表依据数据表的结构创建相对应的数据表,表结构如下所示; 学生信息表(student )CREATE (sno char (9) PRIMARY KEY , sname char (8) NOT NULL, ssex char(2), sage int ,sdept varchar (20) )课程信息表(course )CREATE (cno char (4) PRIMARY KEY , cname varchar (20) NOT NULL, cpno char (4), ccredit int )选课信息表(sc )CREATE TABLE sc(sno char(9),cno char(4),grade int,Constraint PK_sno PRIMARY KEY(sno,cno))2.修改表结构1)在表student中增加新字段“班级名称(sclass)”字符类型为varchar(10);use studentALTER TABLE studentAdd sclass nvarchar(10)2)在表student中删除字段“班级名称(sclass)”;use studentALTER TABLE studentDrop column sclass3)修改表student中字段名为“sname”的字段长度由原来的6改为8;use studentALTER TABLE studentALTER COLUMN sname char(8)4)修改表student中ssex字段默认值为‘男’;use studentALTER TABLE studentadd default'男'for ssex5)修改表course中cname字段为强制唯一性字段;use studentALTER TABLE courseAdd constraint ix_course unique (cname)6)修改表sc中grade字段的值域为0-100;use studentALTER TABLE scAdd constraint CK_grade CHECK(grade between 0 and 100)7)删除数据表course的唯一性约束;use studentALTER TABLE coursedrop ix_course。
实验训练3答案 数据删除操作
实验训练3答案数据删除操作实验训练3答案:数据删除操作
本文档将为您提供实验训练3中数据删除操作的答案。
问题1:如何删除数据库中的数据表?
要删除数据库中的数据表,可以使用以下SQL语句:
DROP TABLE 表名;
将上述SQL语句中的“表名”替换为您要删除的具体数据表的名称即可。
问题2:如何删除数据库中的特定数据行?
要删除数据库中的特定数据行,可以使用以下SQL语句:
DELETE FROM 表名 WHERE 条件;
将上述SQL语句中的“表名”替换为要删除数据行的数据表的名称,将“条件”替换为指定的删除条件。
问题3:如何删除数据库中的特定数据列?
要删除数据库中的特定数据列,可以使用以下SQL语句:
ALTER TABLE 表名 DROP 列名;
将上述SQL语句中的“表名”替换为要删除数据列的数据表的名称,将“列名”替换为要删除的具体列的名称。
问题4:如何清空数据库中的全部数据?
要清空数据库中的全部数据,可以使用以下SQL语句:
DELETE FROM 表名;
将上述SQL语句中的“表名”替换为要清空数据的具体数据表的名称。
以上是关于数据库中数据删除操作的答案。
如有任何进一步的疑问,请随时向我提问。
数据库实验答案
实验3 使用T-SQL语言完成单表查询一、实验目的掌握使用T—SQL语言完成单表查询掌握常用谓词的用法掌握where子句的用法掌握order by 子句的用法掌握group by 子句和having短语的用法二、实验环境Microsoft SQL Server 2000。
三、实验内容和要求1.查询全体学生的详细信息。
2.查询所有课程的详细信息.3.查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。
4.查询已被学生选修了的课程的编号。
5.查询系别编号为“d002”的学生的姓名和性别。
6.查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。
7.查询系别编号为d001、d002和d003的学生的学号和姓名。
8.查询课程名为“C_”开头的课程名和学分.9.某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。
10.查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。
11.查询学校所开设的总的课程数.12.计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。
13.查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分"。
14.求各个系别的编号以及各系的人数。
15.查询选课人数大于等于2人的课程编号以及选课的人数。
16.查询学生200215122选修课程的总成绩对应的列名为“总成绩”,并显示出学号。
17.查询有2门以上课程是80分以上的学生的学号及课程数。
18.查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列.实验1 使用T-SQL语言建库、建表实验2 向表中增、删、改数据四、实验目的掌握使用T-SQL建库、建表、修改表;掌握使用T-SQL对表中数据进行插入、删除和修改.五、实验环境Microsoft SQL Server 2000.六、实验内容和要求19.建立数据库STDB20.在数据库STDB中建立四个表:Student表Department表Course表21.分别向以上四个表中增加数据。
数据库原理实验答案
3)向SC表中插入数据
Insert Into SC(Sno,Cno, Grade) Values(200215121,1,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,2,85);
Insert Into SC(Sno,Cno, Grade) Values(200215121,3,88);
Insert Into SC(Sno,Cno, Grade) Values(200215122,2,90);
Insert Into SC(Sno,Cno, Grade) Values(200215122,3,80);
Insert Into SC(Sno,Cno, Grade) Values(200215121,4,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,5,85);
Insert Into SC(Sno,Cno, Grade) Values(200215121,6,88);
Insert Into SC(Sno,Cno, Grade) Values(200215123,2,90);
select sno,grade from sc where cno='3' order by grade desc;
8)查询各个课程号与相应的选课人数。
select cno, count(sno) from sc group by cno;
2. 连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
数据库原理与应用实验报告三答案
课程名称:数据库原理与应用
实验编号
及实验名称
实验三数据库高级应用实验
系 别
姓 名
学 号
班 级
实验地点
实验日期
年月日
实验时数
8
指导教师
同组其他成员
无
成 绩
一、实验目的及要求
1、掌握SQL Server存储过程的定义和使用。
2、掌握SQL Server触发器的定义和使用。
二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)
4、思考题
1)存储过程和触发器的异同点?
四、实验步骤及结果(包含简要的实验步骤流程、结论陈述)
五、实验总结(包括心得体会、问题回答及实验改进意见)
六、教师评语
1、完成所有的实验内容,实验步骤和实验结果基本正确。
2、至少完成主要的实验内容,实验步骤和实验结果基本正确。
3、仅完成部分的实验内容,实验步骤和结果基本正确。
1、计算机操作系统要求在windows XP以上。
2、并要求SQL Server软件2000以后版本。
三、实验内容及要求
利用实验指导书中的关系数据库完成下面题目:
1、说明下面代码段的功能
SELECT tname as‘姓名’,tSex as‘性别’,
case trank
when‘教授’then‘高级职称’
declare@avgMarkfloat
declare@creditsfloat
EXECshow_course_Mark'081710106',@sccountoutput,@avgMarkoutput,@creditsoutput
select'081710106'as'学号',@sccountas'选课门数',@avgMarkas'平均分',@creditsas'所选学分'
数据库实验3答案
实验三:交互式SQL语句的使用1、实验目的(1)掌握数据库对象的操作过程,包括创建、修改、删除(2)熟悉表的各种操作,包括插入、修改、删除、查询(3)熟练掌握常用SQL语句的基本语法2、实验平台使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。
3实验容及要求选择如下一个应用背景之一:●学生选课系统●习题3、4、和5中使用的数据库●其它你熟悉的应用(1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。
(2)要求认真进行实验,记录各实验用例及执行结果。
(3)深入了解各个操作的功能。
实验要求包括如下方面的容:3.1数据定义1.基本表的创建、修改及删除2.索引的创建3.视图的创建3.2数据操作完成各类更新操作包括:1.插入数据2.修改数据3. 删除数据3.3数据查询操作完成各类查询操作1.单表查询2.分组统计3. 连接查询4. 嵌套查询5. 集合查询3.4数据操作1.创建视图2.视图查询参考示例:建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。
一、数据定义创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表:表1. Student表结构表2. Course表结构表3. SC表结构1.创建、修改及删除基本表(1)创建Student表CREATETABLE Student(Sno CHAR(8)PRIMARYKEY,Sname CHAR(8),Ssex CHAR(2)NOTNULL,Sage INT,Sdept CHAR(20));(2)创建Course表CREATETABLE Course(o CHAR(4)PRIMARYKEY,ame CHAR(40)NOTNULL,Cpno CHAR(4),Ccredit SMALLINT,);(3)创建SC表CREATETABLE SC(Sno CHAR(8)FOREIGNKEY (Sno)REFERENCES Student(Sno), o CHAR(4),Grade SMALLINT,);(4)创建员工表EmployeeCREATETABLE Employee(编号CHAR(8)PRIMARYKEY,VARCHAR(8)notnull部门CHR(40),工资numeric(8,2),生日datetime,职称char(20),);指出该语句中的错误并改正后执行。
数据库认证实验三答案
--1,在student数据表sname字段上建立索引,索引名称为index_snamecreateindex index_sname on student(sname);--2,在课程表course为cname字段建立索引,索引名称为index_cnamecreateindex index_cname on course(cname);--3,删除索引index_sname,index_cnamedropindex index_sname on student;dropindex index_cname on course;--4,在student数据表中创建查看视图view_sno_sname,包含字段(sno,sname),并执行视图查看数据,并通过视图添加数据,完成--创建视图createview view_sno_snameasselect sno,snamefrom student;--添加数据到视图insertinto view_sno_snamevalues('1','张三');--查看视图里面的数据select*from view_sno_sname;--5,使用触发器完成,当删除student表中某个学生记录时,将该条被删除的学生记录,添加到studentinfo表中。
--创建一张studentinfo表createtable studentinfo(sno char(6)primarykey,sname nvarchar(30),ssex char(2),sage Tinyint,sdept nvarchar(20));createtrigger tri_student_deleteon studentfordeleteasdeclare@sno char(6),@sname nvarchar(30),@ssex char(2),@sage Tinyint,@sdept nvarchar(20)select@sno=sno,@sname=sname,@ssex=ssex,@sage=sage,@sdept=sdept from deletedinsertinto studentinfo(sno,sname,ssex,sage,sdept)values(@sno,@sname,@ssex,@sage,@sdept); --显示触发器exec sp_helptext'tri_student_delete';deletefrom student wheresno=1;select*from student;-- 在student表删除一条记录的同时,studentinfo表中同时添加了一条数据select*from studentinfo;--6,使用触发器完成,student表和sc表的级联删除操作--当student表中删除一条记录的时候,对应的sc中的记录也删除,即实现了级联删除的操作createtrigger stu_sc_deleteon studentfordeleteasdeclare@sno char(6)select@sno=sno from deleteddeletefrom sc where sno=@sno;select*from student;select*from sc;--删除student表中的一条数据deletefrom student where sno='2';select*from student;select*from sc;。
实验训练3答案-数据增删改操作
实验训练3 数据增删改操作请到电脑端查看实验目的:基于实验1创建的汽车用品网上商城数据库Shopping,练习Insert、Delete、TRUNCATE TABLE、Update语句的操作方法,理解单记录插入与批量插入、DELETE与TRUNCATE TABLE语句、单表修改与多表修改的区别。
实验内容:【实验3-1】插入数据(1)使用单记录插入Insert语句分别完成汽车配件表Autoparts、商品类别表category、用户表Client 、用户类别表Clientkind 、购物车表shoppingcart、订单表Order、订单明细表order_has_Autoparts、评论Comment的数据插入,数据值自定;并通过select语句检查插入前后的记录情况。
(2)(2)使用带Select的Insert语句完成汽车配件表Autoparts中数据的批量追加;并通过select语句检查插入前后的记录情况。
INSERT INTO Autoparts(*)SELECT*FROM t1【实验3-2】删除数据(1)使用Delete语句分别完成购物车表shoppingcart、订单表Order、订单明细表Order_has_Autoparts、评论Comment的数据删除,删除条件自定;并通过select语句检查删除前后的记录情况。
(2)使用TRUNCATE TABLE语句分别完成购物车表shoppingcart、评论Comment的数据删除。
【实验3-3】修改数据使用Update分别完成汽车配件表Autoparts、商品类别表category、用户表Client、用户类别表Clientkind、购物车表shoppingcart、订单表Order、订单明细表Order_has_Autoparts、评论Comment的数据修改,修改后数据值自定,修改条件自定;并通过select语句检查修改前后的记录情况。
数据库实验三作业及答案
实验3 SQL Server 数据表的管理一、实验目的1.学会使用企业管理器和Transact-SQL语句CREATE TABLE和ALTER TABLE创建和修改表。
2.学会在企业管理器中对表进行插入、修改和删除数据操作。
3.学会使用Transact-SQL语句对表进行插入、修改和删除数据操作。
4.了解SQL Server的常用数据类型。
二、实验准备1.了解在企业管理器中实现表数据的操作,如插入、修改和删除等。
2.掌握用Transact-SQL语句对表数据进行插入(INSERT)、修改(UPDATE)和删除(DELETE和TRANCATE TABLE)操作。
三、实验内容及步骤1.启动企业管理器,展开studentsdb数据库文件夹。
2.在studentsdb数据库中包含有数据表student_info、curriculum、grade,这些表的数据结构如图1-2、图1-3和图1-4所示。
图1-2 学生基本情况表student_info图1-3 课程信息表curriculum图1-4 学生成绩表grade3.在企业管理器中创建student_info、curriculum表。
4.在企业管理器中,将student_info表的学号列设置为主键,非空。
5.使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建grade表。
CREATETABLE grade(学号varchar(4),课程编号varchar(4),分数decimal(5,0))6.student_info、curriculum、grade表中的数据如图1-5、图1-6和图1-7所示。
图1-5 student_info的数据图1-6 curriculum的数据图1-7 grade的数据7.在企业管理器中为student_info、curriculum、grade表添加数据。
8.使用Transact_SQL语句INSERT INTO...VALUES向studentsdb数据库的grade表插入以下数据:学号课程编号分数0004 0001 80答; CREATE TABLE grade(学号 char(4),课程编号 char(4),分数 decimal)INSERT INTO grade VALUES('0004','0001','80')9.使用Transact_SQL语句ALTER TABLE修改curriculum表的“课程编号”列,使之为非空。
数据库实验三-实验九含参考答案
select max(grade),min(grade),avg(grade) from sc where cno='001' 例 3-7:(分组查询) 求各门课程的平均成绩与总成绩。
select cno,avg(grade),sum(grade) from sc group by cno 例 3-8:(分组查询) 输入以下查询语句并执行,观察出现的其结果并分析其原因。 SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT WHERE SDEPT=’CS’ GROUP BY SDEPT;
选择列表中的列'STUDENT.Sname' 无效,因为该列没有包含在聚合函数或GROUP BY 子句中。
例 3-9:(分组查询) 分析以下语句为什么会出现错误。并给出正确的查询语句。 SELECT SAGE FROM STUDENT GROUP BY SNO;
选择列表中的列'STUDENT.Sage' 无效,因为该列没有包含在聚合函数或GROUP BY 子句中。
实验五:数据查询语言
[ 实验目的 ]
体会 SQL 语言数据查询功能的丰富和复杂。
[ 实验内容 ]
3. SQL 数据查询语句: 例 3-1:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。 select sno,cno from sc where grade is null 例 3-2:(控制行的显示顺序) 求选修 003 课程或 004 课程的学生的学号、课程号和分数。 select sno,cno,grade from sc where cno in('003','004') order by grade 例 3-3:(组函数) 求学生总人数。
实验三四(标准答案)
实验三四(答案)[1]————————————————————————————————作者:————————————————————————————————日期:2实验三:数据库的嵌套查询实验实验目的:加深对嵌套查询语句的理解。
实验内容:使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。
实验步骤:一. 使用带IN谓词的子查询1. 查询与’刘晨’在同一个系学习的学生的信息:select * from student where sdept in(select sdept from student where sname='刘晨')比较: select * from student where sdept =(select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept =(select sdept from student where sname='刘晨') andsname<>'刘晨V比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨'2. 查询选修了课程名为’信息系统’ 的学生的学号和姓名:SQL Server中: select sno, sname from student where sno in(select sno from sc where cno in(select cno from course where cname='信息系统'))VFP中: select sno, sname from student where sno in(select sno from sc, course where o=oand cname='信息系统')3. 查询选修了课程’1’和课程’2’的学生的学号:select sno from student where sno in (selectsnofrom sc where cno='1') and sno in (select sno from sc where cno='2')比较: 查询选修了课程’1’或课程’2’的学生的sno:select sno from sc where cno='1' or cno='2'比较连接查询:select A.sno from sc A, sc B where A.sno=B.sno and o='1' and o='2'二. 使用带比较运算的子查询4. 查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')三. 使用带Any, All谓词的子查询5. 查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <Any(select sage from student where sdept='IS')and sdept<>'IS'6. 查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <ALL(select sage from student where sdept='IS')and sdept<>'IS'7. 查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄: select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')四. 使用带Exists谓词的子查询和相关子查询8. 查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage and A.sno<>B.sno)9. 查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')10. 查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')11. 查询选修了全部课程的学生姓名:SQL Server中:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=o))11. 查询至少选修了学生95002选修的全部课程的学生的学号:SQL Server中:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=o))12. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where o=o )13*. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程SQL Server中:select sno,cno from student,course where not exists(select * from sc where cno=o and sno=student.sno)14*. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )思考:如何查询所有学生都选修了的课程的课程号cno?实验四:数据库的分组查询和统计查询实验目的:熟练掌握数据查询中的分组、统计、计算和集合的操作方法。
SQL数据库实验三_简单查询(1)解答
其他:
selectemployeeName,department,
case
whensex='M'then'男'
whensex='F'then'女
whereemployeeNamelike'张%'
10.查询姓张且全名为三个汉字的职工姓名。
SQL语句:
SELECTemployeeName
9.查询所有姓张的职工姓名、所属部门和性别,且性别显示为“男”或“女”。
SQL语句:
SELECTemployeeName,department,sex=
casesex
WHEN'M'THEN'男'
WHEN'F'THEN'女'
ELSE'不详'
END
FROMEmployee
WHEREemployeeNameLIKE'张%'
whensalary<2000then'低收入者'
whensalary>=2000andsalary<4000then'中等收入者'
whensalary>=4000then'高收入者'
end
fromEmployee
WHEREyear(birthday)=1973ANDheadShip='职员'
查询结果:
其他:
SELECT*
FROMEmployee
WHEREyear(birthday)='1973'ANDheadShip='职员'
《数据库系统》实验---实验三答案
实验三复制表CREATE TABLE test3_01 AS(SELECT * FROM pub.student_31)增加五个列ALTER TABLE test3_01 ADD (总成绩int,平均成绩int,总学分int,排名int,院系编号varchar(2))(1)使用update语句,利用pub.student_course、pub.course,统计“总成绩”;UPDATE test3_01SET 总成绩=(SELECT SUM(成绩)FROM pub.student_coursewhere test3_01.学号=pub.student_course.学号GROUP BY 学号)(2)使用update语句,利用pub.student_course、pub.course,统计“平均成绩”;UPDATE test3_01SET 平均成绩=(SELECT avg(成绩)FROM pub.student_coursewhere test3_01.学号=pub.student_course.学号GROUP BY 学号)(3)使用update语句,利用pub.student_course、pub.course,统计“总学分”create table a as SELECT 学号,sum(学分) 总学分FROM pub.student_course,pub.coursewhere pub.course.课程号=pub.student_course.课程号and pub.student_course.成绩>=60GROUP BY 学号UPDATE test3_01SET 总学分=(select 总学分from awhere test3_01.学号=a.学号)drop table a(4)将总成绩的名次放入“排名”列中,总成绩相同的学生的排名也相同(即一个名次可以多个人),没有成绩的排名置空值。
数据库答案第三章习题参考答案
6. 找出使用上海产的零件的工程项目名。 Select jname from j,spj,s where j.jno=spj.jno and spj.sno=s.sno and s.city=‘上海’; 或: Select jname from j where jno in (Select jno from spj, s where spj.sno=s.sno and s.city=‘上海’);
4.求没有使用天津供应商生产的红色零件的工程号JNO。 Select jno From j Where not exists (Select * From spj, s, p where spj.jno=j.jno and spj.sno=s.sno and spj.pno=p.pno and s.city=‘天津’ and p.color=‘红’ );
4.找出工程项目J2 所使用的各种零件的名称及其数量。 Select p.pname, spj.qty from p, spj where p.pno=spj.pno and spj.jno=‘J2’; 5.找出上海厂商供应的所有零件的代码。 Select distinct pno from spj where sno in (Select sno from s where city=‘上海’);
5.求至少用了供应商S1所供应的全部零件的工程号JNO。 即查找:不存在这样的零件y,供应商S1供应了y,而工程x为选用y。 Select distinct jno From spj z Where not exists (select * from spj x where sno=‘S1’ and not exists (select * from spj y where y.pno=x.pno and y.jno=z.jno));
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三:交互式SQL语句的使用1、实验目的(1)掌握数据库对象的操作过程,包括创建、修改、删除(2)熟悉表的各种操作,包括插入、修改、删除、查询(3)熟练掌握常用SQL语句的基本语法2、实验平台使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。
3 实验内容及要求选择如下一个应用背景之一:●学生选课系统●习题3、4、和5中使用的数据库●其它你熟悉的应用(1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。
(2)要求认真进行实验,记录各实验用例及执行结果。
(3)深入了解各个操作的功能。
实验要求包括如下方面的内容:3.1 数据定义1.基本表的创建、修改及删除2.索引的创建3.视图的创建3.2 数据操作完成各类更新操作包括:1.插入数据2.修改数据3. 删除数据3.3 数据查询操作完成各类查询操作1.单表查询2.分组统计3. 连接查询4. 嵌套查询5. 集合查询3.4 数据操作1.创建视图2.视图查询参考示例:建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。
一、数据定义创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表:表1. Student表结构表2. Course表结构表3. SC表结构1.创建、修改及删除基本表(1)创建Student表CREATE TABLE Student(Sno CHAR(8)PRIMARY KEY,Sname CHAR(8),Ssex CHAR(2)NOT NULL,Sage INT,Sdept CHAR(20));(2)创建Course表CREATE TABLE Course(Cno CHAR(4)PRIMARY KEY,Cname CHAR(40)NOT NULL,Cpno CHAR(4),Ccredit SMALLINT,);(3)创建SC表CREATE TABLE SC(Sno CHAR(8)FOREIGN KEY (Sno)REFERENCES Student(Sno),Cno CHAR(4),Grade SMALLINT,);(4)创建员工表EmployeeCREATE TABLE Employee(编号CHAR(8)PRIMARY KEY,姓名VARCHAR(8)not null部门CHR(40),工资numeric(8,2),生日datetime,职称char(20),);指出该语句中的错误并改正后执行。
(5)检查表是否创建成功SELECT*FROM StudentSELECT*FROM CourseSELECT*FROM SCSELECT*FROM Employee(6)修改表结构及约束●增加班级列ALTER TABLE Student ADD Sclass char(4)●修改年龄列ALTER TABLE Student ALTER COLUMN Sage smallint●增加约束ALTER TABLE Course ADD UNIQUE(Cname)(7)删除表DROP TABLE Employee2.创建索引(1)为Course表按课程名称创建索引CREATE INDEX iCname On Course(Cname)(2)为Student表按学生姓名创建唯一索引CREATE UNIQUE INDEX iSname ON Student(Sname) (3)为SC表按学号和课程号创建聚集索引CREATE CLUSTERED INDEX iSnoCno On SC(Sno,Cno desc) (4)为Course表按课程号创建唯一索引请自己完成该操作3.创建视图建立信息系学生的视图:CREATE VIEW IS_StudentASSELECT Sno,Sname,Sage FROM StudentWHERE Sdept='IS';3.2 数据操作1.插入数据将如下表格中的数据分别插入到数据库相应的表中:表4.学生基本信息表表5.课程信息表表6.学生选课信息表(1)插入到Student表INSERT INTO Student VALUES('20100001','李勇','男',20,'CS','1001')INSERT INTO Student VALUES('20100002','刘晨','女',19,'CS','1001')INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,Sclass)VALUES('20100021','王敏','女',18,'MA','1002') INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,sclass)VALUES('20100031','张立','男',19,'IS','1003') INSERT INTO Student(Sno,Sname,Ssex,sclass)VALUES('20100003','刘洋','女','1001')检查下列语句中的错误,并改正:INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept,sclass) VALUES('20100010',赵斌,'男','19','IS','1005') INSERT INTO Student VALUES('20100022','张明明',19,'男','CS','1002')(2)插入到Course表INSERT INTO Course(Cno,Cname,Cpno,Ccredit)VALUES('1','数据库系统原理','5',4)INSERT INTO Course(Cno,Cname,Cpno,Ccredit)VALUES('2','高等数学',null,2)INSERT INTO Course(Cno,Cname,Cpno,Ccredit)VALUES('3','管理信息系统','1',4)请写出插入其余行的插入语句,并插入数据。
(3)插入到SC表INSERT INTO SC VALUES('20100001','1',92)INSERT INTO SC VALUES('20100002','2',80)INSERT INTO SC(Sno,Cno)VALUES('20100003','1')INSERT INTO SC(Sno,Cno,Grade)VALUES('20100010','3',null)请写出插入其余行的插入语句,并运行。
(4)多行插入到表中创建存一个表,保存学生的学号、姓名和年龄:CREATE TABLE cs_Student(学号char(8),姓名char(8),年龄smallint);插入数据行:INSERT INTO cs_StudentSELECT Sno,Sname,SageFROM student Where Sdept='CS';(5)检查插入到表中的数据SELECT*FROM StudentSELECT*FROM CourseSELECT*FROM SC2.修改数据(1)将学生20100001的年龄改为22岁。
UPDATE student SET Sage= 22 WHERE Sno='20100001';(2)将所有学生的年龄增加一岁。
UPDATE Student SET Sage=Sage+1(3)填写赵斌同学的管理信息系统课程的成绩UPDATE SC SET Grade= 85WHERE Sno='20100010'AND Cno='3'(4)将计算机科学系全体学生的成绩加5分UPDATE sc SET Grade=Grade+ 5WHERE'CS'=(select Sdept from student where student.Sno=sc.Sno);(5)请自己完成如下操作●将刘晨同学的2号课程成绩修改为80●将“20100021”同学的学号修改为“20100025”(6)检查数据是否修改3. 删除数据(1)删除学号为201000022的学生记录DELETE FROM Student WHERE Sno='20100022'(2)删除学号20100001学生的1号课程选课记录将选课信息复制到一个临时表tmpSC中:SELECT*INTO tmpSC FROM SC在tmpSC中执行删除操作:DELETE FROM tmpSC WHERE Sno='20100001'and Cno='1'(3)删除临时表中20100002学生的全部选课记录请自己完成该操作。
(4)删除计算机科学系所有学生的选课记录DELETE FROM tmpSC WHERE'CS'=(select Sdept from student where student.Sno=tmpSC.Sno);(5)删除全部选课记录DELETE FROM tmpSC(6)检查数据是否删除3.3 数据查询操作完成如下查询操作:1.单表查询(1)按指定目标列查询●查询学生的详细记录:SELECT*FROM Student;●查询学生的学号、姓名和年龄SELECT Sno,Sname,Sage FROM Student;(2)目标列包含表达式的查询●查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。