当前位置:文档之家› 数据库原理实验报告(4)

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

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

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

南京晓庄学院

《数据库原理与应用》课程实验报告

实验四查询设计实验

所在院(系):信息工程学院

班级: 13软件工程转本1班

学号:13131151

姓名:薛伟

1.实验目的

(1)了解查询的目的,掌握SELECT语句的基本语法和查询条件的表示方法。

(2)掌握数据排序和数据联接查询的方法。

(3)掌握SQL Server查询分析器的使用方法。

2.实验要求

(1)针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下单表查询操作,并将将调试成功的T-SQL命令,填入实验报告中。

a)查询所有课程的详细情况。

b)查询来自江苏或山东的学生学号和姓名,并以中文名称显示输出的列

名。

c)查询选修了课程的学生学号(一人选了多门课程的话,学号只显示一

次)。

d)查询选修课程号为07253001的学号和成绩,并要求对查询结果按成绩

降序排列,如果成绩相同则按学号升序排列。

e)查询所有学生的学号、姓名和年龄。

f)查询选修课程号为07253001的成绩在85-95之间的学生学号和成绩,

并将成绩乘以0.7输出。

g)查询数学与信息技术学院(DEPT_ID为07)或物理与电子工程学院

(DEPT_ID为09)姓张的学生的信息。。

h)查询所有核心课程(课程名中带*的)的情况。

i)查询缺少了成绩的学生的学号和课程号,查询结果按课程号升序排列。

(2)在SQL Server查询分析器中,用T-SQL语句实现下列数据联接查询操作:

a)查询每个学生的情况以及他(她)所选修的课程。

b)查询学生的学号、姓名、选修的课程名及成绩。

c)查询选修C语言程序设计且成绩为85分以上的学生学号、姓名及成绩。

d)查询和学生柏文楠是同一个民族的学生(用自身联接实现)。

e)分别用等值联接和内联接查询有授课记录的老师的姓名。

f)用外联接查询所有老师的授课情况,输出老师的工号、姓名、职称、院

系、担任的课程号和授课的学期,结果按院系和职称升序排列。如果该

老师没有授课历史,在课程号和授课的学期中显示空值

(3)在SQL Server Management Studio中新建查询,完成以上查询命令的同时,熟悉SQL 编辑器工具栏中各快捷按钮的作用。

(4)按要求完成实验报告。

3.实验步骤、结果和总结实验步骤/结果

将调试成功的T-SQL语句写在下方(标明题号)。

一、针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下单表查询操作,并将将调试成功的T-SQL命令,填入实验报告中。

(a)查询所有课程的详细情况:

select*from Course

(b)查询来自江苏或山东的学生学号和姓名,并以中文名称显示输出的列名。

SELECT S_ID as学号,S_Name as姓名

FROM Student

WHERE Birth_Place='江苏'or Birth_Place='山东'

(c)查询选修了课程的学生学号(一人选了多门课程的话,学号只显示一次)。

(d)查询选修课程号为07253001的学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

select S_ID,EXAM_Grade from sc

where C_ID='07253001'

order by EXAM_Grade desc,S_ID asc

(e)查询所有学生的学号、姓名和年龄。SELECT S_ID,S_NAME, year(getdate())-year(Date_of_Birth)as 年龄 FROM Student

(f)查询选修课程号为07253001的成绩在85-95之间的学生学号和成绩,并将成绩乘以0.7输出。Select S_ID,EXAM_Grade*0.7 as grade

from SC

where C_ID='07253001'and EXAM_Grade between 85 and 95

(g)查询数学与信息技术学院(DEPT_ID为07)或物理与电子工程学院(DEPT_ID 为09)姓张的学生的信息。

select*from Student where DEPT_ID in('07', '09')and S_Name like'张%'

(h)查询所有核心课程(课程名中带*的)的情况。

SELECT* FROM Course WHERE C_Name like'%*%'

(i)查询缺少了成绩的学生的学号和课程号,查询结果按课程号升序排列。select S_ID,C_ID from SC where EXAM_Grade IS NULL

order by C_ID

二、二、在SQL Server查询分析器中,用T-SQL语句实现下列数据联接查询操作:

(a)查询每个学生的情况以及他(她)所选修的课程。

Select Student.S_ID, S_Name,Gender,

Birth_Place,DEPT_ID, Class_ID,

Course.C_name from Student join SC on Student.S_ID=SC.S_ID join Course on

Course.C_ID=SC.C_ID

(b)查询学生的学号、姓名、选修的课程名及成绩。

select Student.S_ID, S_Name,C_Name, EXAM_Grade

from Student inner join SC on Student.S_ID=SC.S_ID inner join Course on SC.C_ID=Course.C_ID

(c)查询选修C语言程序设计且成绩为85分以上的学生学号、姓名及成绩。 Select

Student.S_ID,S_NAME,EXAM_Grade from Student,SC,Course

where Student.S_ID=SC.S_ID and Course.C_ID=SC.C_ID and C_Name='C语言程序设计'and EXAM_Grade>=85

(d)查询和学生柏文楠是同一个民族的学生(用自身联接实现)。

SELECT S_Name from Student

where Nationality=(select Nationality from Student where S_Name='柏文楠')

(e)分别用等值联接和内联接查询有授课记录的老师的姓名。

1.等值联接

select DISTINCT T_Name from

Teacher inner join TC on Teacher.T_ID=TC.T_ID

2.内联接

select DISTINCT T_Name from Teacher,TC where Teacher.T_ID=TC.T_ID

(f)用外联接查询所有老师的授课情况,输出老师的工号、姓名、职称、院系、担任的课程号和授课的学期,结果按院系和职称升序排列。如果该老师没有授课历史,在课程号和授课的学期中显示空值。

select

Teacher.T_ID,Teacher.T_Name,Teacher.Acade mic_Title,Department.

DEPT_Name,TC.C_ID,TC.Semester

from Teacher Right join TC on Teacher.T_ID=TC.T_ID join Department ON Department.DEPT_ID=Teacher.DEPT_ID

order by Department.DEPT_Name , Teacher.Academic_Title

4.实验思考:

①联接查询中,输出列名时何时可以忽略列名前的表名,何时不能?

表名.列名

若选择的字段名在各个表中是唯一的,则可以省略字段名前的表名。

②联接查询中,INNER JOIN、LEFT OUTER JOIN 、RIGHT OUTER JOIN、FULL OUTER JOIN 的结果各有什么不同?

?INNER JOIN :

Inner join 产生的结果集中,是A和B的交集

SELECT * FROM TableA INNER JOIN TableB ON https://www.doczj.com/doc/668983178.html, = https://www.doczj.com/doc/668983178.html,

?LEFT OUTER JOIN:

(1) Left outer join 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null 值取代。

SELECT * FROM TableA LEFT OUTER JOIN TableB ON https://www.doczj.com/doc/668983178.html, = https://www.doczj.com/doc/668983178.html,

(2) 产生在A表中有而在B表中没有的集合。

SELECT * FROM TableA LEFT OUTER JOIN TableB ON https://www.doczj.com/doc/668983178.html, = https://www.doczj.com/doc/668983178.html,

WHERE TableB.id IS null

?RIGHT [OUTER] JOIN

RIGHT OUTER JOIN 是后面的表为基础,与LEFT OUTER JOIN用法类似。

?FULL [OUTER] JOIN

(1) Full outer join 产生A和B的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。可以使用IFNULL判断。

SELECT * FROM TableA FULL OUTER JOIN TableB ON https://www.doczj.com/doc/668983178.html, = https://www.doczj.com/doc/668983178.html,

(2)产生A表和B表没有交集的数据集。

SELECT * FROM TableA FULL OUTER JOIN TableB ON https://www.doczj.com/doc/668983178.html, = https://www.doczj.com/doc/668983178.html,

WHERE TableA.id IS null OR TableB.id IS null

③LIKE匹配字符有几种?如果要检索的字符中包含匹配字符,该如何处理?

LIKE通配符及实例

通配符说明实例

%表示包含零个或

多个字符的任意

where title like

'%computer%' 将

字符串。查找在书名中任意

位置包含单词 "co

mputer" 的所有书

名。

_(下划线)表示任何单个字

符。

where au_fname l

ike '_ean' 将查

找以 ean 结尾的

所有 4 个字母的

名字(dean、sean

等)。

[]

指定范围([a-

f]) 或集合([a

bcdef]) 中的任

何单个字符。

where au_lname l

ike '[c-p]arsen'

将查找以 arsen

结尾并且以介于 c

与 p 之间的任何

单个字符开始的作

者姓氏,例如 car

sen、larsen、kar

sen 等。

[^]不属于指定范围

([a-f]) 或集合

([abcdef]) 的

where au_lname l

ike 'de[^l]%' 将

查找以 de 开始并

任何单个字符。且其后的字母不为

l 的所有作者的

姓氏。

数据库原理实验报告

南京晓庄学院 《数据库原理与应用》 课程实验报告 实验一SQL Server 2005常用服务与实用工具实验 所在院(系):数学与信息技术学院 班级:14软工5班 学号:14551204 14551206 姓名:花元凯罗文波 1.实验目的 (1)了解Microsoft 关系数据库管理系统SQL Server的发展历史及其特性。 (2)了解SQL Server 2005的主要组件、常用服务和系统配置。 (3)掌握Microsoft SQL Server Management Studio 图形环境的基本操作方法。了解使用“SQL Server 2005 联机从书”获取帮助信息的方法;了解“查询编辑器”的使用方法;了解模板的使用方法。 2.实验要求 (1)收集整理Microsoft关系数据库管理系统SQL Server的相关资料,总结其发展历史及SQL Server 2005主要版本类别和主要功能特性。 (2)使用SQL Server配置管理器查看和管理SQL Server 2005服务。 (3)使用Microsoft SQL Server Management Studio连接数据库;使用SQL Server帮助系统获得 所感兴趣的相关产品主题/技术文档。

(4)使用Microsoft SQL Server Management Studio“查询编辑器”编辑并执行Transact-SQL查 询语句。 (5)查看Microsoft SQL Server 2005模板,了解模板的使用方法。 (6)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 (1) 简要总结SQL Server系统发展历史及SQL Server 2005主要版本类别与主要功能特性。 SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能(BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能。SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。目前最新版本是SQL SERVER 2014。 1,SQL Server 2005学习版当保护和管理应用系统内外部的信息变得至关重要时,通过提供一套免费、易于使用和健壮的数据库,学习版帮助开发人员建立强健的和可靠的应用系统。

山东大学数据库第四次实验实验报告

實驗4 視圖操作 實驗目の:掌握創建、刪除視圖のSQL語句の用法,掌握使用企業管理器創建、視圖の方法。 實驗准備: 1)了解創建視圖方法。 2)了解修改視圖のSQL 語句の語法格式。 實驗內容: 1)使用企業管理器創建視圖 a)在pubs數據庫中以authors表為基礎,建立一個名為CA_authorの視圖, 使用該視圖時,將顯示所有state為CAの作者の基本信息。 2)使用SQL語句創建視圖 a)在查詢分析器中利用author表建立一個每個作者のID,lname,fname, phone,addressの視圖S_author。 b)建立一個employee_date視圖,利用employee表中信息,顯示1991年 1月1日之後雇傭の雇員のid,name,minit,job_id。 3)刪除視圖 a)使用企業管理器S_author視圖 b)使用SQL語句刪除CA_author、employee_date視圖 實驗要求: 用不同の方法創建視圖。 實驗步驟如下: 一、使用企業管理器創建視圖 a )在pubs數據庫中以authors表為基礎,建立一個名為CA_author の視圖,使用該視圖時,將顯示所有state為CAの作者の基本信息。

①右鍵點擊pubs數據庫文件下の視圖,選擇“新建視圖”,在彈出來の“添加表”中添加表authors。 ②在“添加表”一欄中添加表authors後點擊“關閉”,並全選author表中所有項目。 ③點擊保存,從彈出來の“選擇名稱”框中輸入視圖名稱“CA_author”。

④添加名為CA_author の視圖成功。 ⑤顯示所有state為CAの作者の基本信息。

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

南京晓庄学院 《数据库原理与应用》课程实验报告 实验一 SQL Server 2005常用服务与实用工具实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)了解Microsoft 关系数据库管理系统SQL Server的发展历史及其特性。 (2)了解SQL Server 2005的主要组件、常用服务和系统配置。 (3)掌握Microsoft SQL Server Management Studio 图形环境的基本操作方法。了解使用“SQL Server 2005 联机从书”获取帮助信息的方法;了解“查询编辑器”的使用方法;了解模板的使用方法。 2.实验要求 (1)收集整理Microsoft关系数据库管理系统SQL Server的相关资料,总结其发展历史及SQL Server 2005主要版本类别和主要功能特性。 (2)使用SQL Server配置管理器查看和管理SQL Server 2005服务。 (3)使用Microsoft SQL Server Management Studio连接数据库;使用SQL Server帮助系统获 得所感兴趣的相关产品主题/技术文档。 (4)使用Microsoft SQL Server Management Studio“查询编辑器”编辑并执行Transact-SQL 查询语句。 (5)查看Microsoft SQL Server 2005模板,了解模板的使用方法。 (6)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 (1) 简要总结SQL Server系统发展历史及SQL Server 2005主要版本类别与主要功能特性。

北邮数据库实验报告

数据库实验报告(四) 姓名:学号:班级: 1.简单查询: (1) 查询“数据库开发技术”课程的学分; SQL语句: select credit from course where course_name='SQL Server数据库开发技术'; 或者模糊查询: select credit from course where course_name like'%数据库开发技术'; 执行结果: (2) 查询选修了课程编号为“dep04_s004”的学生的学号和成绩,并将成绩按降序输出; SQL语句: select student_id,grade from student_course where course_id='dep04_s003' order by grade desc; 执行结果:

(3) 查询学号为“g9940205”的学生选修的课程编号和成绩; SQL语句: select course_id,grade from student_course where student_id='g9940205'; 执行结果: (4) 查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。 SQL语句: select student_id,grade from student_course where course_id='dep04_s001'and grade>'85'; 执行结果:

2.在多表连接的查询实验中,用Transact SQL语句完成以下查询操作: (1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩; SQL语句: select student.student_id,student_name,grade from student,student_course where student.student_id=student_course.student_id and student_course.course_id='dep04_s002' and student_course.grade>'85'; 执行结果: (2)查询所有学生的学号、姓名、选修的课程名称和成绩; SQL语句: select student.student_id,student_name,course_name,grade from student,course,student_course where student.student_id=student_course.student_id and student_course.course_id=course.course_id; 执行结果:

数据库实验5实验报告

淮海工学院计算机工程学院实验报告书 课程名:《数据库原理及应用》 题目:数据库的完整性 班级:软件132 学号:2013122907 姓名:莹莹

一.目的与要求 1.掌握索引创建和删除的方法; 2.掌握创建视图和使用视图的方法; 3.掌握完整性约束的定义方法,包括primary key、foreign key等。 二.实验容 1.基于前面建立的factory数据库,使用T-SQL语句在worker表的“部门号”列上创建一个非聚集索引,若该索引已经存在,则删除后重建。 2.在salary表的“职工号”和“日期”列创建聚集索引,并且强制唯一性。 3.建立视图view1,查询所有职工的职工号、、部门名和2004年2月工资,并按部门名顺序排列。 4.建立视图view2,查询所有职工的职工号、和平均工资; 5.建立视图view3,查询各部门名和该部门的所有职工平均工资; 6.显示视图view3的定义; 7.实施worker表的“性别”列默认值为“男”的约束; 8.实施salary表的“工资”列值限定在0~9999的约束; 9.实施depart表的“部门号”列值唯一的非聚集索引的约束; 10.为worker表建立外键“部门号”,参考表depart的“部门号”列。 11.建立一个规则sex:性别=’男’ OR 性别=’女’,将其绑定到“性别”上; 12.删除上面第7、8、9和10建立的约束; 13.解除第11题所建立的绑定并删除规则sex。 三.实验步骤 1 USE factory GO --判断是否存在depno索引;若存在,则删除之 IF EXISTS(SELECT name FROM sysindexes WHERE name='depno') DROP INDEX worker.depno GO --创建depno索引 CREATE INDEX depno ON worker(部门号) GO EXEC sp_helpindex worker GO 2 USE factory GO --判断是否存在no_date索引;若存在,则删除之 IF EXISTS(SELECT name FROM sysindexes WHERE name='no_date') DROP INDEX salary.no_date GO --创建no_date索引

数据库原理实验报告(数据查询)

数据库原理实验报告 实验三数据查询 班级:××× 姓名:××× 学号:××× 数据查询 一、[实验目的] 1.掌握SQL的单表查询操作

2.掌握SQL的连接查询操作 3.掌握SQL的嵌套查询操作 4.掌握SQL的集合查询操作 二、[实验内容] 本实验的主要内容是: 1.简单查询操作。包括投影、选择条件表达,数据排序,使用临时表等。 2.连接查询操作。包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。 3.在SQL Server查询分析器中,使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 4.组合查询与统计查询。 (1)分组查询实验。该实验包括分组条件表达、选择组条件的表达方法。 (2)使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。 (3)组合查询实验。 (4)计算和分组计算查询的实验。 三、[实验方法] 1.将查询需求用Transact-SQL语言表示。 2.在SQL Server查询分析器的输入区中输入Transact-SQL查询语句。 3.设置查询分析器结果区为Standard Execute(标准执行)或Execute to Grid方式。 4.发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。 5 查询分析器的主要作用是编辑Transact-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。 图5- 错误!未定义书签。SQL Server 2000查询分析器 查询分析器的界面如图5- 错误!未定义书签。所示。在查询生成器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上方是SQL代码区域,用于输入SQL的查

数据库实验报告 (4)

一实验题目 .索引的建立和删除操作 .视图的创建、修改、更新和查询操作 二实验目的 .掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。 .掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。 三实验内容 1.索引的建立和删除操作 (1)在表中,建立按照升序的惟一性索引。 (2)在表中,建立按照学号升序和课程号降序的唯一性索引。 (3)在表中,按照生日建立一个非聚簇索引。 (4)在表中,建立一个按照课程名升序的聚簇索引。 (5)删除索引。 2.视图的创建、修改、更新和查询操作 (1)建立一个关于所有女生信息的视图。 (2)将各系学生人数,平均年龄定义为视图 (3)建立一个视图反映学生所选课程的总学分情况。 (4)建立一个所有学生课程成绩的视图,包括基本学生信息,课程信息和成绩。 (5)在视图基础之上,建立一个两门课以上成绩不及格的学生情况视图。 (6)建立一个至少选修了门课及门课以上的学生信息的视图。 (7)修改视图,要求只显示年以前出生的女生信息。 (8)在视图查询不及格超过门课的学生信息。 (9)删除视图。 (10)通过视图,将“王丹”的名字修改为“汪丹”,并查询结果。 (11)通过视图,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,),并查询结果。 (12)通过视图,删除年出生的女生信息,并查询结果。 (13)通过视图,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。 (14)通过视图,将“”学生的平均分改为分,是否可以实现,请说明原因。 四实验要求 .要求掌握索引的类型,以及创建索引时的注意事项,例如每个表只能创建一个聚集索引,可以创建非聚集索引最多为个,等等。 .理解创建视图的目的和意义。掌握创建视图时需要考虑的原则:只能在当前数据库中创建视图、视图名不得与该用户的表名相同、可在视图上建立视图、定义视图不能包括等关键字、不能建立临时视图,等等。 .报告中由同学写明具体的操作意图(文字描述)、操作命令(语句)、和执行结果(文字描述适当截图)。

数据库实验报告五

数据库原理及应用实验报告(五) 实验题目:过程 专业:数字媒体技术 班级:1306班 姓名:***************

运城学院实验报告 专业:数字媒体技术系(班):计算机科学与技术系1306班姓名:************* 课程名称:数据库原理及应用 实验项目:过程实验类型:验证型指导老师:***** 实验地点:软件实验室一时间:2015年12月10日 一、实验目的: 掌握用户存储过程的创建,了解一些常用的系统存储过程,以及调用和删除过程,并熟悉使用存储过程来进行数据库应用程序的设计。 二、实验内容: (1)基于学生—课程数据库创建一存储过程,用于检索数据库中某个专业学生的人数,带有一个输入参数,用于指定专业。执行结果如图二所示: create procedure pro_s @stu_sdept varchar(5) //这是带参数的过程,参数不用()括 As select count(*) as 人数from student where sdept = @ stu_sdept 1、存储过程的执行 execute pro_s 实参//实参可以是变量,也可以是常量 (2)基于学生-课程数据库创建一存储过程,该过程带有一个输入参数,一个输出参数。其中输入参数用于指定学生的学号,输出参数用于返回学生的平均成绩。执行结果如图四所示: create procedure pro_stu @stu_sno char(6),@stu_avg float output //这个带output的是输出参数as select @stu_avg = avg(grade) //将平均值给了变量 from student,sc where student. sno = sc. sno and student.sno=@stu_sno 1.存储过程的执行 declare @stuavg float //用于存放输出变量内容的 execute pro_stu ‘1000’,@stuavg output// 输出参数必须是变量 select @stuavg //看结果 (3)在pubs数据库中建立一个存储过程,用于检索数据库中某一价位的图书信息。参数有两个,用

数据库原理实验报告

数据库原理 实验报告 系别电子信息系 专业计算机科学与技术班级学号4080522 姓名龚敏 指导教师李爱英

一.概要设计 1.教学数据库各表的关系模式:(加下线的属性为主键) 学生 (学号,姓名,性别, 出生日期,所在系) 英文缩写对照:student(s_no,s_name,s_sex,s_age,s_birthday,s_department) 课程 (课程号,课程名,学分) 英文缩写对照:course(c_no,c_name,c_score) 教师 (职工号,姓名,性别,职称) 英文缩写对照:teacher(t_no,t_name,t_sex,t_duty) 选课 (学号,课程号,成绩) 英文缩写对照:choice(s_no,c_no,score) 讲授 (职工号,课程号) 英文缩写对照:teaching(t_no,c_no) 2.教学数据库E-R 图: 实体:课程,学生,选课 联系:选课(学生同课程之间多对多的联系m:n),讲授(教师同课程之间多对多的联系m:n)。 二.逻辑设计 代码: use master go create database stu go use stu go n m m n 课程 教师 讲授 选课 学号 姓名 性别 出生日期 成绩 职工号 姓名 性别 职称 学分 课程号 课程名 学生

create table student (s_no char(8) not null primary key, s_name char(8) not null , s_sex varchar(8) not null, s_birthday smalldatetime not null, s_department varchar(13) not null) drop table student use stu go create table teacher (t_no char(8) not null primary key, t_name char(8) not null, t_sex varchar(8) not null, t_duty char(8) not null) create table course (c_no char(8) not null primary key, c_name char(8) not null, c_score varchar not null) create table choice( s_no char(8) not null primary key, c_no char(8) not null primary key, score varchar not null) create table teaching( t_no char(8) not null primary key, c_no char(8) not null primary key) insert student values('101','袁敏','女','1982-2-3','机电') insert student values('102','李志强','男','1983-4-5','计算机') insert student values('103','张亮','男','1984-10-9','建筑') insert student values('104','李平','女','1984-5-6','计算机') insert student values('105','王丽','女','1983-2-1','机电') insert student values('106','刘明耀','男','1982-4-16','计算机') select* from student insert course values('1011','C语言','6') insert course values('1012','数据结构','4') insert course values('1013','微机原理','6') insert course values('1014','数字电路','5') insert course values('1015','高等数学','6') select* from course insert teacher values('0511','张大维','男','副教授') insert teacher values('0512','林楠','女','讲师') insert teacher values('0513','韩晓颖','女','副教授') insert teacher values('0514','李辉','男','讲师') insert teacher values('0515','孙丽','女','助教') select* from teacher insert choice values('101','1011','82.5') insert choice values('101','1012','79') insert choice values('102','1012','92.5') insert choice

数据库上机实验报告4

数据库上机实验报告 4 学号:姓名:日期:年月日 实验目的:(1)练习连接查询;(2)练习视图的创建与使用;(3)学习使用ODBC的方法;(4)体验T-SQL的功能;体验存储过程的功能;体验表值函数、标量值函数的作用;体验ranking等功能。 1 练习视图及连接查询。 (1)创建一个视图,视图名为viNF,视图内容为select id,count(*) as nf from friends group by id。执行成功后,将SQL语句复制到下方。 (2)基于viNF视图,查找拥有最多好友的用户、最少好友的用户。执行成功后,将SQL语句复制到下方。 (3)基于users表和viNF视图进行连接查询。分别进行内连接、全外连接、左外连接、右外连接四种操作。执行成功后,将SQL语句复制到下方,并回答:四种结果表,哪两个的结果是一致的,为什么? (4)将题(3)中全外连接保存为一个新的视图viUAF。 2 通过ODBC用Excel打开users表。 3 体验T-SQL。 回顾实验2中的题目: 定义最低价格为成本价;依据此成本价做如下计算: 连接Goods,Goods_Extent,Sellers表,按照总利润,输出前10名;要求输出表的格式为(商品名称,卖家名称,商品价格,运费,卖家信誉,卖家好评率,历史销量,历史利润,期内销量,期内利润,总销量,总利润) 利用如下语句进行查询,体会和之前有什么不同。如感兴趣,自己可以仿照写一个变量定义、赋值及应用的例子。 declare @cost as float; select @cost=min(good_price)from goods; select top 10 good_name as商品名称, goods.seller_name as卖家名称, good_price as商品价格, good_shipping as运费,

数据库实验报告1

1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。(5分) exec sp_rename v_spj, v_spj_三建; 2.针对SPJ数据库,创建并执行如下的存储过程:(共计35分) (1)创建一个带参数的存储过程—jsearch。该存储过程的作用是:当任意输入一个工 程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME) 以及工程的名称(JNAME)。执行jsearch存储过程,查询“J1”对应的信息。(10 分) create proc jsearch @jno char(2) as select sname, pname, jname from s,p,j,spj where s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jno and spj.jno=@jno; 执行: exec jsearch 'J1'

(2)使用S表,为其创建一个加密的存储过程—jmsearch。该存储过程的作用是:当执 行该存储过程时,将返回北京供应商的所有信息。(10分) 创建加密存储过程: create proc jmsearch with encryption as select * from s where s.city='北京'; sp_helptext jmsearch; (3)使用系统存储过程sp_helptext查看jsearch, jmsearch的文本信息。(5分) 用系统存储过程sp_helptext查看jsearch: exec sp_help jsearch; exec sp_helptext jsearch;

数据库原理实验报告分析

2013级数据库原理实验报告 专业:_______计算机___ 班级:________________ 学号:______________ 姓名:_______________ 2015年5月

实验一 SQL Server 2005基本操作 一、实验目的 了解SQL Server 2005组件; 了解SQL Server数据库组成; 掌握SQL Server 2005界面基本操作。 二、实验内容 (1)开始->程序->Microsoft SQL Server 2005-> SQL Server Management Studio,打开后进入到SQL Server 2005主体界面 (2)点击?数据库?前面的?+?,可以展开查看数据库,并且可以继续展开下级目录,查看数据库中的表、视图等。 (3)了解SQL Server 2005菜单栏的一些主要工具的使用。 (4)学生动手操作SQL Server 2005,打开数据库,打开表,打开查询界面;查看数据库的属性、表的属性等。 三、实验总结 进行这次实验有遇到什么问题?怎么解决的? 答:此次实验我们一步一步按照实验内容操作的,基本上没有遇到问题。

实验二数据定义 一、实验目的 掌握SQL Server 2005的数据库创建; 掌握SQL Server数据定义语言; 掌握SQL Server 2005数据定义的SQL语言定义与管理器定义两种方式。 二、实验内容 (1)创建、修改、删除数据库。 创建要求:数据库Employee中包含一个数据库文件Empdat1.mdf和一个日志文件Emplog.ldf。其中,数据文件大小为10MB,最大为50MB,以5MB速度增长;日志文件大小为5MB,最大为25MB,以5%速度增长。 修改要求:增加第二个数据库文件Empdat2.ndf,其中,数据文件大小为5MB,最 大为25MB,以2MB速度增长。 (2)利用SQL创建人员表person、月薪表salary及部门表dept。 见上页图 要求:按表2-1、表2-2及表2-3中的字段说明创建。

数据库实验报告4

数据库实验报告4

《数据库原理》实验报告 题目:实验四视图与索引学号姓名班级日期Xxxx Xx xxxxx 2016.10.20 一. 实验内容、步骤以及结果 1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是 1986年出生的学生的视图,视图中包括学号,性别,成绩三个信息。 2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ) 方法一: create view V_SP as select sno,pno,qty from spj where spj.jno in (select jno from j where j.jname='

三建') 方法二: create view V_SPJ as select sno,pno,qty from spj,j where j.jno=spj.jno and j.jname='三建'

INTO V_SPJ(SNO,PNO,QTY) VALUES( 's5','p3',900) 提示: -SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由 于JNO为NULL,所以视图中没有该 条数据。 -SPJ表中JNO不能为空时,可以使用instead of触发器实现。 (1)修改视图V_SPJ中的任意一条数据的供 应数量。 update V_SPJ set qty=111 where sno='s1' and pno='p1'

(2)删除视图V_SPJ中的任意一条数据(注意 所创建视图可以视图消解时,才能正常删除,否则会删除失败;也可以考虑用 instead of触发器实现)。 DELETE V_SPJ where sno='s1' and pno='p1' and qty=111 用instead of触发器实现 CREATE TRIGGER trdV_SPJ ON V_SPJ INSTEAD OF DELETE AS BEGIN Delete from V_SPJ WHERE sno='s1' and pno='p1' and qty=111 END

数据库实验报告4

数据库-实验报告4 学号:11122604 姓名:陆亮 第4周(第四章:数据更新、视图、嵌入式SQL部分自学) 一、实验课: 1.建立计算机学院总评不及格成绩学生的视图,包括学生学号、姓名、性别、手机、所选 课程和成绩。 2.在E表中插入记录,把每个学生没学过的课程都插入到E表中,使得每个学生都选修每 门课。 3.求年龄大于所有女同学年龄的男学生姓名和年龄。 4.在E表中修改08305001课程的平时成绩,若成绩小于等于75分时提高5%,若成绩大于 75分时提高4%。 5.删除没有开课的学院。//删除记录而不是表。删除表要用其他。 6.查询优、良、中、及格、不及格学生人数 二,代码: create view student_fail(xh,xm,xb,sjhm,kh,zpcj)as(select distinct S.xh,S.xm,S.xb,S.sjhm,E.kh,E.zpcj from S,E where S.xh=E.xh and E.zpcj<'60'); insert into E select distinct S.xh,O.xq,O.kh,O.gh ,null,null,null from S,O where not exists(select*from E where E.xh =S.xh and E.kh =O.kh ); select S.xm,S.csrq from S where S.csrq<(select min(csrq)from S group by S.xb having xb ='女') update E set pscj = pscj*1.04 where pscj>75; update E set pscj = pscj*1.05 where pscj<75; delete from D where yxh not in(select yxh from T ,O where T.gh = O.gh)

北邮大三下数据库实验报告5

北京邮电大学 实验报告 课程名称数据库系统原理 实验内容实验5 数据库完整性与安全性实验 班级2013211***姓名 *** 指导老师成绩_________ 2016年05月20日

实验5 数据库完整性与安全性实验 实验目的: 1.通过对完整性规则的定义实现,熟悉了解SQL SERVER中完整性保证的规则和实现方 法,加深对数据完整性的理解。 2.通过对安全性相关内容的定义,熟悉了解SQL SERVER中安全性的内容和实现方法, 加深对数据库安全性的理解 实验内容 完整性实验与要求: 1.分别定义数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束; 定义主键: 方法一:使用Enterprise Manager设置主键(以book表为例) ①光标移到book表的位置,右键->设计 ②在你要选的属性列右键->设置主键,完成。

方法二:使用SQL语句。 ①右键数据库,新建查询 设置外键: 方法一:使用Enterprise Manager设置外键(以student表为例) ①单击student表,鼠标移到“键”文件夹,单击右键,选择“新建外键”。 ②选择“表和列规范”进行设置

③我们想在student表设置class_id属性为外键,按照下图选择,点击确定,保存即可。 方法二:SQL语句 新建查询,输入如图语句。

2.向学生表插入具有相同学号的数据,验证其实体完整性约束; Student表的主键是学号,所以不能插入有相同学号的学生。 3.向学生表中插入一条数据,班级号是学生表的外键,验证参照完整性约束; Class表中没有“2013211302”这个班级,所以无法插入。改变班级号为class表中存在的,则能够进行插入,结果如下: 4.删除教师表中的所有数据,验证参照完整性约束;

数据库原理实验报告_实验三_数据完整性与安全性控制

实验内容、步骤以及结果 1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。 (18分,每小题3分) (1) 非空约束:为出生日期添加非空约束。 非空约束:取消表S中sbirth的勾。可能需要重建表。 (2) 主键约束:将学号(sno)设置为主键,主键名为pk_sno。 设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择修改命令-->对话框中右击sno-->选择设置主键'>修改主键名为pk_sno '-->保存

(3)唯一约束:为姓名(sname)添加唯一约束(唯一键),约束名为uk_sname 。 唯一约束:单击数据库Student-->单击表--> 单击S-->右击sname-->选择修改’ 命令T右击 sname-->选择索引和键命令--> 打开索引和键框图--> 添加--> 是否唯一改为是--> 名称改为us sname '-->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为男 设默认约束:单击数据库Student宀单击表宀单击右击sno^选择修改命令宀单击cno-->在默认值栏输入男’保存

D62.s1udent - Diagram_0* D62.sludent - dbo.S* SQLQuery5.sql - D... (D62\A^m i n (52J)* 列容 埶据类型 允祥值 Q 5TI0 Ctiar(lO) n sname nvarchar (20) a 卜:S5SX nchai ■⑵ 團 sbirtti date □ adept nv ar char (20) sPhoneNo ctiar(LQ) @] 数捐类型 允傑Mdl 值 曰表设计器 RowGuid E 标识魁 不用于复制 大小 (5) CHECK 约束:为SC 表的成绩(grade)添加CHECK 约束,约束名为ck grade ,其 检查条件为:成绩应该在0-100之间。 ffin har 妊 2 Nnrh 昙否否否二

数据库实验三实验报告

数据库___课程实验报告实验名称:交互式SQL(二) 姓名班级学号 实验台 编号 同组学生 实验课表现出勤、表现得分25% 实验报告 得分50% 实验总分操作结果得分25% 实验目的: 1.学会熟练使用INSERT语句对数据表进行数据插入操作。 2.学会使用UPDATE语句对数据表中的数据进行修改操作。 3.学会使用DELETE语句对数据表中的数据进行删除操作。 4.了解使用视图的目的与好处,掌握视图与基本表的关系,掌握如何使用SQL语句创建、修改、删除和查询视图。 实验内容: 一、数据的插入、删除和修改 创建表XS1(包括学号、姓名、性别和出生日期字段,各个字段属性自定),然后使用SELECT子句向表XS1中插入多行数据(专业为“电子”的学生数据)。 create view xs1() as select学号,姓名,性别,出生日期from xs where专业='电子'; 修改XS1表的结构,增加1个“平均成绩”字段,并根据XS_KC表修改每个学生的“平均成绩”。 alter table xs1 add平均成绩int; update xs1 set平均成绩=( select avg(成绩)from xs_kc where xs_kc.学号=xs1.学号group by学号); 将XS表中计算机专业的学生的总学分增加10分。 update xs set总学分=总学分+10 where专业='计算机'; 将XS表中学号为“4102101”的同学的总学分增加4分,备注改为“提前修完一门课程”。 update xs set总学分=总学分+4,备注='提前修完一门课程' where学号='4102101'; 将XS_KC表中学号为“4102101”的同学的“计算机基础”课程的成绩增加10分。 update xs_kc set成绩=成绩+10 where学号='4102101'and课程号= (select课程号from kc where kc.课程名='计算机基础'); 修改XS1表的结构,增加1个“总学分”字段,并使其值为该学生所学各门功课的学分之和。 alter table xs1 add总学分tinyint; update xs1 set总学分= (select sum(学分)from kc,xs_kc where xs_kc.学号=xs1.学号and xs_kc.课程号= kc.课程号

数据库4实验报告

太原理工大学学生实验报告 (1)了解SQL Serer数据库系统中数据完整性控制的基本方法 (2)熟练掌握常用CREATE 或ALTER 在创建或修改表时设置约束 (3)了解触发器的机制和使用 (4)验证数据库系统数据完整性控制 二、实验内容和原理 结合school 数据库中的各个表,设置相关的约束,要求包括主键约束、外键约束、唯一约束、检查约束、非空约束等,掌握各约束的定义方法。设置一个触发器,实现学生选课总学分的完整性控制,了解触发器的工作机制。设计一些示例数据,验证完整性检查机制。 3.1要求包括如下方面的内容: 使用 SQL 语句设置约束 使用 CREATE 或 ALTER 语句完成如下的操作,包括: 1.设置各表的主键约束 2.设置相关表的外键 3.设置相关属性的非空约束、默认值约束、唯一约束 4.设置相关属性的 CHECK 约束 3.2使用触发器 创建一个触发器,实现如下的完整性约束: (1)当向 SC 表中插入一行数据时,自动将学分累加到总学分中。 (2)记录修改学分的操作。 3.3检查约束和触发器 分别向相关表插入若干条记录,检查你设置的完整性约束是否有效: 1.插入若干条包含正确数据的记录,检查插入情况 2.分别针对设置的各个约束,插入违反约束的数据,检查操作能否进行 3.向 SC 表插入若干行数据,检查触发器能否实现其数据一致性功能。

三、主要仪器设备(必填) HP6460 SQL SERVER2008 四、方法与实验步骤(可选) 一、声明完整性约束 创建学生选课数据库 TEST,包括三个基本表,其中 Student 表保存学生基本信息,Course 表保存课程信息,SC 表保存学生选课信息,其结构如下表: 表 1. Student 表结构 表 2. Course 表结构 表 3. SC 表结构

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

实验一SQL Server2005常用服务与实用工具实验 所在院(系):信息工程学院 班级:13软件工程转本1班 学号:13131151 姓名:薛伟

1.实验目的 (1)了解Microsoft关系数据库管理系统SQL Server的发展历史及其特性。 (2)了解SQL Server2005的主要组件、常用服务和系统配置。 (3)掌握Microsoft SQL Server Management Studio图形环境的基本操作方法。了解使用“SQL Server2005联机从书”获取帮助信息的方法;了解“查询编辑器”的使用方法;了解模板的使用方法。 2.实验要求 (1)收集整理Microsoft关系数据库管理系统SQL Server的相关资料,总结其发展历史及SQL Server2005主要版本类别和主要功能特性。 (2)使用SQL Server配置管理器查看和管理SQL Server2005服务。 (3)使用Microsoft SQL Server Management Studio连接数据库;使用SQL Server帮助系统获 得所感兴趣的相关产品主题/技术文档。 (4)使用Microsoft SQL Server Management Studio“查询编辑器”编辑并执行Transact-SQL 查询语句。 (5)查看Microsoft SQL Server2005模板,了解模板的使用方法。 (6)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 (1)简要总结SQL Server系统发展历史及SQL Server2005主要版本类别与主要功能特性。SQL Server系统发展历史 1988SQL Server由微软与Sybase共同开发,运行于OS/2平台。 1993SQL Server4.2桌面数据库系统,功能较少。与Windows集成并提供了易于使用界面。1994Microsoft与Sybase在数据库开发方面的合作中止。 1995SQL Server6.05重写了核心数据库系统。提供低价小型商业应用数据库方案。 1996SQL Server6.5 1998SQL Server7.0重写了核心数据库系统,提供中小型商业应用数据库方案,包含了初始的Web支持。SQL Server从这一版本起得到了广泛应用。 2000SQL Server2000企业级数据库系统,其包含了三个组件(DB,OLAP,English,Query)。丰富前端工具,完善开发工具,以及对XML的支持等,促进了该版本的推广和应用。2005SQL Server2005最新版本,历时5年的重大变革。 2007SQL Server2008(Katmi)即将发布。 2008SQL Server2008发布。 -SQL Server2005主要版本类别及功能特性 SQL Server2005Enterprise Edition(32位和64位) Enterprise Edition是最全面的SQL Server版本,是超大型企业的理想选择,能够满足最复杂的要求。 注:没有任何限制,包含所有功能和特性。 SQL Server2005Standard Edition(32位和64位) SQL Server2005Standard Edition是适合中小型企业的数据管理和分析平台。 它包括电子商务、数据仓库和业务流解决方案所需的基本功能。

相关主题
文本预览
相关文档 最新文档