数据库实验答案

数据库实验答案
数据库实验答案

《数据库系统概论》实验报告书

专业班级

学号

姓名

指导教师

安徽工业大学计算机学院

实验一:数据定义语言

[ 实验日期 ] 年月日

[ 实验目的 ]

熟悉Oracle上机环境及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引。

[ 实验内容 ]

Oracle上机环境以及Oracle客户端的配置参见附录。

1. SQL数据定义语句:

例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。

1,创建表Student

CREATE TABLE Student (

SNO CHAR(5) ,

SNAME CHAR(10) NOT NULL,

SDEPT CHAR(2) NOT NULL,

SCLASS CHAR(2) NOT NULL,

SSEX CHAR(2),

SAGE NUMBER(2),

CONSTRAINT SNO_PK PRIMARY KEY(SNO))

2,创建表Course

CREATE TABLE Course(

CNO CHAR(3),

CNAME VARCHAR2(16) ,

CTIME NUMBER(3),

CONSTRAINT CNO_PK PRIMARY KEY(CNO)

)

3,创建表Teach

CREATE TABLE Teach(

TNAME VARCHAR(8),

TSEX CHAR(2),

CNO CHAR(3),

TDATE DATE,

TDEPT CHAR(2),

CONSTRAINT TT_PK PRIMARY KEY(TNAME,CNO,TDEPT),

CONSTRAINT CNO_FK FOREIGN KEY(CNO) REFERENCES Course(CNO)

)

4,创建表Score

CREATE TABLE Score(

SNO CHAR(5),

CNO CHAR(3),

SCORE NUMBER(5,2),

CONSTRAINT SC_PK PRIMARY KEY(SNO,CNO),

CONSTRAINT SNO_FK FOREIGN KEY(SNO) REFERENCES Student(SNO), CONSTRAINT CNOM_FK FOREIGN KEY(CNO) REFERENCES Course(CNO)

)

二、插入数据

1,Student

INSERT INTO Student VALUES('96001','马小燕','CS','01',21,'女') INSERT INTO Student VALUES('96002','黎明','CS','01',18,'男') INSERT INTO Student VALUES('96003','刘东明','MA','01',18,'男') INSERT INTO Student VALUES('96004','赵志勇','IS','02',20,'男') INSERT INTO Student VALUES('97001','马蓉','MA','02',19,'女') INSERT INTO Student VALUES('97002','李成功','CS','01',20,'男') INSERT INTO Student VALUES('97003','黎明','IS','03',19,'女') INSERT INTO Student VALUES('97004','李丽','CS','02',19,'女') INSERT INTO Student VALUES('96005','司马志明','CS','02',18,'男')

2,Course

INSERT INTO Course VALUES('001','数学分析',144)

INSERT INTO Course VALUES('002','普通物理',144)

INSERT INTO Course VALUES('003','微机原理',72)

INSERT INTO Course VALUES('004','数据结构',72)

INSERT INTO Course VALUES('005','操作系统',64)

INSERT INTO Course VALUES('006','数据库原理',64)

INSERT INTO Course VALUES('007','DB_Design',48)

INSERT INTO Course VALUES('008','程序设计',56)

3,Teach

INSERT INTO Teach VALUES('王成钢','男','004',TO_DATE( '1999-09-05', 'YYYY-MM-DD'),'CS'); INSERT INTO Teach VALUES('李正科','男','003',TO_DATE( '1999-09-05', 'YYYY-MM-DD'),'CS') INSERT INTO Teach VALUES('严敏','女','001',TO_DATE( '1999-09-05', 'YYYY-MM-DD'),'MA') INSERT INTO Teach VALUES('赵高','男','004',TO_DATE( '1999-09-05', 'YYYY-MM-DD'),'IS') INSERT INTO Teach VALUES('李正科','男','003',TO_DATE( '2000-02-23', 'YYYY-MM-DD'),'MA') INSERT INTO Teach VALUES('李玉兰','女','006',TO_DATE( '2000-02-23', 'YYYY-MM-DD'),'CS') INSERT INTO Teach VALUES('王成钢','男','004',TO_DATE( '2000-02-23', 'YYYY-MM-DD'),'IS') INSERT INTO Teach VALUES('马悦','女','008',TO_DATE( '2000-09-06', 'YYYY-MM-DD'),'CS') INSERT INTO Teach VALUES('王成钢','男','007',TO_DATE( '1999-09-05', 'YYYY-MM-DD'),'CS') to_date( '05-09-1999', 'DD-MM-YYYY' );

4,Score

INSERT INTO Score VALUES('96001','001',77.5)

INSERT INTO Score VALUES('96001','003',89)

INSERT INTO Score VALUES('96001','004',86)

INSERT INTO Score VALUES('96001','005',82)

INSERT INTO Score VALUES('96002','001',88)

INSERT INTO Score VALUES('96002','003',92.5)

INSERT INTO Score VALUES('96002','006',90)

INSERT INTO Score VALUES('96005','004',92)

INSERT INTO Score VALUES('96005','005',90)

INSERT INTO Score VALUES('96005','006',89)

INSERT INTO Score VALUES('96005','007',76)

INSERT INTO Score VALUES('96003','001',69)

INSERT INTO Score VALUES('97001','001',96)

INSERT INTO Score VALUES('97001','008',95)

INSERT INTO Score VALUES('96004','001',87)

INSERT INTO Score VALUES('96003','003',91)

INSERT INTO Score VALUES('97002','003',91)

INSERT INTO Score VALUES('97002','004','')

INSERT INTO Score VALUES('97002','006',92)

INSERT INTO Score VALUES('97004','005',90)

INSERT INTO Score VALUES('97004','006',85)

INSERT INTO Score VALUES('97004','008',75)

INSERT INTO Score VALUES('97003','001',59)

INSERT INTO Score VALUES('97003','003',58)

例1-2: (修改数据库表) 在Student表中增加SEX(C,2) 字段。

ALTER TABLE Student ADD SEX CHAR(2)

例1-3: (修改列名) 将Student表中列名SEX修改为SSEX。

ALTER TABLE Student RENAME COLUMN SEX TO SSEX;

例1-4;(修改数据库表) 将Student表中把Sname 字段修改为Sname(C,10)且为非空。

ALTER TABLE Student MODIFY SNAME VARCHAR(10) NOT NULL

例1-5:(建立索引) 为Score表按课程号升序、分数降序建立索引,索引名为SC_GRADE CREATE INDEX SC_GRADE ON Score(CNO ASC,SCORE DESC)

例1-6: (删除索引) 删除索引SC_GRADE。

DROP INDEX SC_GRADE

例1-7: (建立数据库表) 建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同

CREATE TABLE S1(

SNO CHAR(5) ,

SNAME CHAR(10) NOT NULL,

SD CHAR(2) NOT NULL,

SA NUMBER(2))

例1-8: (修改数据库表) 删除成绩表Score的参照完整性约束关系。

ALTER TABLE Score DROP CONSTRAINT SNO_FK ;

ALTER TABLE Score DROP CONSTRAINT CNOM_FK;

例1-9: (修改数据库表) 添加成绩表Score的参照完整性约束关系。

ALTER TABLE Score ADD CONSTRAINT SNO_FK FOREIGN KEY(SNO) REFERENCES Student(SNO) ALTER TABLE Score ADD CONSTRAINT CNOM_FK FOREIGN KEY(CNO) REFERENCES Course(CNO)

例1-10: (修改数据库表名) 将数据库表S1改名为Student_Temp

RENAME S1 TO Student_Temp

[ 实验要求 ]

①熟悉Oracle上机环境,掌握Oracle客户端的配置;

②建立数据库表,修改数据库表结构,建立、删除索引;

[ 实验方法 ]

①按照附录中的操作步骤进行客户端的配置;

②将实验需求用SQL语句表示;

③执行SQL语句;

④查看执行结果,如果结果不正确,进行修改,直到正确为止。

[ 实验总结 ]

实验通过使用sqlplus,学习对oracle的客户端创建,在服务器上建立用户,基本表是数据库的核心,所以创建正确的基本表是数据库的使用的前提,本次实验学习正确建立基本表并根据基本表中的属性建立索引和参照完整性约束关系,学习插入,修改,删除基本表。

创建基本表时,首先要确定具体要创建几张基本表,再根据具体某张基本表确定该表的具体属性,为每个属性确定数据类型,再跟数据间的关系确定表的主键和外键。基本表建立完成后,根据基本表的数据类型插入具体的数据

再插入数据时,对于日期的插入总是不会,后来在通过同学帮助,并且我也通过查资料,最终解决了这个问题。

实验二:数据操纵语言

[ 实验日期 ] 年月日

[ 实验目的 ]

在实验一的基础上,熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。

[ 实验内容 ]

2. SQL数据操纵语句:

例2-2:(多行插入) 将表Student中在计算机系(‘CS’)的学生数据插入到表Student_Temp中。

INSERT INTO Student_Temp(SNO,SNAME,SD,SA)

SELECT SNO,SNAME,SDEPT,SAGE FROM Student

例2-3:(利用查询来实现表的定义与数据插入) 求每一个学生的平均成绩,

把结果存入数据库表Student_Gr中。

CREATE TABLE Student_Gr(

SNO CHAR(8) NOT NULL,

SAVG NUMBER(5,2)

)

INSERT INTO Student_Gr(SNO,SAVG)

SELECT SNO,AVG(SCORE)

FROM Score

GROUP BY SNO

例2-4: (修改数据) 将Student_Temp表中所有学生的年龄加2。

UPDATE Student_Temp SET SA=SA+2

例2-5: (修改数据) 将Course表中‘程序设计’课时数修改成与‘数据结构’的课时数相同。

UPDATE Course SET CTIME= ( SELECT CTIME FROM Course WHERE CNAME='数据结构')

WHERE CNAME='程序设计'

例2-6: (插入数据) 向Score表中插入数据(‘98001’, ‘001’, 95),根据返回信息解释其原因。

INSERT INTO Score VALUES('98001','001',95)

因为Score表中的SNO字段是根据Student中的SNO建立的

例2-7: (插入数据) 向Score表中插入数据(‘97001’, ‘010’, 80),根据返回信息解释其原因。

因为Score表中的CNO字段是根据Course中的CNO建立的,Course表中并没有课程号是010的

例2-8: (删除数据) 删除Student表中学号为‘96001’的学生信息,根据返回信息解释其原因。

DELETE FROM STUDENT WHERE SNO=’96001’

因为Student表中学号已经被别的表作为外键,不可以被删除,违反完整约束条件

例2-9: (删除数据) 删除Course表中课程号为‘003’的课程信息,根据返回信息解释其原因。

因为Course表中课程号已经被别的表作为外键,不可以被删除,违反完整约束条件

例2-10: (删除数据) 删除学生表Student_Temp中学号以96打头的学生信息。

(此操作后,注意用ROLLBACK回退可能更新的数据)

DELETE FROM Student_Temp WHERE SNO LIKE '96%'

例2-11: (删除数据) 删除数据库表Student_Temp中所有学生的数据。

DELETE FROM Student_Temp WHERE 1!=0;

例2-12:(删除表) 删除数据库表Student_Temp和Student_Gr。

DROP TABLE Student_Temp

DROP TABLE Student_Gr; [ 实验要求 ]

对数据库表进行插入、修改和删除数据的操作。

[ 实验方法 ]

①按照附录中的操作步骤进行客户端的配置;

②将实验需求用SQL语句表示;③执行SQL语句;

④查看执行结果,如果结果不正确,进行修改,直到正确为止。

[实验总结 ]

创建基本表时,首先要确定具体要创建几张基本表,再根据具体某张基本表确定该表的具体属性,为每个属性确定数据类型,再跟数据间的关系确定表的主键和外键。基本表建立完成后,根据基本表的数据类型插入具体的数据

再插入数据时,对于日期的插入总是不会,后来在通过同学帮助,并且我也通过查资料,最终解决了这个问题。并且我学会了对基本表结构的一些基本操作,这对我以后对Oracle的学习都有很大帮助,此次试验让我受益匪浅

实验三:数据查询语言

[ 实验日期 ] 年月日

[ 实验目的 ]

体会SQL语言数据查询功能的丰富和复杂。

[ 实验内容 ]

3. SQL数据查询语句:

例3-1: (选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。

SELECT SNO,SNAME,SSEX,SAGE FROM Student

例3-2: (不选择重复行) 求选修了课程的学生学号。

SELECT DISTINCT SNO FROM Score WHERE CNO IS NOT NULL

例3-3: (选择表中的所有列) 求全体学生的详细信息。

SELECT * FROM Student

例3-4: (使用表达式) 求全体学生的学号、姓名和出生年份。

SELECT SNO,SNAME,2011-SAGE AS "YEAR OF BIRTH" FROM Student

例3-5: (使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。SELECT SNO AS"学号",2011-SAGE AS "出生年份" FROM Student

例3-6: (比较大小条件) 求年龄大于19岁的学生的姓名和年龄。

SELECT SNAME,SAGE FROM Student WHERE SAGE>19

例3-7: (比较大小条件) 求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄。SELECT SNAME,SDEPT,SAGE FROM Student WHERE SDEPT IN('CS','IS')

例3-8: (确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。SELECT SNO,SAGE FROM Student WHERE SAGE BETWEEN 19 AND 22

例3-9: (确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。

SELECT SNO,SAGE FROM Student WHERE SAGE NOT BETWEEN 19 AND 22

例3-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。

SELECT * FROM Student WHERE SDEPT IN('MA','CS')

例3-11:(确定集合条件) 求不是数学系、计算机系的学生信息。

SELECT * FROM Student WHERE SDEPT NOT IN('MA','CS')

例3-12:(匹配查询) 求姓名是以“李”打头的学生。

SELECT SNAME FROM Student WHERE SNAME LIKE '李%'

例3-13:(匹配查询) 求姓名中含有“志”的学生。

SELECT SNAME FROM Student WHERE SNAME LIKE '%志%'

例3-14:(匹配查询) 求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。

SELECT SNAME FROM Student WHERE SNAME LIKE '%马__'

例3-15:(匹配查询) 求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、

课程号和成绩。

SELECT SNO,CNO,SCORE FROM Score

WHERE CNO IN ('001','003') AND SCORE BETWEEN 80 AND 90 AND SNO LIKE '96%'

例3-16:(匹配查询) 求课程名中包含’_’字符的课程号、课程名和学时数。

SELECT CNO,CNAME,CTIME FROM Course WHERE CNAME LIKE '%A_%' ESCAPE'A'

例3-17:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。

SELECT SNO,CNO FROM Score WHERE SCORE IS NULL

例3-18:(控制行的显示顺序) 求选修003课程或004课程的学生的学号、课程号和分数,要求按课程号升序、

分数降序的顺序显示结果。

SELECT * FROM Score

WHERE CNO IN('003','004')

ORDER BY CNO ,SCORE DESC

例3-19:(组函数) 求学生总人数。

SELECT COUNT(*) FROM Student

例3-20:(组函数) 求选修了课程的学生人数。

SELECT COUNT(DISTINCT SNO) FROM Score

例3-21:(组函数) 求计算机系学生的平均年龄。

SELECT AVG(SAGE) FROM Student WHERE SDEPT='CS'

例3-22:(组函数) 求选修了课程001的最高、最低与平均成绩。

SELECT MAX(SCORE),MIN(SCORE),AVG(SCORE) FROM Score

WHERE CNO='001'

例3-23:(分组查询) 求各门课程的平均成绩与总成绩。

SELECT AVG(Score),SUM(SCORE) FROM Score

GROUP BY CNO

例3-24:(分组查询) 求各系、各班级的人数和平均年龄。

SELECT COUNT(SNO),AVG(SAGE) FROM Student

GROUP BY SDEPT,SCLASS

例3-27:(分组查询) 求学生人数不足3人的系及其相应的学生数。

SELECT SDEPT,COUNT(SNO) FROM Student

GROUP BY SDEPT

HAVING COUNT(SNO)<3

例3-28:(分组查询) 求各系中除01班之外的各班的学生人数。

SELECT SDEPT,SCLASS,COUNT(SNO) FROM Student

WHERE SCLASS!='01'

GROUP BY SDEPT,SCLASS

例3-29:(涉及空值的查询) 分别观察各组函数、行的显示顺序以及分组查询与空值的关系。

例3-30:(连接查询) 求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。

SELECT SNAME,CNAME,SCORE FROM Student,Course,Score

WHERE https://www.360docs.net/doc/f8835772.html,O='001'

AND (SCORE>90 OR SCORE<70)

AND https://www.360docs.net/doc/f8835772.html,O=https://www.360docs.net/doc/f8835772.html,O

AND Student.SNO=Score.SNO

例3-31:(连接查询与表的别名) 求选修了课程的学生的学生姓名、课程号和成绩。

SELECT SNAME,CNO,SCORE FROM Student,Score

WHERE Student.SNO=Score.SNO

例3-32:(自身连接查询) 求年龄大于’李丽’的所有学生的姓名、系和年龄。

SELECT X.SNAME,X.SDEPT,X.SAGE FROM Student X,Student Y

WHERE X.SAGE>Y.SAGE

AND Y.SNAME='李丽'

例3-33:(外部连接查询) 求选修了课程002或003的学生的学号、课程号、课程名和成绩,

要求必须将002和003课程的相关信息显示出来。

SELECT Score.SNO,https://www.360docs.net/doc/f8835772.html,O,https://www.360docs.net/doc/f8835772.html,AME,SCORE,CTIME FROM Course,Score

WHERE https://www.360docs.net/doc/f8835772.html,O IN ('002','003')

AND https://www.360docs.net/doc/f8835772.html,O=https://www.360docs.net/doc/f8835772.html,O(+)

例3-34:(子查询) 求与‘黎明’年龄相同的学生的姓名和系。

SELECT SNAME,SDEPT FROM Student

WHERE SAGE IN (

SELECT SAGE FROM Student WHERE SNAME='黎明')

例3-35:(子查询) 求选修了课程名为’数据结构’的学生的学号和姓名。SELECT SNO,SNAME FROM Student

WHERE SNO IN(

SELECT SNO FROM Score

WHERE CNO=(

SELECT CNO FROM Course

WHERE CNAME='数据结构') )

例3-36:(子查询ANY) 求比数学系中某一学生年龄大的学生的姓名和系。SELECT SNAME,SDEPT FROM Student

WHERE SAGE>ANY(SELECT SAGE FROM Student WHERE SDEPT='MA')

AND SDEPT<>'MA'

例3-37:(子查询ALL) 求比数学系中全体学生年龄大的学生的姓名和系。SELECT SNAME,SDEPT FROM Student

WHERE SAGE>ALL(SELECT SAGE FROM Student WHERE SDEPT='MA')

AND SDEPT<>'MA'

例3-38:(子查询EXISTS) 求选修了课程004的学生的姓名和系。

SELECT SNAME FROM STUDENT

WHERE EXISTS

( SELECT * FROM SCORE

WHERE CNO='004'

AND SNO=STUDENT.SNO

)

例3-39:(返回多列的子查询) 求与‘李丽’同系且同龄的学生的姓名和系。SELECT SNAME,SDEPT FROM Student

WHERE SDEPT=(

SELECT SDEPT FROM Student

WHERE SNAME='李丽' )

AND SAGE=(

SELECT SAGE FROM Student

WHERE SNAME='李丽' )

例3-40:(多个子查询) 求与‘‘黎明’同系,且年龄大于‘李丽’的学生的信息。SELECT * FROM Student

WHERE SDEPT IN(

SELECT SDEPT FROM Student

WHERE SNAME='黎明')

AND SAGE=(

SELECT SAGE FROM Student

WHERE SNAME='李丽')

例3-41:(子查询中使用表连接) 求数学系中年龄相同的学生的姓名和年龄。

SELECT X.SNAME,X.SAGE FROM Student X,Student Y

WHERE X.SAGE=Y.SAGE

AND X.SDEPT='MA'

AND Y.SDEPT='MA'

AND X.SNO<>Y.SNO

例3-42:(连接或嵌套查询) 检索至少选修王成刚老师所授课程中一门课程的女学生姓名。

SELECT SNAME FROM Student

WHERE SNO IN(

SELECT SNO FROM SCORE

WHERE CNO IN (

SELECT CNO FROM Teach

WHERE TNAME='王成钢')

AND SSEX='女'

)

例3-43:(嵌套与分组查询) 检索选修某课程的学生人数多于3人的教师姓名。

SELECT TNAME FROM TEACH

WHERE CNO IN (

SELECT CNO FROM SCORE

GROUP BY CNO

HAVING 3

)

例3-44:(集合查询) 列出所有教师和同学的姓名和性别。SELECT SNAME AS "NAME",SSEX AS "SEX" FROM STUDENT UNION

SELECT TNAME,TSEX FROM TEACH

例3-45:(相关子查询) 求未选修课程004的学生的姓名。SELECT SNAME FROM STUDENT

WHERE NOT EXISTS

( SELECT * FROM SCORE

WHERE CNO='004'

AND SNO=STUDENT.SNO

)

例3-46:(相关子查询) 求选修了全部课程的学生的姓名。SELECT SNAME FROM Student

WHERE NOT EXISTS

( SELECT * FROM Course

WHERE NOT EXISTS

( SELECT * FROM Score

WHERE SNO=Student.SNO

AND CNO=https://www.360docs.net/doc/f8835772.html,O

)

)

例3-47:(相关子查询) 求至少选修了学生‘96002’所选修的全部课程的学生的学号。SELECT DISTINCT SNO FROM SCORE SC1

WHERE NOT EXISTS(

SELECT * FROM SCORE SC2

WHERE SC2.SNO='96002'

AND NOT EXISTS(

SELECT * FROM SCORE SC3

WHERE SNO=SC1.SNO

AND CNO=https://www.360docs.net/doc/f8835772.html,O

))

例3-48:(相关子查询) 求成绩比所选修课程平均成绩高的学生的学号、课程号、和成绩。SELECT SNO,CNO,SCORE FROM SCORE SC1

WHERE EXISTS(

SELECT * FROM SCORE SC2

GROUP BY CNO

HAVING SC1.SCORE>AVG(SCORE)

AND CNO=https://www.360docs.net/doc/f8835772.html,O

)

例3-49:(相关子查询) 查询被一个以上的学生选修的课程号。

select CNO from COURSE

where exists

(select * from SCORE

group by CNO

having count(SNO)>1

AND CNO=https://www.360docs.net/doc/f8835772.html,O)

例3-50:(相关子查询) 查询所有未选课程的学生姓名和所在系SELECT SNAME,SDEPT FROM STUDENT

WHERE NOT EXISTS(

SELECT * FROM SCORE

WHERE SNO=STUDENT.SNO)

[ 实验要求 ]

对数据库表进行各种查询操作。

[ 实验方法 ]

①将实验需求用SQL语句表示;

②执行SQL语句;

③查看执行结果,如果结果不正确,进行修改,直到正确为止。

[实验总结 ]

此次实验练习使用了SQL语句按所给要求在基本表里面进行查找,实验涉及到选择表中的若干列、不选择重复行、选择表中的所有列、使用表达式、使用列的别名、比较大小条件、确定范围条件、确定集合条件、匹配查询、空值查询、控制行的显示顺序、组函数、分组查询、连接查询、自身连接查询、外部连接查询、子查询、连接或嵌套查询、嵌套与分组查询、集合查询、相关子查询。使用SQL语句进行查询,首先要对查询的要求进行分析,这需要好的逻辑,能够正确分析问题,对于复杂的问题运用相关的查询语句逐层进行剖析,一步步整理出层次。在语句书写时应注意书写格式,这样能很清晰的看出语句的层次,这样也有利于修改

以前对SQL语句掌握不熟练,通过这次试验,使我对查询语句有了更深的体会。在这之前,对相关子查询几乎不了解,通过这次试验,我已经基本掌握了。总而言之,这次上机实验,真是受益匪浅,让我学到了很多东西。

实验四:视图、授权控制与事务处理

[ 实验日期 ] 年月日

[ 实验目的 ]

通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能。

[ 实验内容 ]

4. SQL视图的定义与操纵:

例4-1: (建立视图) 建立计算机系的学生的视图STUDENT_CS。

CREATE VIEW STUDENT_CS AS SELECT * FROM Student

WHERE SDEPT='CS'

例4-2: (建立视图) 建立由学号和平均成绩两个字段的视图STUDENT_GR。

CREATE VIEW STUDENT_GR(SNO,GAVG)

AS SELECT SNO,AVG(score) FROM Score

GROUP BY SNO

例4-3: (视图查询) 利用视图STUDENT_CS,求年龄大于19岁的学生的全部信息。

SELECT * FROM STUDENT_CS

WHERE SAGE>19

例4-4: (视图查询) 利用视图STUDENT_GR,求平均成绩为88分以上的学生的学号和平均成绩。

SELECT SNO,GAVG FROM STUDENT_GR

WHERE GAVG>88

例4-5: (视图更新) 利用视图STUDENT_CS,增加学生( ‘96006’,‘张然’,‘CS’,‘02’,‘男’,19 )。

INSERT INTO STUDENT_CS VALUES('96006','张然','CS','02',19,'男')

例4-6: (视图更新) 利用视图STUDENT_CS,将学生年龄增加1岁。观察其运行结果并分析原因。

UPDATE STUDENT_CS SET SAGE=SAGE+1

因为年龄是按照基本表直接得来的,不需要计算,可以直接更改

例4-7: (视图更新) 利用视图STUDENT_GR,将平均成绩增加2分。观察其运行结果并分析原因。

UPDATE STUDENT_GR SET GAVG=GAVG+2

因为平均成绩是按照基本表计算得来的,不可以直接更改

例4-8: (视图更新) 删除视图STUDENT_CS中学号为‘96006’的学生的全部数据。

DELETE FROM STUDENT_CS WHERE SNO='96006'

例4-9: (视图更新) 删除视图STUDENT_GR的全部数据。

DELETE FROM STUDENT_GR WHERE 1!=2

例4-10:(删除视图) 删除视图STUDENT_CS和STUDENT_GR。

DROP VIEW STUDENT_CS;

DROP VIEW STUDENT_GR

5. SQL数据控制语句:

例5-1: (授权) 给左右邻近同学(用户)授予在表Student上的SELECT权限,并使这两

数据库实验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表 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)创建员工表Employee

《数据库原理与应用》实验题目及答案

《数据库原理与应用》实验作业布置 实验1 数据库的建立修改与删除 完成以下实验报告: 《数据库原理与应用》实验报告 实验1 数据库的建立修改与删除 二、实验环境 操作系统:Windows XP。 数据库管理系统:MS SQL Server 2000 或MS SQL Server 2008。 三、实验目的 1.熟悉SQL Server 2000上机环境,学会SQL Server 2000“企业管理器”以及“查询分析器”的启动与退出;或熟悉MS SQL Server 2008上机环境,学会SQL Server Management Studio的启动与退出。 2.掌握建立数据库的两种方法。 3.掌握查看和修改数据库的两种方法。 4.掌握删除数据库的两种方法。 四、实验内容 (一) 规定内容 1. 在用户方便的存储空间上建立存放用户数据库的文件夹。本实验在D盘根目录下建立文件夹:D:\SQL2000DB,再建立存放T_SQL源代码的文件夹:D:\SQL2000DB\T_SQL 2.利用企业管理器创建学生课程数据库ST,参数如表1.1所示。 3.利用企业管理器查看ST数据库的属性。 4.使用T-SQL语句建立学生-课程数据库ST,参数如表1.1所示。 5.使用T-SQL 语句建立数据库JXDB,参数如表1.2所示。

6.使用T-SQL语句为数据库JXDB添加文件组JX_Group2,并为此文件组添加1个数据文件JXDB_Data4;添加1个日志文件JXDB_log1。参数由用户自己设定。 7.使用T-SQL语句修改数据库JXDB中次数据文件JXDB_Data4的属性:文件初始大小改为5M,增长方式改为每次按20%增长。删除日志文件JXDB_log1。 8.使用T-SQL语句删除数据库JXDB。 (二) 自定内容 五、出现的问题及解决方法 实验2 表结构的建立修改删除及完整性约束条件定义 完成以下实验报告: 《数据库原理与应用》实验报告 一、实验题目 实验2 表结构的建立修改删除及完整性约束条件定义 二、实验环境 操作系统:Windows XP。 数据库管理系统:MS SQL Server 2000或MS SQL Server 2008。 三、实验目的 1.掌握建立、修改与删除表结构的两种方法。 2.掌握定义完整性约束条件的方法。 3.掌握利用企业管理器和使用T-SQL语句向表中插入记录的方法。 四、实验内容 (一) 规定内容 1.对学生课程数据库ST进行完整性约束条件规划设计。 设计结果如表2.1所示。

数据库实验四作业及答案

实验4数据查询 一、实验目的 1.掌握使用Transact-SQL的SELECT语句进行基本查询的方法。 2.掌握使用SELECT语句进行条件查询的方法。 3.掌握嵌套查询的方法。 4.掌握多表查询的方法。 5.掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。 6.掌握联合查询的操作方法。 7.掌握数据更新语句INSERT INTO、UPDATE、DELETE的使用方法。 二、实验准备 1.了解SELECT语句的基本语法格式和执行方法。 2.了解嵌套查询的表示方法。 3.了解UNION运算符的用法。 4.了解SELECT语句的GROUP BY和ORDER BY子句的作用。 5.了解IN、JOIN等子查询的格式。 6.了解INSERT INTO、UPDATE、DELETE的格式与作用。 三、实验内容及步骤 0. 创建studentsdb数据库及其相应表,并录入数据。 启动查询分析器,运行下面链接的代码即可。 创建数据库代码 1.在studentsdb数据库中,使用下列SQL语句将输出什么? (1)SELECT COUNT(*) FROM grade (2)SELECT SUBSTRING(姓名,1,2) FROM student_info (3)SELECT UPPER('kelly')

(4)SELECT Replicate('kelly',3) (5)SELECT SQRT(分数) FROM grade WHERE 分数>=85 (6)SELECT 2,3,POWER(2,3) (7)SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE()) 2.在studentsdb数据库中使用SELECT语句进行基本查询。 (1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。 SELECT*FROM student_info (2)查询学号为0002的学生的姓名和家庭住址。 SELECT姓名,家庭住址FROM student_info WHERE学号=0002 (3)找出所有男同学的学号和姓名。 SELECT学号,姓名FROM student_info

数据库原理课后题答案

第1章 1.试述数据、数据库、数据库系统、数据库管理系统的概念。 答:(1)数据:描述事物的符号记录成为数据。数据的种类有数字、文字、图形、图像、声音、正文等。数据与其语义是不可分的。 (2)数据库:数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按照一定的数据模型组织。描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。 (3)数据库系统:数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发人具)、应用系统、数据库管理员构成。 (4)数据库管理系统:数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS的主要功能包括数据定义功能、数据操作功能、数据库的建立和维护功能。 6.试述数据库系统三级模式结构,这种结构的优点是什么? 答:数据库系统的三级模式机构由外模式、模式和内模式组成。 外模式,亦称子模式或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。 模式亦称逻辑模式,是数据库中全体数据呃逻辑结构和特征的描述,是所有用户的公共数据视图。模式描述的是数据的全局逻辑结构。外模式涉及的是数据的内部逻辑结构,通常是模式的子集。

内模式,亦称存储模式,是数据在数据库内部的表示,即对数据的物理结构和存储方式的描述。 数据库系统的三级模式是对数据的三个抽象级别,它对数据的具体组织留给DBMS管理,使用户能逻辑抽象地处理数据,而不必关心数据在计算机中的表示和存储。 为了能够在内部实现这三个抽象层次的联系和转换,数据库系统在这三级模式之间提供了两层映像:外模式∕模式映像和模式∕内模式映像。正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。 7.定义并解释下列术语。 外模式:亦称子模式或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。 内模式:亦称存储模式,是数据在数据库内部的表示,即对数据的物理结构和存储方式的描述。 模式:亦称逻辑模式,是数据库中全体数据逻辑结构和特征的描述,是所有用户的公共数据视图。模式描述的是数据的全局逻辑结构。外模式涉及的是数据的内部逻辑结构,通常是模式的子集。 DDL:数据库定义语言,用来定义数据库模式、外模式、内模式的语言。DML:数据操纵语言,用来对数据库中数据进行查询、插入、删除和修改的语句。 8.什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么

数据库实验题目和答案

按照如下方式重新定义四张表: 定义新的books表,其所拥有的属性与属性类型与原有的books表一致 以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供约束名 定义属性category为”非空” ,同时在定义的时候必须提供约束名 create table Books( bookId number(9,0) constraint BooksKey primary key, title varchar(80), author varchar(40), year integer, category varchar(15) constraint B1 not null ); commit; 定义新的customers表,其所拥有的属性与属性类型与原有的customers表一致 以表级完整性的方式定义属性cid为主码 以列级完整性的方式定义属性cname为”唯一”,同时在定义的时候必须提供约束名 create table Customers ( cid number(9,0), cname char(40) constraint C1 unique, age integer, primary key(cid) ); commit; 定义新的purchases表,其所拥有的属性与属性类型与原有的purchases表一致 定义属性cid与bookId为主码,同时在定义的时候必须提供约束名 以列级完整性的方式定义属性bookId为外码,它参照Books表的主码,同时在定义的时候必须提供约束名。当删除Books表中的某一本书时,级联删 除与它相关的购买记录 以表级完整性的方式定义属性cid为外码,它参照customers表,同时在定义的时候必须提供约束名。当删除customers表中的某个顾客时,如果存在 与该客户相关的购买记录,拒绝删除。 create table Purchases( cid number(9,0), bookId number(9,0)

数据库原理实验报告(5)

南京晓庄学院 《数据库原理与应用》课程实验报告 实验五嵌套子查询设计实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)掌握多表查询和子查询的方法。 (2)熟练使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 (3)理解不相关子查询和相关子查询的实现方法和过程。 2.实验要求 (1)针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下查询操作: a)查询选修了数据结构与算法的学生学号和姓名。 b)查询07294002课程的成绩低于孙云禄的学生学号和成绩。 c)查询和孙云禄同年出生的学生的姓名和出生年份。 d)查询其他系中年龄小于数学与信息技术学院年龄最大者的学生。 e)查询其他系中比数学与信息技术学院学生年龄都小的学生。 f)查询同孙云禄数据库原理与应用课程分数相同的学生的学号和姓名。 g)查询选修了07294002课程的学生姓名。 h)查询没有选07294002课程的学生姓名。 i)查询同时选修了07295006和07295007课程的学生的学号。 j)查询所有未授课的教师的工号、姓名和院系,结果按院系升序排列。 扩展实验: a)查询和10060101选修的全部课程相同的学生的学号、课程号、期末考试 成绩。 b)查询至少选了10060101选修的全部课程的学生的学号。 c)查询年龄比所在院系平均年龄小的学生的学号、姓名、年龄、院系,按 院系和年龄升序排列。 d)查询每门课都在80分以上的学生的学号和姓名。 (2)在SQL Server Management Studio中新建查询,尽可能用多种形式表示实验中的查询语 句,并进行比较。 (3)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 将调试成功的T-SQL语句写在下方(标明题号)。

数据库实验五题目答案

实验五 实验5.1 数据查询 1)要求 以School数据库为例,在该数据库中存在四表格,分别为: ●表STUDENTS(sid, sname, email, grade); ●表TEACHERS(tid, tname, email, salary); ●表COURSES(cid, cname, hour); ●表CHOICES(no, sid, tid, cid, score) 在数据库中,存在这样的关系:学生可以选择课程,一个课程对应一个教师。在表CHOICES中保存学生的选课记录。 按以下要求对数据库进行查询操作: (1)查询年级为2001的所有学生的名称并按编号升序排列。 程序:Select sname from students where grade='2001' order by sid asc; (2)查询学生的选课成绩合格的课程成绩。 程序:Select score from choices where score>'59';

(3)查询课时是48或60的课程的名称。 程序:select cname from courses where hour='48'or hour='60'; (4)查询所有课程名称中含有data的课程编号。 程序:select cid from courses where cname like'%data%';

(5)查询所有选课记录的课程号(不重复显示)。 程序:select distinct cid from choices; (6)统计所有教师的平均工资。 程序:select avg(salary) from teachers;

《数据库原理与应用》实验报告书修改版(1)答案

《数据库原理与应用》实验报告书修 改版(1)答案 《数据库原理与应用》实验报告书班级:学号:姓名:教师:郑先容医药信息工程学院·数据决策2012年2月目录实验一利用ACCESS 创建数据库及熟悉SQL Server开发环境... 2 实验三数据库、表的创建............................................................... ... 6 实验五连接查询和嵌套查询................................................................ 12 实验七数据的插入、修改、删除.................................................... 18 实验九SQL Server数据库的安全性控制........................................ 21 实验十一熟悉Power Designer数据库设计软件................................ 24 实验十三Transact-SQL编

程................................................................ 27 实验十五存储过程的使用............................................................... ..... 30 第十章数据库的恢复技术作业............................................................ 33 《数据库原理与应用》实验报告实验一利用ACCESS创建数据库及熟悉SQL Server 开发环境一、实验目的1、熟知机房用机安全规则和实验报告的书写。2、掌握SQL Server 2005的安装,卸载以及相关服务的启动、退出。3、熟悉SQL Server Management Studio环境。4、掌握创建服务器组合注册服务器。5、初步了解数据库的概念; 6、初步了解SQL Server联机丛书的使用。 7、用ACCESS创建数据库,体会数据库的功能。注意:每次实验的指导视频,上课所需要的软件、数据库还有ppt。都可以在ftp://的“数据决策”->“数据库”->“2011-2012”文件夹下找到,以后每次实验相关的文件和数据

数据库实验四(含答案)

实验四使用SQL语句创建和删除数据库、表 一. 实验目的: 1、了解SQL Server 2005数据库的逻辑结构和物理结构。 2、掌握使用SQL 语句创建和删除数据库。 3、学会使用T-SQL语句创建表。 二. 实验准备 1.明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。 2.了解用SQL语句创建和删除数据库的基本语法。 3.是用查询分析器,完成用SQL语句创建和删除基本表。 三. 实验要求 1、熟练使用查询分析器进行数据库的创建和删除操作。 2、用查询分析器,完成用SQL语句创建和删除基本表。 3、完成实验报告。 四. 实验内容 一、数据库 1.以下是创建数据库userdb1的SQL语句, create database userdb1 on (name=userdb4_data,--数据文件的逻辑名称,注意不能与日志逻辑同名 filename='g:\xygl\userdb4.mdf' ,--物理名称,注意路径必须存在 size=5,--数据初始长度为5M maxsize=10,--最大长度为10M filegrowth=1)--数据文件每次增长1M log on ( name=userdb4_log, filename='g:\xygl\userdb4.ldf ' , size=2 , maxsize=5 , filegrowth=1) 运行上诉语句建立数据库userdb1

句,并建立“学生信息”数据库.(.mdf的名字可以修改) 3.数据库的修改(alter database 数据库名add file),将一个大小为10MB 的数据文件mrkj添加到userdb1的数据库中,该数据文件的大小为10MB,最大的文件大小为100MB,增长速度为2MB,物理地址与原有的mdf,ldf文件放在一起。 alter database 数据库名 add file() 注括号内格式同下: ( name=userdb4_log, filename='g:\xygl\userdb4.ldf ' , size=2 , maxsize=5 ,

数据库试验答案

计算机与信息学院 数据库实验报告 专业班级 学生姓名及学号 课程教学班号 任课教师 实验指导教师 实验地点 2012 ~2013 学年第二学期

实验1 使用向导创建和删除数据库 一、实验目的 1.熟悉SQL Server 中SQL Server Management Studio的环境 2.了解SQL Server 数据库的逻辑结构和物理结构 3.掌握使用向导创建和删除数据库的方法 二、实验要求 1.熟练使用SSMS进行数据库的创建和删除操作。 2.完成实验报告。 三、实验内容 设有一学籍管理系统,其数据库名为“EDUC”。 初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长; 日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。 日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。 四、实验步骤

1.使用SQL Server Management Studio(简称SSMS)创建数据库。 (1)启动SSMS 在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。如果身份验证选择的是“混合模式”,则要输入sa的密码。 (2)建立数据库 在“对象资源管理器”窗口,建立上述数据库EDUC。在数据库节点上右击选择新建。同时建立一个同样属性的数据库EDUC1。

数据库实验2-1答题文件(答案)

第2章VisualFoxPro入门 实验2-1 初识VFP 实验要求 打开其中的“实验2-1答题文件.doc”文件,简答或按题目要求实现如下操作。 实验 1.VFP的安装与卸载 ●卸载VFP操作步骤: (1)单击“开始”按钮,单击打开“控制面板”,再双击“添加或删除程序”打开“添加或删除程序”面板,选中需要卸载(删除)的VFP程序,单击“更改/删除”按钮,如图1-1-1所示。按照提示步骤即可完成卸载(删除)VFP程序的操作。 图1-1-1卸载(删除)VFP程序 ●安装VFP操作步骤: (1)双击老师提供的资料“VFP60.RAR”,解压缩到文件夹VFP60,双击文件夹VFP60中的SETUP.EXE安装图标,开始进行安装,如图1-1-2所示。 图1-1-2卸载(删除)VFP程序 1

(2)单击“下一步”按钮,出现如1-1-3所示界面,单击选中“接受协议”。 图1-1-3VFP程序用户许可协议 (3)单击“下一步”按钮,出现如1-1-4所示界面,要求用户输入产品的ID号,如果正确,“下一步”按钮变为可选状态。 图1-1-4输入产品的ID号 (4)单击“下一步”按钮,选择公用安装文件夹的位置,默认安装路径是“C:\Program Files\Microsoft Studio\Common”,用户可单击“浏览”按钮,重新指定路径,如图1-1-5所示。 2

图1-1-5选择安装目标文件夹 (5)单击“下一步”按钮,进入VFP的安装程序界面,单击“继续”按钮,按提示完成一系列操作,如图1-1-6所示。 图1-1-6安装程序界面 (6)安装结束后,显示安装成功的界面,如图1-1-7所示。单击“确定”按钮完成安装。 图1-1-7安装成功界面 2.VFP的启动方法 用不同的方法启动VFP,认识VFP6的主窗口,了解VFP的菜单栏。 (1)VFP的启动方法有: 方法一:单击“开始”按钮,选择【程序】→【Microsoft Visual FoxPro 6.0】→【Microsoft Visual FoxPro 6.0】,即可启动VFP程序。 方法二:直接双击桌面上的快捷图标“Microsoft Visual FoxPro 6.0”即可启动VFP 程序。 (2)Visual FoxPro主窗口界面即Visual FoxPro的工作环境,启动Visual FoxPro 6.0后,打开如图1-1-8所示的界面,了解VFP的菜单栏。 3

数据库实验答案

实验3 使用T-SQL语言完成单表查询 一、实验目的 掌握使用T-SQL语言完成单表查询 掌握常用谓词的用法 掌握where子句的用法 掌握order by 子句的用法 掌握group by 子句和having短语的用法 实验环境 Microsoft SQL Server 2000。 实验内容和要求 查询全体学生的详细信息。 查询所有课程的详细信息。 查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。 查询已被学生选修了的课程的编号。 查询系别编号为“d002”的学生的姓名和性别。 查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。 查询系别编号为d001、d002和d003的学生的学号和姓名。 查询课程名为“C_”开头的课程名和学分。 某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。 查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。 查询学校所开设的总的课程数。 计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。 查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分”。 求各个系别的编号以及各系的人数。 查询选课人数大于等于2人的课程编号以及选课的人数。 查询学生2选修课程的总成绩对应的列名为“总成绩”,并显示出学号。 查询有2门以上课程是80分以上的学生的学号及课程数。 查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列。 实验1 使用T-SQL语言建库、建表 实验2 向表中增、删、改数据 实验目的 掌握使用T-SQL建库、建表、修改表; 掌握使用T-SQL对表中数据进行插入、删除和修改。 实验环境 Microsoft SQL Server 2000。 实验内容和要求 建立数据库STDB 在数据库STDB中建立四个表:

同济大学数据库实验5答案

create proc procA as select* from student exec proca create proc procB @_year char(4) as select* from student where year(birthday )=@_year declare @_year char(4) set @_year ='1994' exec procB@_year create proc procf @_Snum char(30) as select s.snum ,avg(score)as平均成绩,count(https://www.360docs.net/doc/f8835772.html,um)as选秀门数,sum(1-score/60)as不及格门数 from student s,course c,sc,sections st where s.snum =sc.snum and sc.secnum =st.secnum and https://www.360docs.net/doc/f8835772.html,um =https://www.360docs.net/doc/f8835772.html,um and S.Snum =@_Snum group by S.Snum DECLARE @_SUNM char(30) set @_SUNM ='s001' exec procf@_sunm CREATE PROC Procd @_snum char(4),@_avg int out,@_selected_course int out,@_failed_course int out AS SELECT @_avg=AVG(score),@_selected_course=COUNT(cnum),@_failed_course=sum(1-score/60) FROM sc JOIN sections ON sc.secnum =sections.secnum WHERE snum=@_snum

数据库实验7-1答题文件(答案)

第7章SQL结构化查询语言 实验7-1 SQL基本操作 实验要求 1.将服务器上的数据源文件夹“data7-1”下载到本地盘(比如E:\); 2.打开其中的“实验7-1答题文件.doc”文件,边做实验边将各题的操作步骤或所用的命令记录在该文件中。实验完成后将实验完成后将整个文件夹上传到你的“作业”文件夹中。 3、在答题时将答案的文字格式加上蓝色加粗。 实验步骤 1.“学生.dbf”的SQL语言的简单查询 操作步骤: 在命令窗口中依次输入如下命令: (1) 使用set default to 命令设置默认路径: set default to E:\ data7-1 (2) 查询“学生.dbf”中的所有字段的内容: SELECT * FROM 学生 (3) 查询“学生.dbf”中的“姓名”、“出生日期”和“性别”字段的内容: SELECT 姓名,出生日期,性别FROM 学生 (4) 查询“学生.dbf”中的所有女生的记录内容,并按年龄降序排列: SELECT * FROM 学生WHERE 性别="女" ORDER BY 年龄DESC (5) 查询“学生.dbf”中出生日期在1983年1月1日至1984年1月1日的所有学生“姓名”、“出生日期”和“性别”字段的内容: SELECT 姓名,性别,出生日期FROM 学生; WHERE 出生日期>= date(1983,1,1) ; AND 出生日期<= date(1984,1,1) 或: SELECT 姓名,性别,出生日期FROM 学生; WHERE 出生日期between date(1983,1,1) and date(1984,1,1) 或: 70

mysql数据库实验答案

实验一创建、修改数据库和表结构 1、用create建立教学数据库的五个基本表: (1)学生表(学号,姓名,性别,年龄),student((Sno, sname,ssex,sage) ; (2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ; (3)选课表(学号,课程号,成绩),SC (Sno,, Cno, grade ) ; (4) 教师表(教师号,姓名,性别,出生年月,系部,职称,地址), T(Tno,Tname,ssex,birthday,dept,title,address) ; (5) 工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj); Create Database Student default character set utf8 default COLLATE utf8_bin;

Use Student; Create Table Student( SNo c har(20) primary key, SName char(20) , SSex char(4) default '男', SAge int ) ENGINE=InnoDB; Create Table Course( CNo c har(20) primary key, CName char(20) NOT NULL,

CRedit f loat ) ENGINE=InnoDB; Create Table SC( SNo c har(20) NOT NULL, CNo c har(20) NOT NULL, Grade float, Primary Key(SNo, CNo), Foreign Key(SNo) References Student(SNo) On Delete Cascade, Foreign Key(CNo) References Course(CNo) )ENGINE=InnoD B;

数据库实验1-6参考答案

实验一SQL Server使用初步 一、实验目的 1、熟悉SQL Server2000的组成及基本功能。 2、掌握SQL Server2000的登录及注册。 3、掌握SQL Server2000企业管理器的使用方法。 4、熟悉查询分析器的基本使用。 二、实验预习 1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些? 答:DBMS是位于用户和操作系统之间的一层数据管理软件。常见的DBMS主要有:Oracle、db2、SQL Server、MySQL、PostgreSQL、SQLite、Firebird等等。 2、SQL Server 2000(2005)的安装步骤? 答:以企业版安装为例,步骤为: 将企业版安装光盘插入光驱后,出现以下提示框。请选择“安装 SQL Server 2000 组件” 出现下面对话框后,选择 "安装数据库服务器" 。 选择 "下一步",然后选择 "本地计算机" 进行安装。 在 "安装选择" 窗口,选择 "创建新的SQL Server实例..."。对于初次安装的用户,应选用这一安装模式,不需要使用 "高级选项" 进行安装。 "高级选项" 中的内容均可在安装完成后进行调整。 在 "用户信息" 窗口,输入用户信息,并接受软件许可证协议。 在“安装定义”窗口,选择“服务器和客户端工具”选项进行安装。 在“实例名”窗口,选择“默认”的实例名称。 在“安装类型”窗口,选择“典型”安装选项,并指定“目的文件夹”。 在 "服务账号" 窗口,请选择 "对每个服务使用统一账户..." 的选项。 在 "身份验证模式" 窗口,选择 "混合模式..." 选项,并设置管理员"sa"账号的密码。 最后按“下一步”即可完成安装。 检测安装:如果安装成功,应该能成功启动SQL Server,并且能和SQL Server 客户端连接上。 可以通过服务管理器来进行启动。

数据库上机实验题目和答案

试用SQL的查询语句表达下列查询: 1.检索王丽同学所学课程的课程号和课程名。 select Cno ,Cname from c where Cno in (select cno from sc where sno in (select sno from s where sname='王丽' )) 2.检索年龄大于23岁的男学生的学号和姓名。 select sno,sname from s where sex='男' and age>23 3.检索‘c01’课程中一门课程的女学生姓名 select sname from s where sex='女' and sno in (select sno from sc where cno='c01') 4.检索s01同学不学的课程的课程号。 select cno from c where cno not in (select cno from sc where sno ='s01') 5.检索至少选修两门课程的学生学号。 select sc.sno from s,sc where s.sno=sc.sno group by sc.sno having count(https://www.360docs.net/doc/f8835772.html,o)>=2 6.每个学生选修的课程门数。 解法一: select so.sno sno,https://www.360docs.net/doc/f8835772.html,ount,s.sname from(select sc.sno sno,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno ) so,s where s.sno=so.sno 解法二: select sc.sno sno,s.sname,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno,sname

数据库实验5答案

实验五:数据库综合查询 一、实验目的 1.掌握SELECT语句的基本语法和查询条件表示方法; 2.掌握查询条件种类和表示方法; 3.掌握连接查询的表示及使用; 4.掌握嵌套查询的表示及使用; 5.了解集合查询的表示及使用。 二、实验环境 已安装SQL Server企业版的计算机(120台); 具有局域网环境,有固定IP; 三、实验学时 2学时 四、实验要求 1.了解SELECT语句的基本语法格式和执行方法; 2.了解连接查询的表示及使用; 3.了解嵌套查询的表示及使用; 4.了解集合查询的表示及使用; 5.完成实验报告; 五、实验内容及步骤 1.利用Transact-SQL嵌套语句实现下列数据查询操作。 1) 查询选修了计算机体系结构的学生的基本信息。 select*from student where Sno in(select Sno from course where Cno in(select Cno from sc where Cname='计算机体系结构')) 2) 查询年龄比李勇小的学生的学号和成绩。 select a.sno,grade from student a,course where a.sno=course.sno and sage<(select sage from student where sname='李勇') 3) 查询其他系中比系编号为‘D1’的学生中年龄最小者要大的学生的信息。select*from student where dnum<>'D1'AND SAGE>(select min(sage)from student where dnum='D1') 4) 查询其他系中比系编号为‘D3’的学生年龄都大的学生的姓名。 select*from student where dnum<>'D3'AND SAGE>all(select sage from student where dnum='D3')

数据库考试题目+答案

一.选择题 1.(D )是存储在计算机内有结构的数据集合。 A.数据库系统 B.数据库管理系统 C. 数据模型 D. 数据库 2.不属于Access对象的是(B ) A.表 B.文件夹 C.窗体 D.查询 3. Access数据库的类型是( C )。 A.层次数据库 B.网状数据库 C.关系数据库 D.面向对象数据库4.在以下叙述中,正确的是( D ) A.ACCESS只能使用系统菜单创建数据库应用系统 B.ACCESS不具备程序设计能力 C.ACCESS只具备了模块化程序设计能力 D.ACCESS具有面向对象的程序设计能力,并能创建复杂的数据库应用系统 5. “学号”字段中含有“1”、“2”、“3”……等值,则在表设计器中,该字段可以设置成数字类型,也可以设置为( B )类型 A、货币 B、文本 C、备注 D、日期/时间 6. E-R模型属于( A )。 A.信息(概念)模型 B.层次模型 C.关系模型 D.网状模型 7.在数据表视图中,不可以( A )。

A.修改字段的类型 B.修改字段的名字 C.删除一个字段 D.删除一条记录 8.在关系数据库中,表与表之间的联系是通过如下哪项实现的(B )。 A .实体完整性规则 B .参照完整性规则 C .用户自定义的完整性规则 D .值域 9.在下列 SQL 语句中,属于数据控制的语句是( B )。 A . CREATE , DROP , DELETE , ALTER B . GRANT , REVOKE C . SELECT , UPDATE , DELETE , INSERT D . CREAT E , DROP ,ALTER 10. Access表中字段的数据类型不包括( C )。 A.文本 B.备注 C.通用 D.日期/时间 11.将表“学生表”的记录复制到表“学生名单”中,且不删除表“学生表”中的记录,所使用的查询方式是( C )。 A. 删除查询 B. 更新查询 C. 追加查询 D. 交叉表查询 12. 条件“性别=“女”AND工资额>2000“的意思是( A )。 A. 性别为“女”并且工资额大于>2000的记录 B. 性别为“女”或者且工资额大于>2000的记录 C. 性别为“女”并非工资额大于>2000的记录 D. 性别为“女”或者工资额大于>2000的记录,且而者择一的记录

数据库原理 实验2解答

(1)查询性别为“男”的所有学生的名称并按学号升序排列。 SELECT Sname FROM Students WHERE Ssex='男' ORDER BY Sno (2)查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。积分的计算公式为:[1+(考试成绩-60)*0.1]*Ccredit。考试成绩>=60 否则=0 SELECT Sno, Tno, https://www.360docs.net/doc/f8835772.html,o, Score, 'Point of Score', CONVERT(FLOAT(1), (Score-60)*0.1*Ccredit+Ccredit) FROM Courses, Reports WHERE Score>=60 AND https://www.360docs.net/doc/f8835772.html,o=https://www.360docs.net/doc/f8835772.html,o UNION SELECT Sno, Tno, https://www.360docs.net/doc/f8835772.html,o, Score, 'Point of Score', 0 FROM Courses, Reports WHERE https://www.360docs.net/doc/f8835772.html,o=https://www.360docs.net/doc/f8835772.html,o AND (Score < 60 OR Score IS NULL) (3)查询学分是3或4的课程的名称。 SELECT Cname FROM Courses WHERE Ccredit IN('3','4') (4)查询所有课程名称中含有“算法”的课程编号。 SELECT Cname FROM Courses WHERE Cname LIKE '%算法%' /*查询得到算法分析与设计、数据结构与算法分析*/ (5)查询所有选课记录的课程号(不重复显示)。 SELECT DISTINCT Cno FROM Reports (6)统计所有老师的平均工资。 SELECT A VG(Tsalary) FROM Teachers (7)查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列。 SELECT Tno,A VG(Score) FROM Reports GROUP BY Tno ORDER BY A VG(Score) DESC (8)统计各个课程的选课人数和平均成绩。

数据库实验三作业及答案.docx

实验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的数据

相关文档
最新文档