数据库上机实验

数据库上机实验
数据库上机实验

附录 C 上机实验

C.1 第4 章上机实验

下列实验均使用SQL Server 的SSMS 工具实现。

1. 用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A):

数据库名为:学生数据库

主要数据文件的逻辑文件名为:Students_data ,存放在D:\Data 文件夹下(若D:

盘中无此文件夹,请先建立此文件夹,然后再创建数据库。),初始大小为:5MB ,

增长方式为自动增长,每次增加1MB 。

日志文件的逻辑文件名字为:Students_log ,也存放在D:\Data 文件夹下,初始大小

为:2MB ,增长方式为自动增长,每次增加10% 。

2. 选用已建立的“学生数据库”,写出创建满足表C-1 到4-4 条件的表的SQL 语句,并执行所

写代码。(注:“说明”部分不作为表定义内容)

表C-1 Student 表结构

列名说明数据类型约束Sno 学号普通编码定长字符串,长度为7 主键

Sname 姓名普通编码定长字符串,长度为10 非空

Ssex 性别普通编码定长字符串,长度为 2 取值范围:{男,女}

Sage 年龄微整型(tinyint )取值范围:15-45

Sdept 所在系普通编码不定长字符串,长度为20 默认值为“计算机系”

Sid Sdate 身份证号

入学日期

普通编码定长字符串,长度为

日期

10 取值不重

默认为系统当前日期

表C-2 Course 表结构

列名Cno

说明

课程号

数据类型

普通编码定长字符串,长度为10

约束

主键

Cname 课程名普通编码不定长字符串,长度为20 非空

Credit 学时数整型取值大于0

Salary 工资

定点小数,小数点前 4 位,小数点后 2 位

Semester 学分 小整型

表 C-3 SC 表结构 列名 Sno 说明 学号 数据类型

普通编码定长字符串,长度为 7

主键,引用 约束

Student

的外键 Cno 课程号 普通编码定长字符串,长度为 10

主键,引用 Course 的外键 Grade 成绩 小整型

取值范围为 0-100

表 C-4 Teacher 表结构

列名

说明 数据类型

约束 Tno 教师号 普通编码定长字符串,长度为 8 非空 Tname

教师名 普通编码定长字符串,长度为

10

非空

3. 写出实现如下功能的 SQL 语句,并执行所写代码,查看执行结果。

(1) ) 在 Teacher

表中添加一个职称列,列名为:

Title ,类

型为 nchar(4) 。

(2) ) 为 Teacher

表中的 Title 列增加取值范围约束,取值范围为:

{教授,副教授,讲师 }。

(3) ) 将 Course

表中 Credit 列的类型改为: tinyint 。

(4) ) 删除 Student

表中的 Sid 和 Sdate 列。

(5) ) 为 Teacher

表添加主键约束,其主键为:

Tno 。

C.2 第 5 章上机实验

本实验均在 SQL Server 的 SSMS 工具中实现。 首先在已创建的“学生数据库”中创建本章表 5-1~5-3 所示的 Student 、Course 和 SC 表,并插入表 5-4~5-6 所示数据, 然后编写实现如下操作的 SQL 语句,执行所写的语句,并查看执行结果。 1.

查询 SC 表中的全部数据。

2.

查询计算机系学生的姓名和年龄。

3.

查询成绩在 70~ 80 分的学生的学号、课程号和成绩。

4. 查询计算机系年龄在18~20 岁的男生姓名和年龄。

5. 查询C001 课程的最高分。

6. 查询计算机系学生的最大年龄和最小年龄。

7. 统计每个系的学生人数。

8. 统计每门课程的选课人数和最高成绩。

9. 统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。

10. 列出总成绩超过200 的学生的学号和总成绩。

11. 查询选了C002 课程的学生姓名和所在系。

12. 查询考试成绩80 分以上的学生姓名、课程号和成绩,并按成绩降序排列结果。

13. 查询与VB 在同一学期开设的课程的课程名和开课学期。

14. 查询与李勇年龄相同的学生的姓名、所在系和年龄。

15. 查询哪些课程没有学生选修,列出课程号和课程名。

16. 查询每个学生的选课情况,包括未选课的学生,列出学生的学号、姓名、选的课程号。

17. 查询计算机系哪些学生没有选课,列出学生姓名。

18. 查询计算机系年龄最大的三个学生的姓名和年龄。

19. 列出“V B”课程考试成绩前三名的学生的学号、姓名、所在系和VB 成绩。

20. 查询选课门数最多的前 2 位学生,列出学号和选课门数。

21. 查询计算机系学生姓名、年龄和年龄情况,其中年龄情况为:如果年龄小于18 ,则显

示“偏小;”如果年龄在18-22 ,则显示“合适”;如果年龄大于22 ,则显示“偏大”。

22. 统计每门课程的选课人数,包括有人选的课程和没有人选的课程,列出课程号,选课人

数及选课情况,其中选课情况为:如果此门课程的选课人数超过100 人,则显示“人多”;

如果此门课程的选课人数在40 ~100 ,则显示“一般”;如果此门课程的选课人数在 1 ~

40 ,则显示“人少”;如果此门课程没有人选,则显示“无人选” 。

23. 查询计算机系选了VB 课程的学生姓名、所在系和考试成绩,并将结果保存到新表

VB_Grade 中。

24. 统计每个系的女生人数,并将结果保存到新表Girls 中。

25. 用子查询实现如下查询:

(1 )查询选了“C001 ”课程的学生姓名和所在系。

(2 )查询通信工程系成绩80 分以上的学生的学号和姓名。

(3 )查询计算机系考试成绩最高的学生的姓名。

(4 )查询年龄最大的男生的姓名、所在系和年龄。

26. 查询C001 课程的考试成绩高于该课程平均成绩的学生的学号和成绩。

27. 查询计算机系学生考试成绩高于计算机系学生平均成绩的学生的姓名、考试的课程名和

考试成绩。

28. 查询VB 课程考试成绩高于VB 平均成绩的学生姓名和VB 成绩。

29. 查询没选VB 的学生姓名和所在系。

30. 查询每个学期学分最高的课程信息,列出开课学期、课程名和学分。

31. 查询每门课程考试成绩最高的学生信息,列出课程号、学生姓名和最高成绩,结果按课

程号升序排序,不包括没考试的课程。

32. 创建一个新表,表名为test ,其结构为(COL1, COL 2, COL 3 ),其中,

COL1 :整型,允许空值。

COL2 :普通编码定长字符型,长度为10,不允许空值。

COL3 :普通编码定长字符型,长度为10,允许空值。

试写出按行插入如下数据的语句(空白处表示是空值)。

COL1 COL2 COL3

B1

1 B

2 C2

2 B3

33. 利用23 题建立的VB_Grade 表,将信息管理系选了VB 课程的学生姓名、所在系和考

试成绩插入到VB_Grade 表中。

34. 将所有选修C001 课程的学生的成绩加10 分。

35. 将计算机系所有学生的“计算机文化学”的考试成绩加10 分。

36. 修改“V B”课程的考试成绩,如果是通信工程系的学生,则增加10 分;如果是信息管理

系的学生则增加 5 分,其他系的学生不加分。

37. 删除成绩小于50 分的学生的选课记录。

38. 删除计算机系VB 考试成绩不及格学生的VB 选课记录。

39. 删除“V B”考试成绩最低的学生的VB 修课记录。

40. 删除没人选的课程的基本信息。

C.3 第6 章上机实验

下列实验均使用SQL Server 的SSMS 工具实现。利用第 4 章上机实验创建的“学生数据库”中Student 、Course 和SC 表,完成下列实验。

1. 写出实现下列操作的SQL 语句,并执行所写代码。

(1)在Student 表上为Sname 列建立一个聚集索引,索引名为:IdxSno 。(提示:若执行创建索引的代码,请先删除该表的主键约束)

(2 )在Course 表上为Cname 列建立一个唯一的非聚集索引,索引名为:IdxCN

(3 )在SC 表上为Sno 和Cno 建立一个组合的聚集索引,索引名为:IdxSnoCno 。(提

示:若执行创建索引的代码,请先删除该表的主键约束)

(4 )删除Sname 列上建立的IdxSno 索引。

2. 写出创建满足下述要求的视图的SQL 语句,并执行所写代码。

(1 )查询学生的学号、姓名、所在系、课程号、课程名、课程学分。

(2 )查询学生的学号、姓名、选修的课程名和考试成绩。

(3 )统计每个学生的选课门数,要求列出学生学号和选课门数。

(4 )统计每个学生的修课总学分,要求列出学生学号和总学分(说明:考试成绩大于等于60 才可获得此门课程的学分)。

3. 利用第 2 题建立的视图,完成如下查询。

(1 )查询考试成绩大于等于90 分的学生的姓名、课程名和成绩。

(2 )查询选课门数超过 3 门的学生的学号和选课门数。

(3 )查询计算机系选课门数超过 3 门的学生的姓名和选课门数。

(4 )查询修课总学分超过10 分的学生的学号、姓名、所在系和修课总学分。

(5 )查询年龄大于等于20 岁的学生中,修课总学分超过10 分的学生的姓名、年龄、所在系和修课总学分。

4. 修改第 3 题(4 )定义的视图,使其查询每个学生的学号、总学分以及总的选课门数。

C.4 第7 章上机实验

利用第 5 章建立的学生数据库以及Student 、Coures 和SC 表,完成下列操作。

1. 创建满足如下要求的后触发型触发器。

(1 )限制学生的考试成绩必须在0-100 之间。

(2 )限制不能删除成绩不及格的考试记录。

(3 )限制每个学期开设的课程总学分不能超过20。

(4 )限制每个学生每学期选的课程不能超过 5 门。

2. 创建满足如下要求的存储过程。

(1 )查询每个学生的修课总学分,要求列出学生学号及总学分。

(2 )查询学生的学号、姓名、修的课程号、课程名、课程学分,将学生所在的系作为输入参数,执行此存储过程,并分别指定一些不同的输入参数值。

(3 )查询指定系的男生人数,其中系为输入参数,人数为输出参数。

(4 )删除指定学生的修课记录,其中学号为输入参数。

(5 )修改指定课程的开课学期。输入参数为:课程号和修改后的开课学期。

C.5 第11 章上机实验

利用第 4 、5 章建立的学生数据库和其中的Student 、Course 、SC 表,并利用SSMS 工具完成下列操作。

1. 用SSMS 工具建立SQL Server 身份验证模式的登录名:log1 、log2 和log3 。

2. 用log1 建立一个新的数据库引擎查询,在“可用数据库”下列列表框中是否能选中学生数据库?

为什么?

3. 用系统管理员身份建立一个新的数据库引擎查询,将log1 、log2 和log3 映射为学生数据库

中的用户,用户名同登录名。

4. 在log1 建立的数据库引擎查询中,现在在“可用数据库”下列列表框中是否能选中学生数据库?

为什么?

5. 在log1 建立的数据库引擎查询中,选中学生数据库,执行下述语句,能否成功?为什么?

SELECT * FROM Course

6. 在系统管理员的数据库引擎查询中,执行合适的授权语句,授予log1 具有对Course 表的查

询权限,授予log2 具有对Course 表的插入权限。

7. 用log2 建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?

INSERT INTO Course VALUES( 'C1001 ','数据库基础',4 ,5) 再执行下述语句,能否成功?为什么?

SELECT * FROM Course

8. 在log1 建立的数据库引擎查询中,再次执行下述语句:

SELECT * FROM Course

这次能否成功?但如果执行下述语句:

INSERT INTO Course VALUES( 'C103 ', '软件工程', 4, 5)

能否成功?为什么?

9. log3 建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?

CREATE TABLE

NewTable( C1 int,

C2 char(4))

10. 授予log3 在学生数据库中具有创建表的权限。

11. 在系统管理员的数据库引擎查询中,执行下述语句:

GRANT CREATE TABLE TO log3

GO

CREATE SCHEMA log3 AUTHORIZATION log3

GO

ALTER USER log3 WITH DEFAULT_SCHEMA = log3

12. 在log3 建立一个新的数据库引擎查询中,再次执行第9 题的语句,能否成功?为什么?

如果执行下述语句:

SELECT * NewTable

能否成功?为什么?

Welcome To Download !!! 欢迎您的下载,资料仅供参考!

数据库上机实验报告

数据库实验 (第三次) 题目1 实验内容: 1. 检索上海产的零件的工程名称; 2. 检索供应工程J1零件P1的供应商号SNO; 3. 检索供应工程J1零件为红色的供应商号SNO; 4. 检索没有使用天津生产的红色零件的工程号JNO; 5. 检索至少用了供应商S1所供应的全部零件的工程号JNO; 6. 检索购买了零件P1的工程项目号JNO及数量QTY,并要求对查询的结果按数 量QTY降序排列。

1 select jname from j where jno in (select jno from spj where sno in (select sno from s where city ='上海' ) ); 2 select sno from spj where jno ='j1'and pno ='p1' 3

selectdistinct sno from spj where pno in (select pno from p where color='红'and pno in (select pno from spj where jno ='j1' ) ); 4 selectdistinct jno from spj where pno notin (select pno from p where color ='红'and pno in (select pno from spj where sno in (select sno from s where city ='天津' ) ) )

5 select jno from spj where sno ='s1' 6 select jno,qty from spj where pno ='p1' orderby qty desc 四﹑思考题 1.如何提高数据查询和连接速度。 建立视图 2. 试比较连接查询和嵌套查询 有些嵌套查询是可以用连接来代替的,而且使用连接的方式,性能要比 嵌套查询高出很多 当查询涉及多个关系时,用嵌套查询逐步求解结构层次清楚,易于构造,具有结构化程序设计的优点。但是相比于连接运算,目前商用关系数据库管理系统对嵌套查询的优化做的还不够完善,所以在实际应用中,能够用连接运算表达的查询尽可能采用连接运算。

数据库原理上机实验指导

数据库原理上机实验指导 一、实验目的和要求 1.实验目的 力图通过本实践课程的学习,使学生掌握数据库管理系统的基本概念、操作方法和管理方法,能够根据用户应用需求设计出合理的数据库应用系统逻辑模型方案,并且实现之。 2.实验要求 本实践课程主要介绍Microsoft SQL Server 2000系统的基本概念、基本知识;讲述数据库管理系统的安装、操作、设计、管理等基本概念及其操作方法;学习如何创建和管理数据库系统的步骤,为承担DBA角色作好准备。重点要求掌握Transact-SQL语言,学会数据库应用系统逻辑模型的设计和实现。 要求学生实验前认真准备,实验后提供实验报告,给出详细实验结果以及设计依据。 实验报告的格式应采用统一封面,统一的实验报告纸。封面应包括:课程名称、实验序号、名称、专业、班级、姓名、同组实验者、实验时间。实验报告内容应包括:实验名称、目的、内容、实验步骤、实验记录、数据处理(或原理论证、或实验现象描述、或结构说明等)。 二、实验环境介绍 1.硬件设备要求 微型计算机,最好具有局域网环境 2.软件设备要求 Windows 2000或Windows XP操作系统; MS SQL Server 2000数据库管理系统。 三、实验内容和学时分配 1.实验内容 实验1:服务器管理 实验2:创建和管理数据库 实验3:Transact-SQL语言——数据查询 实验4:Transact-SQL语言——数据定义与数据更新 实验5:数据库安全与保护——用户管理和权限管理 实验6:数据库安全与保护——数据完整性 实验7:数据库安全与保护——数据库的一致性和并发性 实验8:数据库安全与保护——数据库的备份与恢复 实验9:存储过程和触发器 实验10:嵌入式SQL的使用

数据库上机实验

学号 12051134 姓名张宏源班级物联网1班上机实验四——SELECT语句基本格式的使用一、实习目的: 掌握SELECT的基本使用格式,能使用SQL Server对表作简单查询。 二、实习准备: 1.复习第三章3.4节中SELECT语句的基本使用格式。 2.复习SQL中五种库函数:AVG、SUM、MAX、MIN、COUNT; 3.完成习题三第12题中的各项操作的SQL语句。 三、实习内容: 1.验证习题三第12题中的各项操作的SQL语句。 ① 找出所有被学生选修了的课程号; Select Distinct Cno From Grade Order by Cno ②找出01311班女学生的个人信息; Select* From Student where Ssex='女'and Clno=01311 ③找出01311班、01312班的学生姓名、性别、出生年份; Select Sname,Ssex,2014-Sage as birthyear From Student where Clno='01311'or Clno='01312' ④找出所有姓李的学生的个人信息; Select* From Student where Sname like'李%' ⑤找出学生李勇所在班级的学生人数; Select number FROM Class where clno= (select Clno from Student

where Sname='李勇' ) ⑥找出课程名为操作系统的平均成绩、最高分、最低分; Select AVG(Gmark),MAX(Gmark),MIN(Gmark) FROM Grade where Cno= (Select Cno from Course where Cname='操作系统' ) ⑦找出选修了课程的学生人数; Select COUNT(Sno)as renshu FROM Grade ⑧找出选修了课程操作系统的学生人数。 Select COUNT(Sno)as renshu FROM Grade where Cno= (Select Cno from Course where Cname='操作系统' ) 2.试一下以下语句是否正确: SELECT eno,basepay,service FROM salary WHERE basepay

数据库上机实验

创建数据表与数据输入 Part I. 使用SQL Server Management Studio创建数据表和输入数据1. 在SQL Server Management Studio中创建数据表 P69 1.(1)-(6) 2. 为数据表输入数据 P76 4.(1)-(4) 3. 数据浏览 P77 1. (1)-(2) 2. (1)-(3) Part II. 使用SQL语句创建数据表和输入数据 1. 使用SQL语句创建数据表 P72. 例3-2 2.使用SQL语句输入数据 P82. 例3.8 习题:P.105 (1)(2)insert

数据操作Insert、Update、Delete P105 3. 上机练习题(2)(4) Insert (100001, 1000, 2002-12-18 0:00:00) (100002, 2000, 2010-3-20 0:00:00) Update (100001, 1500, 2002-12-18 0:00:00) (100002, 2000, 2012-9-25 0:00:00) Delete

1.将teaching数据库中score表的studentno列设置为引用表student的外键。 ALTER TABLE Score ADD CONSTRAINT FK_score_student FOREIGN KEY (studentno) REFERENCES student(studentno) 2.将teaching数据库中class表的classname创建UNIQUE约束。 ALTER TABLE class ADD CONSTRAINT UQ_class UNIQUE(classname) 执行如下插入语句,查看提示信息 INSERT INTO class VALUES(‘090602’, ’计算机0902’, ’计算机学院’, ’马文斐’) 3. 为teaching数据库中student表的birthday列创建CHECK约束,规定学生的年龄在17-25岁之间。 ALTER TABLE student ADD CONSTRAINT CK_birthday CHECK(YEAR(GETDATE())-YEAR(birthday)) BETWEEN 17 AND 25 执行如下插入语句,查看提示信息 INSERT INTO student(studentno, sname, sex, birthday, classno) VALUES (‘0922221328’, ’张源’, ’男’, ’1983-04-05’, ’090501’) 提示:表达式YEAR(GETDATE())-YEAR(birthday) 4. 为teaching数据库创建规则prof_rule,规定教师职称取值只能为’助教’,’讲师’,’副教授’,’教授’,并将其绑定到teacher表的prof列上。 CREATE RULE prof_rule AS @prof IN(’助教’,’讲师’,’副教授’,’教授’) EXEC sp_bindrule ‘prof_rule’, ‘teacher.prof’ 执行如下插入语句,查看提示信息 INSERT INTO teacher VALUES(‘t05002’, ’张源’, ’软件工程’, ’工程师’, ’计算机学院’) 提示:表达式IN(职称列表) 5. 编写程序,输出在1-3000之间能被17整除的最大数值 提示:可使循环控制变量从最大值开始,逐步减少,第一个满足被17整除的数值即为所求解的结果,可通过BREAK语句跳出循环。(如果使循环控制变量从小到大逐步增加,则循环次数将大大增加,程序执行效率将下降。)PRINT ‘1-3000之间能被17整除的最大数值为:’ +CAST(@i AS CHAR(4)) DECLARE @s INT, @i INT SELECT @s=0, @i=3000 WHILE @i>=1 BEGIN IF @i%17=0 BEGIN PRINT ‘1-3000之间能被17整除的最大数值为:’ + CAST(@i AS CHAR(4)) BREAK END @i = @i-1 END

pb实验指导

实验一数据库的创建与连接 目的和要求 (1)掌握PowerBuidler9.0数据库的创建与连接方法; (2)创建一个SQL Server数据库,为其配置ODBC数据源和DBProfile,然后在PowerBuilder环境中连接数据库; (3)创建数据库中的表,管理表并输入数据到表中。 上机准备 (l)启动Windows操作系统,如果在Windows操作系统的控制面板中没有安装ODBC32,必须进行ODBC的安装; (2)进人PowerBuilder 9.0集成环境,熟悉系统环境; (3)创建的应用个人应用mypb; (4)复习创建数据库的有关内容。 上机步骤 1..创建SQL Server 数据库 创建SQL Server数据库的步骤: (1)运行SQL Server 服务; (2)运行SQL Server 企业管理器; (3)创建student数据库; (4)在student数据库中,创建student表(见表1)。 2.配置ODBC 数据源 配置ODBC数据源的步骤: (1)在PowerBuilder数据库画板的窗口中,双击ODBC项下Utlities项的“ODBC Administrator”项,将弹出“ODBC数据源管理器”对话框: (2)选择“用户DSN”页,在该页的列表框中,列出了已有的数据源,若要修改已有的数据源,可以中击“配置”按钮进行修改。这里,我们需要添加一个ODBC数据源,所以,中击“添加”按钮创建新数据源,将出现标题为“创建新数据源”的对话框; (3)在“创建新数据源”的对话框中提供了一个系统支持的数据库驱动程序列表框,选择合适的驱动程序。这儿我们选择SQL Server,单击“完成”按钮,将弹出“创建SQL Server 新数据源”对话框; (4)输入新的数据源名称,这里为mydb。然后,选择想连接的SQL Server服务器,可选择local,然后单击“下一步”按钮; (5)选择SQL Server验证,登录ID 为sa,密码默认为空,然后单击“下一步”按钮; (5)更改默认的数据库为student,然后单击“下一步”按钮; (5)默认系统值,然后单击“完成”按钮;

山东大学《数据库系统》上机实验答案 详细整理 2013最新版

数据库实验(一) 熟悉环境、建立/删除表、插入数据 Drop table 表名 update dbtest set test=1 select * from dbscore 1.教师信息(教师编号、姓名、性别、年龄、院系名称) test1_teacher:tid char 6 not null、name varchar 10 not null、sex char 2、age int、dname varchar 10。 根据教师名称建立一个索引。 1、create table test1_teacher( tid char(6) primary key, name varchar(10) not null, sex char(2), age int, dname varchar(10) ) 2.学生信息(学生编号、姓名、性别、年龄、出生日期、院系名称、班级)test1_student:sid char 12 not null、name varchar 10 not null、sex char 2、age int、birthday date(oracle的date类型是包含时间信息的,时间信息全部为零)、dname varchar 10、class varchar(10)。 根据姓名建立一个索引。 2、create table test1_student(

sid char(12) primary key, name varchar(10) not null, sex char(2), age int, birthday date, dname varchar(10), class varchar(10) ) 3.课程信息(课程编号、课程名称、先行课编号、学分) test1_course:cid char 6 not null、name varchar 10 not null、fcid char 6、credit numeric 2,1(其中2代表总长度,1代表小数点后面长度)。 根据课程名建立一个索引。 3、create table test1_course( cid char(6) primary key, name varchar(10) not null, fcid char(6), credit numeric(2,1) ) 4.学生选课信息(学号、课程号、成绩、教师编号) test1_student_course:sid char 12 not null、cid char 6 not null、 score numeric 5,1(其中5代表总长度,1代表小数点后面长度)、tid char 6。 4、 create table test1_student_course( sid char(12) , cid char(6) , score numeric(5,1), tid char(6), primary key(sid,cid),

数据库上机实验(有答案)

数据库上机实验内容及要求(第二部分) 1.建立工厂管理数据库 工厂(包括厂名和厂长名)需要建立一个管理数据库存储以下信息: (1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和联系电话; (2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种; (3)一个车间生产多种产品,产品有产品号和价格;每种产品只能由一个车间生产; (4)一个车间制造多种零件,一种零件也可能为多个车间制造。零件有零件号、重量和价格; (5)一种产品可由多种零件组成,一种零件也可以装配出多种产品; (6)产品和零件均存入仓库; (7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。 根据以上需求分析结果,按照下述要求,设计并建立工厂管理数据库。 ◆分析实体及联系,设计E-R图。 ◆将E-R图转换成关系模式,并规范化到3NF。 ◆在Microsoft SQL Server2000中基于“企业管理器”建立数据库及相关对象(主 码,外码,索引,约束等)。 ◆测试数据入库 2.基于“查询分析器”,完成并保存下述题目的SQL脚本 (1)建立“工种”是“钳工”的所有职工详细信息的视图; create view View_工人_钳工 as select* from职工表 where工种='钳工' with check option (2)建立“车间号”是“CJ01”的钳工详细信息的视图; create view View_钳工_CJ01 as select* from View_工人_钳工 where车间号='CJ01' (3)建立使用了“零件号”是“LJ0002”的所有产品详细信息的视图; create view View_产品_零件LJ0002 as select产品表.产品号,价格,车间号,仓库号 from装配表,产品表 where装配表.产品号=产品表.产品号and零件号='LJ0002'(4)对零件表按照“零件号”建立唯一索引; create unique index Index_U_零件号on零件表(零件号) (5)对职工表按照“性别”建立聚簇索引; create clustered index Index_C_性别on职工表(性别) (6)查询使用了“零件号”是“LJ0002”的产品的生产车间号;

Oracle 数据库上机试验指导2(答案)

实验二代码参考: 1.-- 创建学生表 create table student ( studid char(6) primary key, studname varchar2(16) not null, gender char(4) check(gender in('男','女')), addr varchar2(256) ); -- 创建课程表 create table course ( courseid char(6) primary key, coursename varchar2(32) not null unique, teacher varchar2(16) , score number check(score in (1,3,5)) ); -- 创建选课表 create table courSelc ( recid number(4) primary key, studid char(6), courseid char(6), score number(2) check(score >=0 and score <=100), constraint fk_stud foreign key(studid) references student(studid), constraint fk_cour foreign key(courseid) references course(courseid) ); 2. alter table student modify studName null; 3.1 alter table course modify courseName null; 3.2 alter table course add examdate date; 4.insert into course values('M1001','数学','奥巴马','3',to_date('2012-1- 1','yyyy-mm-dd')); insert into course values('J2002','军事理论','拿破仑','5',to_date('2012-1-1','yyyy-mm-dd'));

数据库系统及应用上机实验报告

数据库系统及应用上机实验报告 实验1 一、实验目的:理解SQL Server数据库的存储结构,掌握SQL Server数据库的建立方法和维护方法。 二、实验内容:在SQL Server环境下建立数据库和维护数据库。 三、程序源代码: --1 CREATE DATABASE test1 ON (NAME=test1_dat, FILENAME='f:\DB\data\test1dat.mdf', SIZE= 10, MAXSIZE= 50, FILEGROWTH= 5 ) LOG ON (NAME=order_log, FILENAME='f:\DB\data\test1log.ldf', SIZE= 5MB, MAXSIZE= 25MB, FILEGROWTH= 5MB) --2 create database test2 on

primary (name=test2_dat1, filename='f:\DB\data\test2dat1.mdf'), (name=test2_dat2, filename='f:\DB\data\test2dat2.ndf'), (name=test2_dat3, filename='f:\DB\data\test2dat3.ndf') log on (name=test2_log1, filename='f:\DB\data\test2log1.ldf'), (name=test2_log2, filename='f:\DB\data\test2log2.ldf') --3 create database test3 on primary (name=test3_dat1, filename='f:\DB\data\test3dat1.mdf'), (name=test3_dat2, filename='f:\DB\data\test3dat2.mdf'), filegroupg2 (name=test3_dat3, filename='d:\DB\data\test3dat3.ndf'), (name=test3_dat4,

数据库上机实验

附录C 上机实验 C.1 第4章上机实验 下列实验均使用SQL Server 的SSMS工具实现。 1.用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A): ●数据库名为:学生数据库 ●主要数据文件的逻辑文件名为:Students_data,存放在D:\Data文件夹下(若D: 盘中无此文件夹,请先建立此文件夹,然后再创建数据库。),初始大小为:5MB, 增长方式为自动增长,每次增加1MB。 ●日志文件的逻辑文件名字为:Students_log,也存放在D:\Data文件夹下,初始大 小为:2MB,增长方式为自动增长,每次增加10%。 2.选用已建立的“学生数据库”,写出创建满足表C-1到4-4条件的表的SQL语句,并执行所写代码。(注:“说明”部分不作为表定义内容)

(1)在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4)。 (2)为Teacher表中的Title列增加取值范围约束,取值范围为:{教授,副教授,讲师}。(3)将Course表中Credit列的类型改为:tinyint。 (4)删除Student表中的Sid和Sdate列。 (5)为Teacher表添加主键约束,其主键为:Tno。 C.2 第5章上机实验 本实验均在SQL Server 的SSMS工具中实现。首先在已创建的“学生数据库”中创建本章表5-1~5-3所示的Student、Course和SC表,并插入表5-4~5-6所示数据,然后编写实现如下操作的SQL语句,执行所写的语句,并查看执行结果。 1.查询SC表中的全部数据。 2.查询计算机系学生的姓名和年龄。 3.查询成绩在70~80分的学生的学号、课程号和成绩。 4.查询计算机系年龄在18~20岁的男生姓名和年龄。 5.查询C001课程的最高分。 6.查询计算机系学生的最大年龄和最小年龄。 7.统计每个系的学生人数。 8.统计每门课程的选课人数和最高成绩。 9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。 10.列出总成绩超过200的学生的学号和总成绩。 11.查询选了C002课程的学生姓名和所在系。 12.查询考试成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果。 13.查询与VB在同一学期开设的课程的课程名和开课学期。 14.查询与李勇年龄相同的学生的姓名、所在系和年龄。 15.查询哪些课程没有学生选修,列出课程号和课程名。 16.查询每个学生的选课情况,包括未选课的学生,列出学生的学号、姓名、选的课程号。 17.查询计算机系哪些学生没有选课,列出学生姓名。 18.查询计算机系年龄最大的三个学生的姓名和年龄。 19.列出“VB”课程考试成绩前三名的学生的学号、姓名、所在系和VB成绩。 20.查询选课门数最多的前2位学生,列出学号和选课门数。 21.查询计算机系学生姓名、年龄和年龄情况,其中年龄情况为:如果年龄小于18,则显 示“偏小”;如果年龄在18-22,则显示“合适”;如果年龄大于22,则显示“偏大”。 22.统计每门课程的选课人数,包括有人选的课程和没有人选的课程,列出课程号,选课人 数及选课情况,其中选课情况为:如果此门课程的选课人数超过100人,则显示“人多”; 如果此门课程的选课人数在40~100,则显示“一般”;如果此门课程的选课人数在1~40,则显示“人少”;如果此门课程没有人选,则显示“无人选”。 23.查询计算机系选了VB课程的学生姓名、所在系和考试成绩,并将结果保存到新表 VB_Grade中。

数据库上机实验总结(含代码)

实验一 (1)无条件单表查询 select sname NAME,'year of birth:' BIRTH,2004-sage BIRTHDAY,LOWER(sdept) DEPARTMENT FROM student; (2)有条件单表查询 SELECT sname,sdept,sage FROM student WHERE sage NOT BETWEEN 20 AND 23; (3)单表嵌套(一层)查询 SELECT sno,sname,sdept FROM student WHERE sdept IN(SELECT sdept FROM student WHERE sname='刘晨'); (4)复合条件多表查询 SELECT student.sno,sname,cname,grade FROM student ,sc,course WHERE student.sno=sc.sno AND https://www.360docs.net/doc/ac17611618.html,o=https://www.360docs.net/doc/ac17611618.html,o; (5)使用COUNT()的单表查询 SELECT COUNT(*) FROM student; (6)使用AVG()的单表查询 SELECT AVG(grade) '平均成绩' from SC where CNO='1'; (7)查询结果分组 SELECT cno,COUNT(sno) '人数' FROM sc GROUP BY cno; (8)查询结果排序 SELECT * FROM student ORDER BY sdept,sage DESC; (9)使用通配符的查询 SELECT sname,sno,ssex FROM student WHERE sname NOT LIKE'刘%'; (10)使用换码字符的单表查询 SELECT cno,ccredit FROM course WHERE cname LIKE 'DB\_Design'ESCAPE'\'; (11)插入单个元组 插入一个新学生元组 Insert into student (sno,sname,ssex,sdept,sage) values ('200215128','陈冬','男','IS',18) (12)插入子查询结果 对每一个系,求学生平均年龄,并把结果存入数据库 Create table dept_age(sdept char(15),avg_age int) Insert into dept_age(sdept,avg_age) select sdept,avg(sage) from student group by sdept (13)修改某个元组的值 将学生200215121的年龄改为22岁 Update student set sage=’22’ where sno=’200215121’ (14)修改多个元组的值

数据库上机实验报告 总结

重庆邮电大学移通学院 数据库集中上机报告 学生:马志鹏 学号: 022******* 班级: 02210901 专业:计算机应用技术 重庆邮电大学移通学院 2011年6月

第一天:Access数据库基本操作 1 实验目的 1、熟悉的掌握Access数据库结构与创建 2、了解创建、修改、删除、查询、保存等操作 3、输入数据创建、设计器创建、向导创建。 2 实验内容 3 实验结果 1. 2. 2

重庆邮电大学移通学院 3 2 Access 数据表的编辑 第二天 数据表基本操作 1 表关系与编辑数据 1 实验目的: 1、实现一对一,一对多,多对多的实体关系 2、对“学生基本信息”表中的记录进行排序,按出生日期降序排列 3、从“学生基本信息”表中筛选出所有计算机系男生的记录 4、从“学生基本信息”表中筛选出回族和蒙古族的所有学生记录

2 实验内容 1. SELECT 学生基本信息表.学生姓名, 成绩档案表.* FROM 成绩档案表INNER JOIN 学生基本信息表ON 成绩档案表.学生学号= 学生基本信息表.学生学号 WHERE (((学生基本信息表.学生姓名)="张冰冰")); 2 SELECT 学生基本信息表.* FROM 学生基本信息表 WHERE (((学生基本信息表.性别)="男") AND ((学生基本信息表.班级名称)="计算机系")); 3 SELECT 成绩档案表.C语言, 课程表.* FROM 成绩档案表, 课程表; 4 SELECT 学生基本信息表.*, 学生基本信息表.性别, 学生基本信息表.班级名称FROM 学生基本信息表WHERE (((学生基本信息表.性别)<>"男") AND ((学生基本信息表.班级名称)<>"计算机系")); 5 SELECT 学生基本信息表.*, 学生基本信息表.出生日期 FROM 学生基本信息表WHERE (((Month([出生日期]))=9) AND ((Day([出生日期]))=1)); 6 SELECT 学生基本信息表.* FROM 学生基本信息表WHERE (((学生基本信息表.学生姓名) Like "李*")); 3 实验结果 4

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

试用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/ac17611618.html,o)>=2 6.每个学生选修的课程门数。 解法一: select so.sno sno,https://www.360docs.net/doc/ac17611618.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

《数据库技术与应用》实验报告

《数据库技术与应用》上机实验报告 目录: 一、概述 二、主要上机实验内容 1.数据库的创建 2.表的创建 3.查询的创建 4.窗体的创建 5.报表的创建 6.宏的创建 三、总结 一、概述 (一)上机内容: 第七周:熟悉Access界面,数据库和表的创建,维护与操作 1. 熟悉Access的启动,推出,界面,菜单,工具栏等; 2. 练习使用向导创建数据库、创建空数据库; 3. 练习创建表结构的三种方法(向导、表设计器、数据表)、表中字段属性设置; 4. 练习向表中输入不同类型的数据; 5. 练习创建和编辑表之间的关系; 6. 练习表的维护(表结构、表内容、表外观) 7. 练习表的操作(查找、替换、排序、筛选等) 第八周:练习创建各种查询 1.选择查询(单表、多表、各种查询表达式) 2.参数查询 3.交叉表查询 4.操作查询(生成查询、删除查询、更新查询、追加查询) 第十周:练习创建各种类型的窗体 1.自动创建纵栏式窗体和表格式窗体; 2.向导创建主|子窗体

3.图表窗体的创建 4.练习通过设计器创建窗体 5.练习美化窗体 第十三周:练习创建各种类型的报表 1.自动创建纵栏式报表和表格式报表; 2.向导创建报表(多表报表、图表报表、标签报表) 3.练习通过设计视图创建报表(主|子报表、自定义报表) 4.练习在报表中添加计算字段和分组汇总数据 第十五周:综合应用 1.了解Access数据库系统开发的一般方法; 2.课程内容的综合练习; 3.编写上机实验报告、答疑 (二)上机完成情况 第七周:熟悉Access界面,数据库和表的创建,维护与操作 完成了创建表,向表中输入不同类型的数据,创建和编辑表之间的关系,进行了表的维护,修改了表的结构、内容、外观,最后进行了表的操作,查找、替换、排序、筛选等。 已完成 第八周:练习创建各种查询 练习选择查询、参数查询、交叉表查询,然后练习并操作查询,生成查询、删除查询、更新查询、追加查询等。 已完成 第十周:练习创建各种类型的窗体 自动创建纵栏式窗体和表格式窗体,向导创建主|子窗体和图表窗体,练习通过设计器创建窗体,美化窗体。 基本完成 第十三周:练习创建各种类型的报表 自动创建纵栏式报表和表格式报表,向导创建报表,练习通过设计视图创建报表,在报表中添加计算字段和分组汇总数据。 已完成 第十五周:综合应用

数据库原理上机实验-代码及截图

《数据库原理》上机实验报告 2017年11月

一、实验目的与要求: ●熟练使用SQL定义子语言、操纵子语言命令语句 ●掌握关系模型上的完整性约束机制 ●掌握一定的数据库管理技术 ●能完成简单的数据库应用开发 二、实验内容 1、实验一到实验十七 (一)数据定义子语言实验(2学时) 实验1:利用SQL语句创建Employee数据库 代码如下: create database Employee; 运行结果: 实验2:利用SQL语句在Employee数据库中创建人员表person、月薪表salary

及部门表dept, 暂不定义外键约束。 要求:按表1、表达、表3中的字段说明创建 表1 person表结构 表2 salary表结构 表3 dept表结构 代码如下: create table person( P_no char(6) not null primary key, P_name varchar(10) not null, Sex char(2) not null, Birthdate datetime null, Prof varchar(10) null, Deptno char(4) not null

); create table salary( P_no char(6) not null primary key, Base dec(5) null, Bonus dec(5) null, Fact dec(5) null, Month int not null ); create table dept( Deptno char(4) not null primary key, Dname varchar(10) not null ); 运行结果:

数据库上机实验报告

《数据库技术与应用》上机实验报告 姓名:谢优贤 学号:020******* 专业班级:安全工程1003班

通过这次上机实验,我做了学生信息管理系统数据库,通过创建表、查询、窗体、报表和宏对输入数据库中的学生的基本信息进行整理和操作,以便得到我们想要的信息。学生信息管理系统可以实现对学生的基本信息:学号、姓名、联系方式、性别、成绩等的查询,还有对教师的情况进行比较了解从而可以帮助学生更好地选课和学习,省去了纸质档案管理不方便的方面。 通过窗体的创建和美化,使我们在操作数据时有一个简洁明了美观的窗口,简化了用户的操作程序,方便用户的使用。报表的创建可以使用户想要的数据很好地呈现在纸上。使用宏命令还使数据库有了设置密码的功能,很好的保护了数据的使用权限;也可以使用宏命令打开我们希望打开的窗口。 一、主要上机内容 1. 数据库的创建: 我使用自行创建数据库的方式进行创建,数据库文件名为学生信息管理系统。数据库要实现的主要功能:学生基本信息及学习成绩情况的统计,通过窗体进行学生信息的查询、学生信息及成绩的普通查询、打印学生信息报表等。 2. 表的创建: 基本表为学生信息表、学生成绩表、教师信息表、课程信息表等均使用设计器创建表学生信息表的记录: 学生信息表结构: 在学生信息表中设置了学号为主键,为了方便输入又在学号字段中设置了掩码(如下图)

学生年龄一般不会太大或太小,于是为了防止填写信息时出错,添加了有效性规则 性别只有男和女之分,于是为了方便,选择了查询向导 同样在入学日期和电话字段也设置了输入掩码 头像属于图片类型,其数据类型为“OLE对象”,所得荣誉和自我介绍选择了“备注”类

数据库上机题目

上机时间7-18周周四上午3、4节 实验第一部分数据库操作 一:熟悉ACCESS环境(不用提交) 下面的实验要在七周内完成 实验1 建立学生、课程及成绩表,录入部分数据,并设计验证实体、参照及用户自定义完整性。 实验第二部分SQL语句VB数据库访问技术 二:SQL语句及VB数据库访问技术(要提交) 下面的SQL语句要求在“学生成绩管理”数据库进行测试。 下面的实验要在八至十二周内完成,要求提交纸质实验报告,实验报告包括:实验题目、SQL语句及查询结果的截图(查询的名称为自己的学号加姓名)。 【实验2_1】查询学生基本信息表中的所有信息。 SQL语句如下: 【实验2_2】在学生基本信息表中查询学生的学号、姓名、性别和族别信息。 SQL语句如下: 【实验2_3】从学生基本信息表中查询学生由哪些民族构成。 学生的族别有多行重复,要快速查询学生的民族构成,实际上就是对相同值的族别只需要显示一行,可使用DISTINCT关键字实现。 【实验2_4】从成绩表中查询学生成绩。 SQL语句如下: 【实验2_5】从相关表中查询每一位学生的学号、姓名、课程名称、成绩。 【实验2_6】在课程信息表中查找“Delphi程序设计”课程的任课老师。 【实验2_7】查询少数民族学生的基本情况。 【实验2_8】检索1985年1月1日以后出生的女生基本信息。 【实验2_9】查询每位同学的课程门数、总成绩、平均成绩。 【实验2_10】从学生基本信息表中统计各民族学生人数。 【实验2_11】从学生基本信息表中统计汉族学生的人数。 【实验2_12】显示平均成绩大于等于80分以上的学生情况。

【实验2_13】查询学生成绩并将显示的结果按成绩升序排序。 SQL语句如下: 【实验2_14】查询1985年出生的学生基本信息。 【实验2_15】查询不及格学生成绩信息。 查询不及格学生成绩信息,也就是查询0—59之间的学生成绩,可用BETWEEN关键字表示为:WHERE 成绩BETWEEN 0 AND 59。 【实验2_16】查询课程编号为002、003、007的课程编号、课程名称、任课教师和上课时间。 【实验2_17】检索所有姓刘的学生基本信息。 【实验2_18】检索包含“技术”两字的课程信息。 【实验2_19】查询第2 个字为“丽”的学生信息。 【实验2_20】查询课程信息表中教师未定的课程信息。 【实验2_21】统计成绩表中各门课程的学生人数、总成绩、平均成绩。 【实验2_22】检索单科成绩高于全班平均分的学生成绩信息。 【实验2_23】使用左外连接检索学生成绩信息(学号,姓名,课程名称)。 【实验2_24】使用右外连接检索学生成绩信息(学号,姓名,课程名称)。 【实验2_25】查找同名同姓的学生信息。 【实验2_26】在VB中设计针对“课程信息表”的基本编辑窗体,需要附运行界面及源程序代码。 实验第三部分数据库应用系统开发 数据库应用系统开发作为本课程课程设计考查内容,需要在18周之前提交纸质课程设计报告(主要是系统开发侧重于实施环节的报告)及数据库应用系统。系统开发可以两人(不能超过两人)一组,系统名称可自行拟定。

南工大数据库实验+考试——上机实验指导_实验内容和思考参考答案

实验2:SQL Server数据库的管理 二、实验内容及步骤 4.单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATE DATABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。 CREATE DATABASE studb ON (NAME=studb_dat, FILENAME='C:\DataBase\studb.mdf') EXEC sp_helpdb 5.在查询设计器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。 ALTER DATABASE studb MODIFY FILE(NAME=studb_data,SIZE=5MB,MAXSIZE=20MB,FILEGROWTH= 1MB) 6.在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。 ALTER DATABASE studb ADD LOG FILE(NAME=studb_log2,FILENAME=studb_log2.ldf,SIZE=5MB, MAXSIZE=10MB) 8.使用Transact-SQL语句DROP DATABASE删除student_db数据库。 DROP DATABASE student_db 实验3SQL Server数据表的管理 二、实验内容及步骤 5.使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建grade表。 CREATE TABLE grade( [学号][char](4)NULL, [课程编号][char](4)NULL, [分数][char](5)NULL )ON[PRIMARY] 8.使用Transact-SQL语句INSERT INTO...VALUES向studentsdb数据库的grade表插入数据:学号为0004,课程编号为0001,分数为80。 INSERT grade VALUES('0004','0001','80') 9.使用Transact-SQL语句ALTER TABLE修改curriculum表的“课程编号”列,使之为非空。

相关文档
最新文档