sql 数据库 实验3答案
数据库SQL实验题目
实验一数据库和表的建立实验目的1.掌握数据库和表的基础知识2.掌握使用创建数据库和表的方法3.掌握数据库和表的修改、查看、删除等基本操作方法实验内容和要求一、数据库的创建在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示:Grademanager数据库参数表参数参数值参数参数值存储的数据文件路D:\db\ 存储的日志文件路径D:\db\径数据文件初始大小5MB 日志文件初始大小2MB数据文件最大值20MB 日志文件最大值15MB数据文件增长量原来10% 日志文件增长量2MB二、表的创建、查看、修改和删除1.表的创建在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表:(1)Student表的表结构是否允许字段名称数据类型长度精度小数位数说明Null值Sno Char 10 0 0 否学号,主码Sname Varchar 8 0 0 是姓名Ssex Char 2 0 0 是性别,取值:男或女Sbirthday Date 8 0 0 是出生日期Sdept Char 16 0 0 是系名Speciality Varchar 20 0 0 是专业名特别注意:为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK 约束”命令,然后按照图1进行设置。
图1 设置性别的约束(2)Course表(课程名称表)的表结构字段名称数据类型长度精度小数位数是否允许Null值说明Cno Char 5 0 0 否课程号,主码Cname Varchar 20 0 0 否课程名(3)SC表(成绩表)的表结构字段名称数据类型长度精度小数位数是否允许Null值说明Sno Char 10 0 0 否学号,外码Cno Char 5 0 0 否课程号,外码Degree Decimal 5 5 1 是成绩,0~100之间特别注意:①为属性Degree 约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为Degree>=1 And Degree<=100②为SC表设置外键Sno和Cno的方法:右键单击表SC,选择“设计”命令,然后选择菜单“表设计器”中的“关系”命令,打开“外键关系”窗口,选择“添加”按钮,然后单击“表和列规范”后的按钮,按照图2进行设置,即可将SC表中的Cno属性设置为外键。
大学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
31. 分数表scores设计如下:courseID(课程编号)studentID(学生编号)score(分数)另有一个学生信息表student,包含studentID,sname(学生姓名)。
已知并非所有学生都参加了courseID为0001的考试,现在查询所有参加0001号课程考试及格学生的学生姓名,下面正确的是()。
(选择一项)AA. select sname from student where studentID in (select studentID from scores where courseID = 0001 and score>=60)B. select sname from student where studentID = (select studentID from scores where courseID = 0001 and score>=60)C. select sname from student where studentID not in (select studentID from scores where courseID = 0001 and score<=60)D. select sname from student where studentID exists (select studentID from scores where courseID = 0001 and score>=60)32. 在()的列上更适合创建索引。
(选择两项)ADA. 需要对数据进行排序B. 具有默认值C. 频繁更改D. 频繁搜索33. SQL Server数据库有2种登录认证方式。
其中在()方式下,需要客户端应用程序连接时提供登录时需要用户标识和密码。
CA. Windows身份认证。
B. 以超级用户身份登录。
C. SQL Server身份认证。
数据库SQLServer-实验3答案-教
数据库SQLServer-实验3答案-教辅-教材实验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 课程表图3-3 成绩表3.在SQL Server管理平台中创建《学生表》、《课程表》。
4.在SQL Server管理平台中,将《学生表》的学号列设置为主键,非空。
5.使用Transact-SQ语句CREATE TABLE在studentsdb数据库中创建《成绩表》。
6.《学生表》、《课程表》、《成绩表》中的数据如图3-4、图3-5和图3-6所示。
7.在SQL Server管理平台中为《学生表》、《课程表》、《成绩表》添加数据。
(注意:在添加数据是必须逐行输入,否则系统将会报错,显示“出错信息为:键列信息不足或不正确。
更新影响到多行”,产生原因是由于相同记录所造成)。
8.使用Transact-SQL语句INSERT NTTO …V ALUES向studentsdb数据库的《成绩表》插入以下数据:学号课程编号成绩0004 0001 809.使用Transact-SQL语句ALTER TABLE修改《课程表》的“课程编号”列,使之为非空。
10.使用Transact-SQL语句ALTER TABLE修改《成绩表》的“分数”列,使其数据类型为real。
数据库实验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)比较使用视图查询和直接从基表查询的长处。
SQL实验的题目和答案全解
数据库实验总汇二、使用SQL Server 工具在管理数据库系统和运行SQL查询的两个主要工具是企业管理器和查询分析器三、实验目的1.熟悉数据库的交互式SQL工具。
2.熟悉通过SQL对数据库进行操作。
3.完成上机练习。
四、实验内容(打※为选做题)Part A1.使用CREATE语句创建数据库2. 使用CREATE语句创建基本表3.更改基本表的定义,增加列,修改列的数据类型。
4.创建表的索引,取消表的索引1、数据库的建立使用SQL 语句建立关系数据库schooldemo2、基本表的建立在数据库schooldemo下,使用SQL 语句建立关系数据库表:人员表PERSON(Pno,Pname, Page),房间表ROOM(Rno,Rname,Rarea),表PR(Pno,Rno,Date).其中,表PERSON :Pno(CHAR(8),主码,非空,唯一),Pname(CHAR(20),非空),Page(INT);表ROOM:Rno(CHAR(8),主码,非空,唯一),Rname(CHAR(20)),Rarea(FLOAT (10));表PR:Pno(CHAR(8),非空,唯一),Rno(CHAR(8),非空,唯一),Date (DATETIME);(三个表之间有联系)3、更改基本表的定义,增加列,删除列,修改列的数据类型。
更改表PERSON,增加属性Ptype(类型是CHAR ,长度为10),把表ROOM中的属性Rname的数据类型改为长度为40。
4、创建表的索引,取消表的索引为ROOM表创建按Rno降序排列的索引创建PERSON表按Pname升序排列的唯一性索引取消PERSON表Pname升序索引5、删除表ROOM实验过程(1.a)1、数据库的建立使用SQL 语句建立关系数据库schooldemocreate database schooldemoon(name=schooldemo,filename='e:\123\school_data.mdf',size=5mb,maxsize=15mb,filegrowth=10%)log on(name=schooldemo_log,filename='e:\123\schooldemo.ldf',size=5mb,maxsize=15mb,filegrowth=4mb)2、基本表的建立在数据库schooldemo下,使用SQL 语句建立关系数据库表:人员表PERSON(Pno,Pname, Page),房间表ROOM(Rno,Rname,Rarea), 表PR(Pno,Rno,Date).其中,表PERSON :Pno(CHAR(8),主码,非空,唯一),Pname(CHAR(20),非空),Page(INT);表ROOM:Rno(CHAR(8),主码,非空,唯一),Rname(CHAR(20)),Rarea(FLOAT(10));表PR:Pno(CHAR(8),非空,唯一),Rno(CHAR(8),非空,唯一),Date(DATETIME);(三个表之间有联系)create table person(pno char (8)primary key,pname char (20),page int);create table room(rno char (8) primary key,rname char(20),rarea float(10));create table pr(pno char (8),rno char (8),date datetime,primary key(pno,rno),foreign key(pno) references person(pno),foreign key(rno) references room(rno));3、更改基本表的定义,增加列,删除列,修改列的数据类型。
sql数据库实验3答案
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。
sql实验指导答案3--6
create database employeesonprimary(name='employee1',filename='D:\data\employee1.mdf',size= 10 MB,maxsize=UNLIMITED,filegrowth= 10%),(name='employee2',filename='D:\data\employee2.mdf',size= 20 MB,maxsize= 100 MB,filegrowth= 1 MB)log on(name='employeelog1',filename='D:\data\employeelog1.ldf',maxsize= 50 MB,filegrowth= 1 MB),(name='employeelog2',filename='D:\data\employeelog2.ldf',maxsize= 50 MB,filegrowth= 1 MB)alter database employeesadd filegroup fgroupgoalter database employeesadd file(name='employee3',filename='D:\data\employee3.mdf',size= 20 MB,maxsize= 100 MB,filegrowth= 1 MB),(name='employee4',filename='D:\data\employee4.mdf',size= 20 MB,maxsize= 100 MB,filegrowth= 1 MB),(name='employeelog3',filename='D:\data\employeelog3.ldf',maxsize= 50 MB,filegrowth= 1 MB)to filegroup fgroupgouse employeesgoCREATE TABLE employee(number int NOT NULL,name varchar(20)NOT NULL,sex char(2)NULL,birthday date NULL,hire_date date NOT NULL DEFAULT (getdate()),professional_title varchar(10)NULL,salary money NULL,memo ntext NULL,constraint pk_id primary key clustered(number))use employeesgoselect*from employeeuse employeesgodrop table employeeuse MASTERgoalter database employees set offline with rollback immediate drop database employeesgocreate table products(id char(10)not null,name char(20)not null,price money default 0.01,quantity smallint null,constraint pk_id primary key clustered (id))create table student(Id char(8),name char(8),sex char(2),phonenum char(11),constraint chk_sex check(sex in('F','M')),Constraint chk_phonenum check(phonenum like'(010)[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') )alter table studentdrop constraint chk_phonenumalter table studentadd constraint chk_phonenum check(phonenum like'(010)[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') create database storeon(name=store,filename='D:\data\store.mdf',size= 5 MB,maxsize= 10 MB,filegrowth= 1 MB)log on(name=storelog,filename='D:\data\storelog.ldf',size= 5 MB,maxsize= 10 MB,filegrowth= 1 MB)use storegocreate table商品(商品号char(8)not null primary key,商品名char(16)not null,单价float not null,商品类别char(10),供应商char(10),constraint p_p check(单价>0.0))create table顾客(顾客号char(10)not null primary key,姓名char(10)not null,住址varchar(50))create table购买(顾客号char(10)not null,商品号char(8)not null,购买数量int not null,primary key(顾客号,商品号),foreign key (顾客号)references顾客(顾客号),foreign key (商品号)references商品(商品号),constraint b_n check(购买数量>0 and购买数量<20))create table购买(顾客号char(10)not null,商品号char(8)not null,购买数量int not null,primary key(顾客号,商品号),constraint buy_c foreign key (顾客号)references顾客(顾客号), constraint buy_p foreign key (商品号)references商品(商品号),constraint b_n check(购买数量>=0 and购买数量<=20))insert into商品values('M01','佳洁士',8.00,'牙膏','宝洁');insert into商品values('M02','高露洁',6.50,'牙膏','高露洁');insert into商品values('M03','洁诺',5.00,'牙膏','联合利华');insert into商品values('M04','舒肤佳',3.00,'香皂','宝洁');insert into商品values('M05','夏士莲',5.00,'香皂','联合利华');insert into商品values('M06','雕牌',2.50,'洗衣粉','纳爱斯');insert into商品values('M07','中华',3.50,'牙膏','联合利华');insert into商品values('M08','汰渍',3.00,'洗衣粉','宝洁');insert into商品values('M09','碧浪',4.00,'洗衣粉','宝洁');insert into顾客values('C01','Dennis','海淀');insert into顾客values('C02','John','朝阳');insert into顾客values('C03','Tom','东城');insert into顾客values('C04','Jenny','东城');insert into顾客values('C05','Rick','西城');insert into购买values('C01','M01',3);insert into购买values('C01','M05',2);insert into购买values('C01','M08',2);insert into购买values('C02','M02',5);insert into购买values('C02','M06',4);insert into购买values('C03','M01',1);insert into购买values('C03','M05',1);insert into购买values('C03','M06',3);insert into购买values('C03','M08',1);insert into购买values('C04','M03',7);insert into购买values('C04','M04',3);insert into购买values('C05','M06',2);insert into购买values('C05','M07',8);select distinct姓名from顾客,商品,购买where顾客.顾客号=购买.顾客号and商品.商品号=购买.商品号and商品.供应商='宝洁'select distinct姓名from顾客where顾客.顾客号in(select购买.顾客号from购买where购买.商品号in(select商品.商品号from商品where商品.供应商='宝洁'))select distinct姓名from顾客where exists(select*from购买where exists(select*from商品where顾客.顾客号=购买.顾客号and商品.商品号=购买.商品号and商品.供应商='宝洁'))select distinct姓名from顾客,商品,购买where顾客.顾客号=购买.顾客号and商品.商品号=购买.商品号and商品.商品号in(select distinct商品.商品号from顾客,商品,购买where顾客.顾客号=购买.顾客号and商品.商品号=购买.商品号and姓名='Dennis') and姓名<>'Dennis'select姓名from顾客where顾客号in(select顾客号from购买where商品号in(select商品号from购买where顾客号in(select顾客号from顾客where姓名='Dennis')))and姓名<>'Dennis'select top 1 供应商,sum(购买数量)from购买,商品where商品.商品号=购买.商品号and商品类别='牙膏'group by供应商order by SUM(购买数量)descupdate商品set单价=单价*1.1where商品类别='牙膏'deletefrom商品where商品号not in(select商品号from购买)CREATE TABLE S(sno char (10)primary key,sname char (10)not null,age tinyint,sex char (10)CHECK(sex='男'OR sex='女'))INSERT INTO S VALUES ('98601','李强',20,'男')INSERT INTO S VALUES ('98602','刘丽',21,'女')INSERT INTO S VALUES ('98603','张兵',20,'男')INSERT INTO S VALUES ('98604','陈志坚',22,'男')INSERT INTO S VALUES ('98605','张兵',21,'女')CREATE TABLE C(cno char (10)primary key,cname char (10)not null,teacher char(8),office char (10))INSERT INTO C VALUES ('C601','高等数学','周振兴', 416) INSERT INTO C VALUES ('C602','数据结构','刘建平', 415) INSERT INTO C VALUES ('C603','操作系统',' 刘建平', 415)INSERT INTO C VALUES ('C604','编译原理',' 王志伟', 415) CREATE TABLE SC(sno char (10)not null,cno char (10)not null,score tinyint,primary key (sno,cno),foreign key (sno)references S(sno),foreign key (cno)references C(cno))INSERT INTO SC VALUES ('98601','C601',90)INSERT INTO SC VALUES ('98601','C602',90)INSERT INTO SC VALUES ('98601','C603',85)INSERT INTO SC VALUES ('98601','C604',87)INSERT INTO SC VALUES ('98602','C601',90)INSERT INTO SC VALUES ('98603','C601',75)INSERT INTO SC VALUES ('98603','C602',70)INSERT INTO SC VALUES ('98603','C604',56)INSERT INTO SC VALUES ('98604','C601',90)INSERT INTO SC VALUES ('98604','C604',85)INSERT INTO SC VALUES ('98605','C601',95)INSERT INTO SC VALUES ('98605','C603',80)SELECT cno,cname FROM CWHERE teacher='周振兴'SELECT sno,sname FROM SWHERE age>21 and sex='男'--youwentiSELECT sname FROM SWHERE NOT EXISTS(SELECT*FROM CWHERE teacher='刘建平'AND NOT EXISTS(SELECT*FROM SCWHERE SC.sno=S.sno AND o=o)) SELECT cno FROM CWHERE cno NOT in(SELECT cno FROM SCWHERE cno=o and sno in(SELECT sno FROM SWHERE sname='刘丽'))SELECT cno FROM CWHERE NOT EXISTS(SELECT cno FROM SCWHERE cno=o and sno in(SELECT sno FROM SWHERE sname='刘丽'))SELECT sno FROM SCGROUP BY sno HAVING COUNT(*)>=2SELECT cno,cname FROM CWHERE NOT EXISTS(SELECT*FROM SWHERE NOT EXISTS(SELECT*FROM SCWHERE o=o AND SC.sno=S.sno)) SELECT sno FROM SWHERE sno IN(SELECT sno FROM SCWHERE cno IN(SELECT cno FROM CWHERE teacher='王志伟'))SELECT SC2.sno FROM SC SC1JOIN SC SC2ON SC1.sno=SC2.snoWHERE o='C601'and o='C603'SELECT sname FROM SWHERE NOT EXISTS(SELECT*FROM CWHERE NOT EXISTS(SELECT*FROM SCWHERE SC.sno=S.sno AND o=o)) SELECT sno FROM SWHERE sno IN(SELECT sno FROM SCWHERE cno IN(SELECT cno FROM SCWHERE sno='98603'))AND sno!='98603'SELECT DISTINCT sno FROM SCWHERE cno IN(SELECT cno FROM SCWHERE sno='98603')AND sno!='98603'SELECT S.sno,sname FROM S,SC,CWHERE S.sno=SC.sno and o=o and ame='操作系统' select*FROM S,SC,CWHERE S.sno=SC.sno and o=o。
SQL数据库实验和参考答案
数据库实验和参考答案上机实验七1.声明一个字符串型的局部变量,并对其赋值:‘我的变量’,然后显示出此值。
declare @a char(10)set @a='我的变量'--select @a as 变量的值print @a2.编程实现如下功能:1)声明两个整形的局部变量:@i1和@i2,对@i1赋初值:10,@i2的值为:@i1乘以5,再显示@i2的结果值。
declare @i1 int,@i2 intset @i1=10set @i2=@i1*5print @i22)用While语句实现5000减1,减2,……一直减到50的计算,并显示最终的结果。
declare @sum int,@i intset @sum=5000set @i=1while(@i<=50)beginset @i=@i+1endprint @sum3)输出100以内的素数。
declare @i smallint,@jsmallint,@k smallintset @i=2while(@i<=100)beginset @k=0set @j=2while(@j<@i)beginif(@i%@j=0)beginset @j=@Iendset @j=@j+1endif @k=0print @Iset @i=@i+1end4)将字符数在20以内的字符串变量C的值逆序输出。
要求输出界面为:declare @i varchar(20),@j int,@k varchar(20)set @j=1set @k=''while @j<=len(@i)beginset @k=substring(@i,@j,1) set @j=@j+1endprint '字符串C的值:'+@iprint 'C的逆序字符串:'+@k5)从SC表中查询所有学生的选课成绩情况,分别统计各分数段人数,并输出统计结果。
数据库实验答案
实验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'所选学分'
SQL数据库 综合实训3 参考解答
实训名称:查询语句及应用一、实训目的通过完成以下实践与操作,牢固掌握SQL Server 中SELECT语句及相关子句的运用;二、实训环境PC机+Windows XP操作系统+SQL Server 2000;三、实训内容与要求现有一数据库GradeManager(成绩管理),包括四个表:学生表(Student)、课程表(Course)、班级表(Class)以及成绩表(Grade)。
四个表的结构如下:各表中的数据如下:利用如上的成绩管理数据库与表、数据,实现以下的查询。
1.找出所有被学生选修了的课程号;use GradeManagerselect distinct Cno from Gradego2.找出01311班女学生的个人信息;use GradeManagerselect * from Student where (Ssex='女' and Clno='01311') go3.找出01311班、01312班的学生姓名、性别;use GradeManagerselect * from Student where (Clno='01311' or Clno='01312') go4.找出所有姓李的学生的个人信息;use GradeManagerselect * from Student where Sname like '李%'go5.找出学生李勇所在班级的学生人数;use GradeManagerselect Clno from Student where Sname='李勇'go查出李通所在班级是'00311',再用如下语句查询:use GradeManagerselect Clno,count(*) as '班级人数' from Student where Clno='00311' group by Clnogo或者合并一下,用如下语句(查询结果是一样的):use GradeManagerselect Clno,count(*) as '班级人数' from Student where Clno=(select Clno from Student where Sname='李勇') group by Clnogo6.找出课程名为操作系统的平均成绩、最高分、最低分;--查平均分use GradeManagerselect Cno,avg(Gmark) as '最高分' from Grade where Cno=(select Cno from Course where Cname='操作系统') group by Cnogo--查最高分use GradeManagerselect Cno,max(Gmark) as '最高分' from Grade where Cno=(select Cno from Course where Cname='操作系统') group by Cnogo--查最低分use GradeManagerselect Cno,min(Gmark) as '最高分' from Grade where Cno=(select Cno from Course where Cname='操作系统') group by Cnogo7.找出选修了课程的学生人数;use GradeManagerselect Sno,count(*) as '选修的课程数量' from Grade group by Snogo8.找出选修了课程操作系统的学生人数;use GradeManagerselect Cno,count(*) as '选修人数' from Grade where Cno=(select Cno from Course where Cname='操作系统') group by Cnogo9.找出2000级计算机软件班的成绩为空的学生姓名。
SQL实验及部分答案
SQL实验及部分答案实验⼀使⽤SQL语句创建和删除数据库⼀. 实验⽬的:1、了解SQL Server 2005数据库的逻辑结构和物理结构。
2、掌握使⽤SQL 语句创建和删除数据库。
⼆. 实验准备1.明确能够创建数据库的⽤户必须是系统管理员,或是被授权使⽤CREATE DATABASE语句的⽤户。
2.了解⽤SQL语句创建和删除数据库的基本语法。
三. 实验要求3、熟练使⽤查询分析器进⾏数据库的创建和删除操作4、完成⽤sql语句建⽴和删除数据库的实验报告四. 实验内容1.以下是创建数据库userdb1的SQL语句,以下是创建数据库userdb1的SQL语句,CREATE DATABASE userdb1 --创建名为userdb1的数据库on( NAME='userdb2',--数据⽂件的逻辑名称为userdb2FILENAME= 'd:\test\userdb1.mdf', ----物理路径为d:\testSIZE=5mb,----数据初始长度为5MMAXSIZE=10mb, --最⼤长度为10MFILEGROWTH=1mb --数据⽂件每次增长1M)运⾏上诉语句建⽴数据库userdb1.2.⽤SQL语句删除步骤⼀建⽴的数据库userdb1。
drop database userdb1 --删除数据库userdb1实验⼆分别⽤向导和SQL语句创建和删除表⼀.⽤SQL语句创建表在SQL Server 2005 的查询分析器中,⽤sql语句创建student表。
表2.1 student表(学⽣信息表)CREATE TABLE student(sno char(8)not null primary key,--学号(主键)sname char(8)not null,--姓名sex char(2)null,--性别native char(20)null,--籍贯birthday datetime null,--出⽣⽇期dno char(6)null,--所在院系spno char(8)null,--专业代码classno char(4)null,--班级号entime datetime null,--⼊校时间home varchar(40)null,--家庭住址tel varchar(40)null,--联系电话)表2.2 course表(课程信息表)CREATE TABLE course(cno char(10)not null primary key, spno char(8)null,cname char(20)not null,ctno tinyint null,experiment tinyint null,lecture tinyint null,semester tinyint null,credit tinyint null)实验三修改数据库基本表的定义⼀.实验⽬的1.了解表的结构特点。
SQL数据库原理实验指导书及答案
SQL数据库原理实验指导书及答案数据库原理SQLServer实验指导书1数据库系统原理实验一、基本操作实验实验1:数据库的定义实验本实验的实验目的是要求学生熟练掌握和使用SQL、T-SQL、SQL Server Enterpriser Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer,接收T-SQL语句和进行结果分析。
本实验的内容包括:l)创建数据库和查看数据库属性。
2)创建表、确定表的主码和约束条件,为主码建索引。
3)查看和修改表结构。
4)熟悉SQL Server Enterpriser Manager和 Query Analyzer工具的使用方法具体实验任务如下。
1.基本提作实验1)使用Enterpriser Manager建立图书读者数据库2)在Enterpriser Manager中查看图书读者数据库的属性,并进行修改,使之符合要求。
3)通过Enterpriser Manager,在建好了图书借阅数据库中建立图书、读者和借阅3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价,版次);读者(编号,姓名,单位,性别,电话):借阅(书号,读者编号,借阅日期人)要求为属性选择合适的数据类型,定义每个表的主键,Allow Null(是否允许空值)和 Default Value(缺省值)等列级数据约柬。
4)在Enterpriser Manager建立图书、读者和借阅3个表的表级约束:每个表的PrimaryKey2(主键)约束;借阅表与图书表间、借阅表与读者表之间的FOREIGNKEY(外码)约柬,要求按语义先确定外码约束表达式,再通过操作予以实现;实现借阅表的书号和读者编号的UNIQUE(惟一性)约束;实现读者性别只能是“男”或“女”的check (检查)约束。
2.提高操作实验建立学生_课程库操作,在查询分析器中用SQL命令实现。
数据库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、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三:创建及管理数据表
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 student
ALTER TABLE student
Add sclass nvarchar(10)
2)在表student中删除字段“班级名称(sclass)”;
use student
ALTER TABLE student
Drop column sclass
3)修改表student中字段名为“sname”的字段长度由原来的6改为8;
use student
ALTER TABLE student
ALTER COLUMN sname char(8)
4)修改表student中ssex字段默认值为‘男’;
use student
ALTER TABLE student
add default'男'for ssex
5)修改表course中cname字段为强制唯一性字段;
use student
ALTER TABLE course
Add constraint ix_course unique (cname)
6)修改表sc中grade字段的值域为0-100;
use student
ALTER TABLE sc
Add constraint CK_grade CHECK(grade between 0 and 100)
7)删除数据表course的唯一性约束;
use student
ALTER TABLE course
drop ix_course。