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。
- 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。