数据库实验3答案
数据库实验内容-答案
实验内容:实验一:数据库的操作使用Management Studio和sql语句分别完成以下操作:1.创建一个名为“SM”的数据库,数据文件初始大小为3MB,最大为50MB,数据库自动增长,增长方式按10%;日志文件初始大小为2MB,数据大小不受限制,按1MB增长。
create database smon(name='smdata',filename='e:\smdata.mdf',size=3,maxsize=50,filegrowth=10%)log on(name='smlog',filename='e:\smlog.ldf',size=2,maxsize=unlimited,filegrowth=1)2.修改数据库“SM”,将数据文件名改成“sm_data”,初始大小改成5MBalter database smmodify file( name='smdata',newname='sm_data',size=5)3.分别查看数据库“SM”,该数据库中的文件和文件组。
exec sp_helpfile smexec sp_helpfilegroup sm4.删除数据库“SM”。
drop database sm实验二:创建表1. 在数据库SM中创建学生表student,课程表course,选课表scstudent(sid,sno,clno,sname,ssex,sage,sbir)说明:sid int identity(1,1) 序号sno 为主关系键,为字符类型学号clno 字符类型,班级号sname 字符类型,并不为空ssex 字符类型,check的值的范围为男女sbir 日期类型出生日期sage int;use smcreate table student( sid int identity(1,1),sno char(10) constraint pk_st primary key,clno char(10),sname varchar(20) not null,ssex char(2) constraint ck_ssex check(ssex in('男','女')),sbir datetime,sage int)course(cno,cname,ccredits,ctno,cpno,ctime)说明:cno 字符类型,主关系键cname 字符类型,唯一键ccredits 学分,精确数值型,精确长度为2,小数位为1ctno ,cpno 字符类型ctime 整型create table course(cno char(4) constraint pk_c primary key,cname varchar(20) constaint uk_cname unique,ccredit decimal(2,1),ctno char(2),cpno char(4),ctime tinyint)sc(sno,cno,score)说明:sno+cno为主键,并且sno是student的外部键,cno是course的外部键。
数据库原理与应用实验报告三及答案.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答案
实验三:交互式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(Cno CHAR(4)PRIMARYKEY,Cname CHAR(40)NOTNULL,Cpno CHAR(4),Ccredit SMALLINT,);(3)创建SC表CREATETABLE SC(Sno CHAR(8)FOREIGNKEY (Sno)REFERENCES Student(Sno), Cno CHAR(4),Grade SMALLINT,);(4)创建员工表EmployeeCREATETABLE Employee(编号CHAR(8)PRIMARYKEY,姓名VARCHAR(8)notnull部分CHR(40),工资numeric(8,2),生日datetime,职称char(20),);指出该语句中的错误并改正后履行.(5)检查表是否创建成功SELECT*FROM StudentSELECT*FROM CourseSELECT*FROM SCSELECT*FROM Employee(6)点窜表结构及束缚●添加班级列ALTERTABLE Student ADD Sclass char(4)●点窜年龄列ALTERTABLE Student ALTERCOLUMN Sage smallint●添加束缚ALTERTABLE Course ADDUNIQUE(Cname)(7)删除表DROPTABLE Employee2.创建索引(1)为Course表按课程名称创建索引CREATEINDEX iCname On Course(Cname)(2)为Student表按先生姓名创建独一索引CREATEUNIQUEINDEX iSname ON Student(Sname)(3)为SC表按学号和课程号创建聚集索引CREATECLUSTEREDINDEX iSnoCno On SC(Sno,Cno desc)(4)为Course表按课程号创建独一索引请本人完成该操纵3.创建视图建立信息系先生的视图:CREATEVIEW IS_StudentASSELECT Sno,Sname,Sage FROM StudentWHERE Sdept='IS';3.2 数据操纵1.拔出数据将如下表格中的数据分别拔出到数据库响应的表中:(1)拔出到Student表INSERTINTO Student VALUES('20100001','李勇','男',20,'CS','1001') INSERTINTO Student VALUES('20100002','刘晨','女',19,'CS','1001') INSERTINTO Student(Sno,Sname,Ssex,Sage,Sdept,Sclass)VALUES('20 100021','王敏','女',18,'MA','1002')INSERTINTO Student(Sno,Sname,Ssex,Sage,Sdept,sclass)VALUES('20100031','张立','男',19,'IS','1003')INSERTINTO 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表INSERTINTO Course(Cno,Cname,Cpno,Ccredit)VALUES('1','数据库零碎道理','5',4)INSERTINTO Course(Cno,Cname,Cpno,Ccredit)VALUES('2','高等数学',null,2)INSERTINTO Course(Cno,Cname,Cpno,Ccredit)VALUES('3','管理信息零碎','1',4)请写出拔出其余行的拔出语句,并拔出数据.(3)拔出到SC表INSERTINTO SC VALUES('20100001','1',92)INSERTINTO SC VALUES('20100002','2',80)INSERTINTO SC(Sno,Cno)VALUES('20100003','1')INSERTINTO SC(Sno,Cno,Grade)VALUES('20100010','3',null)请写出拔出其余行的拔出语句,并运转.(4)多行拔出到表中创建存一个表,保管先生的学号、姓名和年龄:CREATETABLE cs_Student(学号char(8),姓名char(8),年龄smallint);拔出数据行:INSERTINTO 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的先生记录DELETEFROM Student WHERE Sno='20100022'(2)删除学号20100001先生的1号课程选课记录将选课信息复制到一个临时表tmpSC中:SELECT*INTO tmpSC FROM SC在tmpSC中履行删除操纵:DELETEFROM tmpSC WHERE Sno='20100001'and Cno='1'(3)删除临时表中20100002先生的全部选课记录请本人完成该操纵.(4)删除计算机科学系所有先生的选课记录DELETEFROM tmpSC WHERE'CS'=(select Sdept from student where stud ent.Sno=tmpSC.Sno);(5)删除全部选课记录DELETEFROM tmpSC(6)检查数据是否删除3.3 数据查询操纵完成如下查询操纵:1.单表查询(1)按指定目标列查询●查询先生的具体记录:SELECT*FROM Student;●查询先生的学号、姓名和年龄SELECT Sno,Sname,Sage FROM Student;(2)目标列包含表达式的查询●查询全体先生的姓名、出生年份和所有系,请求用小写字母暗示所有系名.SELECT Sname,'Year of Birth: ',2004-Sage,LOWER(Sdept)FROM Student;(3)查询结果集中点窜列名称●查询全体先生的姓名、出生年份和所有系,请求用小写字母暗示所有系名.SELECT Sname,'Year of Birth:'as BIRTH, 2000-SageBIRTHDAY,DEPARTMENT=LOWER(Sdept)FROM Student;(4)取消反复行●查询选修了课程的先生学号:比较ALL和DISTINCT的区别SELECT Sno FROM SC;SELECTDISTINCT Sno FROM SC;(5)简单条件查询●查询计算机科学系全体先生的名单SELECT Sname FROM Student WHERE Sdept='CS';(6)按范围查询●查询年龄在20~23岁之间的先生的姓名、系别和年龄SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23(7)查询属性值属于指定集合的行●查询信息系(IS)、数学系(MA)和计算机科学系(CS)先生的姓名和性别SELECT Sname,Ssex FROM Student WHERE Sdept IN('IS','MA','CS');(8)模糊查询●查询所有姓刘先生的姓名、学号和性别SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE'刘%'(9)查询空值●查询缺少成绩的先生的学号和响应的课程号SELECT Sno,Cno FROM sc WHERE Grade isnull;(10)多重条件查询●查询计算机科学系年龄在岁以下的先生姓名SELECT Sname FROM student WHERE Sdept='CS'and Sage<20;(11)结果集排序●查询全体先生情况,查询结果按所在系的系号升序排列,同一系中的先生按年龄降序排列SELECT*FROM Student ORDERBY Sdept,Sage DESC;(12)完成以下查询●查询先生基本信息,结果集属性名使用汉字●查询信息系且年龄大于23岁同学的学号和姓名●查询年龄是17、18、20、23岁同学的学号、姓名、年龄和所在系●查询年龄不在21~24岁之间的先生的姓名、系别和年龄2.分组统计(1)聚集函数的使用●查询先生总人数SELECT COUNT(*)FROM Student;●查询选修了课程的先生人数SELECT COUNT(DISTINCT Sno)FROM SC●查询最高分SELECT MAX(Grade)FROM SC(2)聚集函数感化于部分行●统计2号课程的总分、均分和最高分SELECT SUM(grade)总分,AVG(grade)均分,MAX(grade)最高分FROM sc WHERE Cno='2'(3)分组统计●统计各门课程的选课人数、均分和最高分select cno课程号,count(*)人数,AVG(grade)均分,MAX(grade)最高分from sc groupby Cno●统计均分大于90的课程select cno课程号,count(*)人数,AVG(grade)均分,MAX(grade)最高分from sc groupby Cnohaving AVG(grade)> 90(4)完成上面的查询●统计每个同学的学号、选课数、平均成绩和最高成绩●统计每个班的每门课的选课人数、平均成绩和最高成绩3. 连接查询(1)在WHERE中指定连接条件●查询每个介入选课的先生信息及其选修课程的情况SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SCWHERE Student.Sno=SC.Sno●查询每一门课的间接先修课SELECT*FROM course first,course secondWHEREfirst.Cpno=o;o,second.Cpno FROM course first,course second WHEREfirst.Cpno=o;(2)在FROM中指定连接条件●查询每个介入选课的先生信息及其选修课程的情况SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student JOIN SC ON (Student.Sno=SC.Sno)(3)使用外连接查询●查询每个先生信息及其选修课程的情况SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFTOUTERJOIN SC ON (Student.Sno=SC.Sno)(4)复合条件连接查询●查询选修号课程且成绩在分以上的所有先生SELECT Student.Sno,SnameFROM Student join SC ON (Student.Sno=SC.Sno)/* 连接条件*/WHERE o='2'AND SC.Grade> 90;/* 过滤条件*/(5)多表查询●查询每个先生的学号、姓名、选修的课程名及成绩SELECT Student.Sno,Sname,Cname,GradeFROM Student,SC,CourseWHERE Student.Sno=SC.Sno AND o=o;(6)完成以下查询●查询选修了2号课程的同学的学号和姓名●查询各门课程的课程号、课程名称和选课先生的学号●查询选修了数据库零碎道理课程的同学的学号和姓名和成绩4. 嵌套查询(1)由In引出的子查询●查询与“刘晨”在同一个系进修的先生SELECT Sno,Sname,Sdept FROM StudentWHERE Sdept IN(SELECT Sdept FROM Student WHERE Sname='刘晨');(2)由比较运算符引出的子查询●找出每个先生超出他选修课程平均成绩的课程号.SELECT Sno,Cno FROM SCxWHERE Grade>=(SELECT AVG(Grade)FROM SCyWHERE y.Sno=x.Sno);(3)带润色符的比较运算符引出的子查询●查询其他系中比计算机科学系所有先生年龄都小的先生姓名及年龄.SELECT Sname,Sage FROM StudentWHERE Sage<ALL(SELECT Sage FROM Student WHERE Sdept='CS') AND Sdept<>'CS';(4)由EXISTS引出的子查询●查询所有选修了1号课程的先生姓名SELECT Sname FROM StudentWHERE EXISTS(SELECT*FROM SC WHERE Sno=Student.Sno AND C no='1')5. 集合查询(1)集合并●查询计算机科学系的先生及年龄不大于19岁的先生SELECT*FROM Student WHERE Sdept='CS'UNIONSELECT*FROM Student WHERE Sage<=19(2)集合交●查询计算机科学系且年龄不大于19岁的先生SELECT*FROM Student WHERE Sdept='CS'INTERSECTSELECT*FROM Student WHERE Sage<=19(3)集合差查询计算机科学系且年龄大于19岁的先生SELECT*FROM Student WHERE Sdept='CS'EXCEPTSELECT*FROM Student WHERE Sage<=19;3.4 视图操纵建立视图并基于视图进行查询:1. 创建视图(1)建立先生基本信息视图CREATEVIEW Student_VIEW(学号,姓名,性别,年龄,系,班级) ASSELECT Sno,Sname,Ssex,Sage,Sdept,SclassFROM Student;(2)建立先生均分视图CREATEVIEW S_G(Sno,Gavg)ASSELECT Sno,avg(Grade)FROM SC GROUPBY Sno;(3)建立选课信息视图CREATEVIEW XK_VIEWASSELECT Student.*,Course.*,GradeFROM Student,SC,CourseWHERE Student.Sno=SC.Sno AND o=o; 2. 视图查询(1)查询先生基本信息SELECT*FROM Student_VIEW(2)找出每个先生超出他选修课程平均成绩的课程号SELECT SC.Sno,Cno,gradeFROM SC,S_GWHERE SC.Sno=S_G.Sno and Grade>=S_G.Gavg(3)查询每个先生的学号、姓名、选修的课程名及成绩SELECT Sno,Sname,Cname,GradeFROM XK_VIEW(4)比较使用视图查询和直接从基表查询的长处。
数据库实验答案
实验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'所选学分'
数据库认证实验三答案
--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语句检查修改前后的记录情况。
数据库SQLServer-实验3答案-教
数据库SQLServer-实验3答案- 教材-教辅.数据库技术与应用实验实验3 SQL Server数据表管理实验3 SQL Server数据表管理一、实验目的1.学会使用SQL Server管理平台和Transact-SQL语句CREATE TABLE 和ALTER TABLE创建和修改表。
2.学会在SQL Server管理平台中对表进行插入、修改和删除数据操作。
3.学会使用Transact-SQL语句对表进行插入、修改和删除数据操作。
4.了解SQL Server的常用数据类型。
二、实验内容1.启动SQL Server管理平台,在对象资源管理器中展开“studentsdb 数据库文件夹。
2.在studentsdb数据库中创建数据表《学生表》、《课程表》、《成绩表》,数据结构如图3-1、图3-2和图3-3所示。
图3-1 学生表图3-2 课程表2南京师范大学中北学院.数据库技术与应用实验实验3 SQL Server数据表管理图3-3 成绩表3.在SQL Server管理平台中创建《学生表》、《课程表》。
4.在SQL Server管理平台中,将《学生表》的学号列设置为主键,非空。
5.使用Transact-SQ语句 CREATE TABLE在studentsdb数据库中创建《成绩表》。
6.《学生表》、《课程表》、《成绩表》中的数据如图3-4、图3-5和图3-6所示。
7.在SQL Server管理平台中为《学生表》、《课程表》、《成绩表》添加数据。
3南京师范大学中北学院.数据库技术与应用实验实验3 SQL Server数据表管理(注意:在添加数据是必须逐行输入,否则系统将会报错,显示“出错信息为:键列信息不足或不正确。
更新影响到多行”,产生原因是由于相同记录所造成)。
8.使用Transact-SQL语句INSERT NTTO …VALUES向studentsdb数据库的《成绩表》插入以下数据:学号课程编号成绩0004 0001 804南京师范大学中北学院.数据库技术与应用实验实验3 SQL Server数据表管理9.使用Transact-SQL语句ALTER TABLE修改《课程表》的“课程编号”列,使之为非空。
数据库实验三作业及答案
实验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?实验四:数据库的分组查询和统计查询实验目的:熟练掌握数据查询中的分组、统计、计算和集合的操作方法。
《数据库系统》实验---实验三答案
实验三复制表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)将总成绩的名次放入“排名”列中,总成绩相同的学生的排名也相同(即一个名次可以多个人),没有成绩的排名置空值。
- 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)目标列包含表达式的查询●查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。