数据库实验三作业及答案.docx
数据库原理与应用实验报告三及答案.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)查询有考试成绩(即成绩不为空值)的学生的学号、课程号。
数据库实验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)比较使用视图查询和直接从基表查询的长处。
最新国家开放大学电大《MySQL数据库应用》网络核心课实验训练3及4答案
最新国家开放大学电大《MySQL数据库应用》网络核心课实验训练3及4答案盗传必究本课程分为形成性考核和终结性末考两种考核形式,形成性考核占50% (满分100分),末考为网络考试占50% (满分100),其中形成性考核为完成课程网站上的形考作业任务,形考作业均为主观题,包括四个实训:实训一:在MYSQL创建数据库和表,25分;实训二:数据查询操作,25分;实训三:数据增删改操作,25分;实训四:数据库系统维护,25分。
实验训练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语句检查插入前后的记录情况。
INSERT INTO 目标表SELECT * FROM 来源表;insert into insertTest select * from insertTest2;INSERT INTO目标表(字段1,字段2,...)SELECT字段1,字段2, ... FROM来源表;(这里的话字段必须保持一致)insert into insertTest2(id) select id from insertTest2;INSERT INTO 目标表(字段1,字段2,...)SELECT 字段1,字段2,...FROM来源表WHERE not exists (select * from 目标表where目标表.比较字段=来源表.比较字段);1>.插入多条记录:insert into insertTest2(id, name )select id, namefrom insertTestwhere not exists ( select * from insertTest2where insertTest2. id=insertTest. id);2>.插入一条记录: insert into insertTest (id, name )SELECT 100, 'liudehua' FROM dualWHERE not exists ( select * from insertTest where insertTest. id = 100); (2)使用带Select 的Insert 语句完成汽车配件表Autoparts 中数据的批量追加;并通过select 语句检查插入前后的记录情况。
《数据库技术》第三次实验内容
数据库技术实验创建库和表1.在'D:\SQL2000\DataBase\路径下创建数据库xscj,要求:主数据文件逻辑名为xscj_Data,物理名为xscj_Data.MDF,初始大小为10MB,最大允许为300MB,文件以5MB递增。
事务日志文件逻辑名为xscj_Log,物理名为xscj_Log.LDF,初始大小为10MB,最大允许为200MB,文件以2MB递增。
2.创建表参见教材附录A的要求:CREATE TABLE xs()CREATE TABLE kc()CREATE TABLE xs_kc()上面的SQL代码调试正确之后,请将xscj数据库整个删除,再进行下面的操作。
带完整数据的XSCJ数据库的还原:先下载我课件中的homework备份。
点击后找到你下载下来的homework 的备份(我课件中XSCJ数据库的备份)所在的位置然后一直“确定”下去,就可以还原XSCJ 数据库了,下面的操作都在这个数据库上进行。
如果报错,把第二幅图中的选项改为计算机上正确的文件路径即可。
学生成绩数据的简单和复杂查询实验步骤以xscj数据库为例,使用查询分析器完成以下的查询语句:(1) 查询xs表中的所有学生的信息以及仅查询学生姓名。
(2) 查询出XS表中的前10个或前面10%的学生信息。
(3) 查询总学分<50的所有学生的学号,姓名,专业名。
(4) 将XS_KC表中的学生学号,课程号及成绩输出,其中成绩按70%的分数显示,并且将成绩列名改为‘考试所占分数’。
(5) 查询XS表中的学生相关信息,并以学生姓名,所学专业,出生时间作为列名。
(6) 查询XS_KC表,显示学生成绩在80到89之间的学生选课信息。
(7) 从KC表中找出学时大于60的课程信息,并按照升序和降序显示。
(8) 找出姓王的所有学生。
(9) 查询总学分大于50的所有学生的姓名,性别,专业和选修课程号和成绩(10)查询计算机专业的学分大于50的学生的姓名及所选课程名和成绩。
数据库实验答案
实验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.分别向以上四个表中增加数据。
数据库第三次大作业(全答案)
数据库第三次大作业(全答案){4.作业3——存储过程与触发器设计任务任务:1)为BookStore数据库增加一个用户oper1,允许oper1对图书表和借还表进行修改操作。
use BookStoregoexec sp_addlogin operl,'(此处为密码)','BookStore'goexec sp_addrolemember'db_datareader','operl'】grant update on图书表to operlgrant update on借还表to operl2)设计存储过程a)数据初始化过程sp_Init。
包含的操作有:所有的用于测试图书信息、教师信息、历史记录清空,输入图书分类、输入管理员信息、输入借书规定。
略,界面进行输入或者代码输入作业用数据b)某教师在某时间借了某本书,由某管理员办理。
create procedure proc_lendbook@aid char(10),—@atime datetime,@ISBN char(20),@aname nchar(4)asbeginupdate图书表set状态='借出'where ISBN=@ISBN—insert into借还表(ISBN,教师工号,借办代理人,借出日期) values(@ISBN,@aid,@aname,@atime)endc)某教师在某时间还了某本书,由某管理员办理create procedure proc_returnbook@bid char(10),@btime datetime,`@ISBN char(20),@bname nchar(4)asbeginupdate图书表set状态='库存'where ISBN=@ISBNupdate借还表!set还办代理人=@bname,归还日期=@btimewhere教师工号=@bid and ISBN=@ISBNendd)查看某人的全部借还书记录create procedure proc_getReaderlog@cname n char(4),@@cid char(10)asbeginselect b.姓名,c.书名,a.借出日期,归还日期from借还表 a join教师表 b on a.教师工号=b.教师工号join图书表 c on=where b.姓名=@cname or b.教师工号=@cidende)。
数据库认证实验三答案
--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;。
数据库查询语句例题与答案实验三
实验三数据查询语言一、基本查询使用相应SQL语句,完成如下操作:(1)查询所有用户的用户ID 和姓名。
select uid , namefrom [user](2)查询注年龄最小 3 位用户的用户ID, 姓名和年龄。
select top 3 ( uid ), name , datediff ( yyyy , birthday , getdate ()) age from [user]order by birthday desc(3)查询库存小于50 本的所有书目信息。
select *from bookwhere stock <50(4)查询清华大学出版社的所有书目信息。
select *from bookwhere press =' 清华大学出版社'5)查询价格在50-100 元的所有的书名。
select titlefrom bookwhere price >50 and price <100(6)查询姓“张”或“王”或“李”且单名的学生的情况。
select *from [user]where name like ' 张%' or name like ' 李%' or name like ' 王%' and len ( name )= 27)查询所有书目的书名、出版社及价格,要求出版社升序排列,出版社相同时,按价格从高到底进行排序。
title , press , price bookfrom [order]where state = 4、数据汇总使用相应 SQL 语句,完成如下操作:1)查询理工类书目的最高价格、最低价格及平均价格。
select max( price ) max_price , min ( price ) min_price , avg ( price ) avg_price from bookwhere category = 1(2) 查询所有理工类书目的库存总量。
数据库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修改《课程表》的“课程编号”列,使之为非空。
数据库原理第三次作业题及答案.doc
第3次作业一、填空题(本大题共30分,共10小题,每小题3分)1.面向问题域的分析方法是从、系统边界、系统责任三方面出发,通过调查企事业单位业务工作流程入手。
2.在SQL语句中,使用语句来建立索引。
2.在文件组织结构中,结构就是存储数据的文件记录采用统一的长度。
3.在对象模型中是现实世界中实体的模型化,与记录概念相仿,但远比记录复杂。
4.我们可以通过来判定调度是否冲突可串行化。
5.由Boyce和Codd提出的,比3NF又进了一步,通常认为是修正的一6.PowerBuilder中使用的编程语言是。
7.不含多余属性的超键称为o8.用OPEN语句打开游标时,游标指针指向查询结果的9.E-R模型是一种模型,主要体现在模型力图去表达数据的意义。
二、简答题(本大题共40分,共8小题,每小题5分)1.将简述画数据流程图应该注意的注意事项。
2.网状数据库和层次数据库的缺点。
3.好的关系模式应具备哪些条件?4 .请描述时间戳排序协议的优点。
5.简述定长记录删除一条记录可以采用的策略。
6.进行概念结构设计,将一个概念划分为实体或属性的原则是什么?7.请简述需求分析的任务。
8.断言有哪些利弊?三、程序设计题(本大题共30分,共2小题,每小题15分) 1.基于以下三个表即学生表S、课程表C和学生选课表SC,它们的结构如下:S(SN0, SNAME, GENDER, AGE, DEPT)C(CN0, CNAME)SC(SN0, CNO, GRADE)其中:SNO为学号,SNAME为姓名,GENDER为性别,AGE为年龄,DEPT为系别,CN0为课程号,CNAME为课程名,GRADE为成绩。
1).写出检索学生姓名及其所选修课程的课程号和成绩的SQL语句。
2) .写出检索学生姓名及其所选修课程的课程名和成绩的SQL语句。
2.假设有如下的关系模式:S (供应商),数据项有SNO、SNAME、SADDR; P (零件),数据项有PNO、PNAME、COLOR、WEIGHT; J (工程项目),数据项有JNO、JNAME、JADDR; SPJ (连接记录),数据项有SNO、PNO、JNO、QTY, 表示某供应商供应某种零件给某工程项目的数量QTY;并规定属性:SNO、SNAME、SADDR、PNO、PNAME、COLOR、JNO、JNAME、JADDR 为字符型数据;WEIGHT、QTY为数值型数据;列的宽度自定义。
数据库实验三作业及答案
实验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.在“学生管理数据库”中用查询分析器创建p82页的课程数据表(表名为kcb),并输入数据内容。
2.用查询分析器在student表中增加一个字段:“电话号码”,字符型,并设置默认值为“1111111”。
3.用查询分析器删除kcb表的主键4.用企业管理器或查询分析器修改course表,设置约束:学时>=学分*16。
5.用查询分析器修改学生管理数据库中的students_dat文件增容方式为一次增加3MB.6.将“学生管理数据库”更名为“学生管理”。
7.将“学生管理”数据库备份到外存中。
8.将“学生管理”数据库的数据导出为excel文件,并保存在外存中。
9.为course表中的课程名建立唯一性索引。
10.将“学生管理”数据库从系统中分离出来。
11. 将“学生管理”数据库附加到企业管理器中。
上机实验四1.分别查询学生表和学生修课表中的全部数据。
2.查询计算机系的学生的姓名、年龄。
3.查询选修了c01号课程的学生的学号和成绩。
4.查询成绩在70到80分之间的学生的学号、课程号和成绩。
5.查询计算机系年龄在18到20之间且性别为“男”的学生的姓名、年龄。
6.查询0412101号学生的修课情况。
7.查询c01号课程成绩最高的分数。
8.查询学生都选修了哪些课程,要求列出课程号。
9.查询Northwind数据库中orders 表的OrderlD、CustomerID和OrderDate,并将最新的定购日期(OrderDate)列在前边。
10.查询Northwind数据库中orders 表的ShipCountry列以B,C,D,F 开始且第三个字符为“a”的OrderlD、CustomerID和ShipCountry的信息。
11.查询Northwind数据库中orders 表的ShipCountry列不以A,B,C,D,E,F开始且最后一个字母是“a”的OrderlD、CustomerlD和ShipCountry的信息。
《数据库系统》实验---实验三答案
实验三复制表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)。
实验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 学生成绩表grade
3.在企业管理器中创建student_info、curriculum表。
4.在企业管理器中,将student_info表的学号列设置为主键,非空。
5.使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建grade表。
CREATE TABLE 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表的“课程编号”列,使之为非空。
答:ALTER TABLE curriculum
ALTER COLUMN 课程编号 char(4) NOT NULL
10.使用Transact_SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为real。
答:ALTER COLUMN 分数 real
11.使用Transact_SQL语句ALTER TABLE修改student_info表的“姓名”列,使其列名为“学生姓名”,数据类型为archar(10),非空。
答:ALTER TABLE student_info
ALTER COLUMN 姓名学生姓名
ALTER TABLE student_info
ALTER COLUMN 学生姓名 varchar(10) NOT NULL
12.分别使用企业管理器和Transact_SQL语句DELETE删除studentsdb数据库的grade表中学号为'0004'的成绩记录。
答:DELETE grade WHERE 学号='0004'
13.使用Transact_SQL语句UPDATE修改studentsdb数据库的grade表中学号为'0003'、课程编号为'0005'、分数为90的成绩记录。
答:UPDATE grade SET 分数=90
WHERE 学号='0003' and 课程编号='0005'
14.使用Transact_SQL语句ALTER...ADD为studentsdb数据库的grade表添加一个名为“备注”的数据列,其数据类型为VARCHAR(20)。
答:ALTER TABLE grade ADD 备注 VARCHAR(20) NULL
15.分别使用企业管理器和Transact_SQL语句DROP TABLE删除studentsdb数据库中的grade表。
答:DROP TABLE grade
四、实验思考
1.使用Transact-SQL语句删除在studentsdb数据库的grade表添加的“备注”数据列。
DELETE FROM grade Where 学号='0004'
UPDATE grade SET 分数=90 WHERE 学号='0003' and 课程编号='0005'
ALTER TABLE grade ADD 备注 VARCHAR(20) NOT NULL
2.在企业管理器中,studentsdb数据库的student_info表的数据输入时,如果输入相同学号的记录将出现什么现象?怎样避免该情况的发生?
答:出现红色的感叹号。
将数据一行一行的输入就可以避免。
知识改变命运。