数据库实验报告.docx
- 文档编号:8516566
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:16
- 大小:21.38KB
数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
数据库实验报告
实验一:
数据库和基本表的建立
实验名称:
实验时间:
实验目的:
1、学会使用SQL语句创建数据库和表
2、学会使用SQL语句修改表结构
3、掌握创建和删除索引的方法
实验原理:
1、数据库
CREATEDATABASE数据库名
ALTERDATABASE数据库名
DROPDATABASE数据库名
2、创建表
格式:
CREATETABLE[<数据库名>.]〈基本表名〉(〈列名1〉〈数据类型〉[列完整性约束条件][,…n][,〈表级完整性约束条件〉])
功能:
定义基本表。
3、修改表
格式:
ALTERTABLE〈表名〉ADD〈新列名〉〈数据类型〉[完整性约束条件][,…n]|DROPCOLUMN〈列名〉[,…n]
功能:
修改指定的基本表结构或删除基本表结构。
4.删除表
格式:
DROPTABLE〈基本表名〉
功能:
删除基本表。
5.索引
用CREATEINDEX和DROPINDEX来创建和删除索引。
主要仪器设备:
安装SQLSERVER2000以上的PC机
实验步骤:
1.使用查询分析器创建学生信息管理系统,数据库名xsxxglxt。
CREATEDATABASExsxxglxt
ON
(NAME='xsxxglxt_data',FILENAME='d:
\data\xsxxglxt.mdf',
SIZE=1,MAXSIZE=100,FILEGROWTH=1)
LOGON
(NAME='xsxxglxt_log',FILENAME='d:
\data\xsxxglxt_log.ldf',
SIZE=1,MAXSIZE=100,FILEGROWTH=1)
2.在学生信息管理系统中创建3个数据表:
学生信息表Student、课程信息表Course、课程选修表Scores。
CREATETABLEStudent(SNCHAR(8)NOTNULL
CONSTRAINTSN_IdPRIMARYKEY,
SNameCHAR(10)NOTNULLUNIQUE,
SexCHAR
(2),
AgeSmallintDEFAULT20,
DeptCHAR(20),ClassCHAR(20),
CONSTRAINTC2CHECK(SexIN('男','女')));
GO
CREATETABLECourse(CNCHAR(5)PRIMARYKEY,
CNameCHAR(20),TeacherCHAR(20));
Go
CREATETABLEScores(SNCHAR(8),
CNCHAR(5),GradeSMALLINT,
CHECK(GradeBETWEEN0AND100),
PRIMARYKEY(SN,CN),
FOREIGNKEY(SN)REFERENCESStudent(SN),
FOREIGNKEY(CN)REFERENCESCourse(CN))
GO
3.利用SQL语句对学生信息管理系统中的3个数据表进行相应的修改操作
(1)修改数据库xsxxglxt,增加次数据库文件名为“xsxxglxt_data2.ndf”,该文件采取按10%增长。
可用下列语句完成:
ALTERDATABASExsxxglxt
ADDFILE
(NAME=xsxxglxt_data2,FILENAME='d:
\data\xsxxglxt_data2.ndf',
SIZE=1MB,FILEGROWTH=10%)
(2)在基本表Student中增加一个住址(Address)属性
ALTERTABLEStudentADDAddressCHAR(30)
GO
(3)在基本表Student中删除地址(Address)属性:
ALTERTABLEStudentDROPCOLUMNAddress
GO
4.对以上各表创建、删除一些约束和索引
(1)在Course表的课程名列上建立一个索引,索引名为CName_INDEX
CREATEINDEXCName_INDEXONCourse(CName)
(2)对基本表Scores中的SN,CN建立索引,SN按升序和CN按降序建立唯一索引。
CREATEUNIQUEINDEXSNCN_INDEXONScores(SNASC,CNDESC)
注意事项:
1.注意数据类型、主码和数据约束的限制。
2.区别标准SQL和T-SQL的不同用法
实验二:
数据查询
实验名称:
实验时间:
实验目的
1、掌握SELECT语句的基本语法。
2、掌握简单的单表查询
3、学会连接查询、嵌套查询
4、学会使用聚函数和进行分组查询
实验原理:
1、查询
SELECTselect_list
FROMtable_source
[WHEREsearch_condition]
[GROUPBYgroup_by_expression]
[HAVINGsearch_condition]
[ORDERBYorder_expression[ASC|DESC]]
2、GROUPBY子句
指定用来放置输出行的组,并且如果SELECT子句
函数,则计算每组的汇总值。
指定GROUPBY时,选择列表中任一非聚合表达式内的所有列都应包含在GROUPBY列表中,或者GROUPBY表达式必须与选择列表表达式完全匹配。
如果未指定ORDERBY子句,则使用GROUPBY子句不按任何特定的顺序返回组。
主要仪器设备:
安装SQLSERVER2000以上的PC机
实验内容:
对学生信息管理系统3个表进行查询操作
(1)查询所有计算机学院的学生
SELECT*FROMStudentWHEREDept='计算机学院'
(2)查询姓名以“常”开头的老师所教的课程
SELECT*FROMCourseWHERETeacherLIKE‘常%’
(3)统计所有学生选修的课程门数
SELECTSN,COUNT(*)课程门数FROMScoresGROUPBYSN
(4)在SCORES中检索成绩为空值的学生学号和课程号
SELECTSN,CNFROMScoresWHEREGradeISNULL
(5)查询每个学生的学号、姓名及其选修的课程名及其成绩
SELECTX.SN,X.SName,Z.CName,Y.Grade
FROMStudentX,ScoresY,CourseZ
WHEREX.SN=Y.SNANDY.CN=Z.CN
(6)查询选修某门课程2人以上的课程号和选课人数,并且选修成绩大于75
SELECTCN,COUNT(*)选课人数FROMScoresWHEREGrade>75GROUPBYCNHAVINGCOUNT(CN)>=2
(7)查询其他系中比计算机学院任一学生年龄小的学生学号、姓名、年龄。
可用下列语句来完成:
SELECTSN,SName,AgeFROMStudent
WHEREAge (SELECTAgeFROMStudentWHEREDept='计算机学院')ANDDept<>'计算机学院' (8)检索以“刘”开头的老师所授课程的每门课程的学生平均成绩。 SELECTCN课程号,AVG(Grade)平均成绩 FROMScores,Course WHEREScores.CN=Course.CNandTeacherlike'刘%' GROUPBYCN (9)查询所有未修课程号为C0001的学生学号、姓名。 SELECTSN,SName FROMStudent WHERENOTEXISTS(SELECT*FROMScores WHERESN=Student.SNANDCN='C0001') (10)查询至少选修了学号为02807501学生选修的全部课程的学生学号、姓名。 SELECTDISTINCTSNFROMScoresX WHERENOTEXISTS(SELECT*FROMScoresYWHEREY.SN='02807501'AND NOTEXISTS(SELECT*FROMScoresZWHEREZ.SN=X.SNANDZ.CN=Y.CN)) 注意事项: 1.注意SQL语句中中英文字符的区别 2.注意T-SQL中内连接和外部连接表达方法 3.注意T-SQL中GROUPBY子句的使用方法 4.建议始终使用ORDERBY子句指定具体的数据顺序。 实验三: 数据更新 实验名称: 数据更新 实验时间: 实验目的: 1、学会使用INSERT语句插入数据 2、学会使用UPDATE语句修改数据 3、学会使用DELETE语句删除数据 实验原理: 1、INSERT将新行添加到表或视图 格式1: INSERTINTO<表名>[(<属性列>[,…n])] VALUES(<常量1>[,...n]) 说明: 执行一次命令只能完成一个记录的插入。 格式2: INSERTINTO<表名>[(<属性列>[,…n]) 子查询 说明: 其功能是批量插入,即一次将子查询结果全部插入指定表中。 2、UPDATE更改表中的现有数据 格式: UPDATE<表名> SET<列名>=<表达式>[,...n] [WHERE<条件>]; 功能: 修改指定表中满足WHERE子句条件的记录。 3、DELETE从表中删除行 格式: DELETE FROM<表名> [WHERE<条件>]; 功能: 从指定表中删除满足WHERE子句条件的所有记录。 主要仪器设备: 安装SQLSERVER2000以上的PC机 实验内容: (1)向学生表、课程表、成绩表中插入一些数据 INSERTINTOStudent VALUES('04809501','张三','男',20,'计算机学院','04信息2') INSERTINTOStudent VALUES('04809502','李四','男',21,'计算机学院','04信息1') NSERTINTOCourse VALUES('C0001','数据库原理与应用','常老师') INSERTINTOCourse VALUES('C0002','信息系统分析与设计','钱老师') INSERTINTOScores VALUES('04809501','C0001',90) INSERTINTOScores VALUES('04809502','C0001',95) (2)对每个系部求学生的平均年龄,并把结果存入数据库中。 第一步: 创建新表。 可用下列语句来完成: CREATETABLEDeptAge (DeptCHAR(15), AvgageSMALLINT); 第二步: 进行子查询后再插入数据。 可用下列语句来完成: INSERTINTODeptAge(Dept,Avgage) SELECTDept,AVG(Age) FROMStudentGROUPBYDept; 或者 SELECTDept,AVG(Age)ASAVGAgeINTODeptAGE FROMStudent GROUPBYDept (3)将计算机学院学生的成绩统一提高25% UPDATEScores SETGrade=Grade*(1+25%) WHERESNIN (SELECTSNFROMStudentWHEREDept=’计算机学院’ (4)将数据库原理与应用课程的成绩置空 第一种方法: UPDATEScores SETGrade=0 WHERECNIN (SELECTCNFROMCOURSEWHERECNAME='数据库原理与应用') 第二种方法: UPDATEScores SETGrade=0 WHERE'数据库原理与应用'= (SELECTCNAMEFROMCourseWHERECN=Scores.CN) (5)删除计算机学院所有学生的选课成绩记录。 第一种方法: DELETEFROMScoresWHERESNIN( SELECTSNFROMStudentWHEREDept='计算机学院') 第二种方法: DELETEFROMScoresWHERE'计算机学院'=( SELECTDeptFROMStudentWHERESN=Scores.SN) 注意事项: 1.注意数据更新操作与文档操作习惯的不同 2.注意没有约束的数据表进行数据更新操作的问题 3.区别有无约束的数据表的数据更新操作的不同 4.数据更改和数据删除时要注意外码约束 实验四: 视图的建立、查询与更新 实验名称: 视图的建立、查询与更新 实验时间: 实验目的 1.理解视图的特点,明确视图所能带来的各种好处 2.掌握创建和管理视图的方法 3.掌握通过视图来修改基本表的数据的方法 4.理解如何通过视图来实现数据的安全保护 实验原理 1.创建视图 格式: CREATEVIEW<视图名>[(<列名>[,...n])] AS<子查询> [WITHCHECKOPTION]; 功能: 定义视图名和视图结构,并将子查询得到的记录作为视图的内容。 2.删除视图 格式: DROPVIEW<视图名> 功能: 删除视图。 3.查询与更新 视图定义后,用户就可以对视图查询和适当的更新。 主要仪器设备: 安装SQLSERVER2000以上的PC机 实验内容 1.建立所有计算机学院学生的视图。 CREATEVIEWComputer_View AS SELECTSN,SName,Sex,Age,Class FROMStudent WHEREDept='计算机学院' 2.建立所有计算机学院学生的视图,并要求进行修改和插入操作时仍须保证该视图只有计算机学院的学生。 CREATEVIEWComputer2_View AS SELECTSN,SName,Sex,Age,Class FROMStudent WHEREDept='计算机学院' WITHCHECKOPTION 3.建立计算机学院选修了C0001课程的学生的视图。 CREATEVIEWScores1_View AS SELECTScores.SN,SName,Grade FROMStudent,Scores WHEREDept='计算机学院'ANDStudent.SN=Scores.SNANDScores.CN='C0001' 4.建立计算机学院选修了C0001课程且成绩在90分以上的学生的视图。 CREATEVIEWScores2_View AS SELECTSN,SName,Grade FROMScores1_View WHEREGrade>90 5.在计算机学院学生的视图中找出年龄小于20岁的学生。 SELECTSN,SName FROMComputer_View WHEREAge<20 上面SQL语句实际上相当于下面的语句: SELECTSN,SName FROMStudent WHEREDept='计算机学院'ANDAge<20 6.将计算机学院学生视图Computer2_View中学号为02807502的学生姓名改为“李莉”。 UPDATEComputer2_View SETSName='李莉' WHERESN='02807502' 上面的SQL语句相当于下面的语句。 UPDATEStudent SETSName='李莉' WHERESN='02807502'ANDDept='计算机学院' 7.删除Scores1_View。 DROPVIEWScores1_View 注意事项: (1)若视图是由两个以上基本表导出的,则此视图不允许更新。 (2)若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。 (3)若视图的字段来自集函数或视图定义中含有GROUPBY子句、DISTINCT短语,则此视图不允许更新。 (4)若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。 实验五: 数据库安全性管理 实验名称: 数据库安全性管理 实验目的: 1.了解SQLSERVER的安全管理机制。 2.掌握SQLSERVER中登录标识管理的方法 3.掌握SQLSERVER中角色管理的方法 4.掌握SQLSERVER中数据库用户管理的方法 5.了解SQLSERVER中权限设置 实验原理: 1.创建SQLSERVER登录帐号 格式: sp_addlogin‘登录帐号名'[,‘密码'][,'数据库名'] 功能: 创建SQLSERVER登录帐号 2.创建数据库用户 格式: sp_grantdbaccess‘登录帐号名’[,‘数据库用户名’] 功能: 创建数据库用户 3.权限管理 格式: GRANT{ALL|系统权限[,...n]} TO<用户>[,...n]|PUBLIC [WITHADMINOPTION] 功能: 将系统权限授予用户。 格式: GRANTALL|<对象权限>[(列名[,…n])] ON<对象名> TO<用户名>|PUBLIC[,…n] [WITHGRANTOPTION] 功能: 将指定的操作对象的对象权限授予指定的用户。 格式: REVOKE<系统权限>[,…n] FROM<用户>[,…n] 功能: 收回用户具有的系统权限。 格式: REVOKE<对象权限>[,…n] FROM<用户名>|PUBLIC[,…n] 功能: 收回用户具有的对象权限 主要仪器设备: 安装SQLSERVER2000以上的PC机 实验内容 主要通过实验熟悉SQLSERVER2000中安全访问控制、登录标识管理、角色管理、数据库用户管理、权限设置等方面的内容。 1.创建一个SQLSERVER登录名student123,密码为123,默认数据库为student。 EXECSP_ADDLOGIN‘student123’,’123’,’student’ 2.在student数据库中为SQLSERVERY用户账号student123添加数据库用户名,并取名为123。 EXECSP_GRANTDBACCESS‘student123’,’123’ 3.将创建表的权限授予用户student和123。 GRANTCREATETABLETOstudent,[123] 4.授予角色public对表Scores的select权限,授予用户123对表Course的insert和delete的权限。 GRANTSELECTONScoresTOpublic GRANTINSERT,DELETEONCourseTO[123] 5.给用户Mary和John授予产生数据库和表的系统权限 GRANTCREATEDATABASE,CREATETABLE TOMary,John 6.把对学生表中学号修改的权限授予用户USER2,并允许将此权限再授予其他用户。 GRANTUPDATE(SN) ONStudent TOUSER2 WITHADMINOPTION USER2具有此对象权限,可使用GRANT命令给其他用户授权。 下面语句USER2将此权限授予USER3。 GRANTUPDATE(SN) ONStudent TOUSER3 7.收回用户Mary所拥有的CREATETABLE的系统权限。 REVOKECREATETABLE FROMMary 8.收回用户USER2修改学生表中学号的权限。 REVOKEUPDATE(SN) ONTABLEStudent FROMUSER2 注意事项: 1.如果用户名为数字,输入时写成“[123]”。 2.SQLServer与标准SQL的不同是省去了对象类型,直接写对象名称即可。 3.撤消权限的作用类似于禁止权限,它们都可以删除用户或角色的指定权限。 但是撤消权限仅仅删除用户或角色拥有的某些权限,并不禁止用户或角色通过其它方式继承已被撤消的权限。 实验六: 数据库应用系统设计与开发 实验名称: 数据库应用系统设计与开发 实验目的: 通过一个简单的完整的数据库应用系统示例剖析,同学们应: 1.了解一个数据库应用系统的主要功能 2.掌握可视化语言与数据库的连接方式 3.掌握报表的创建过程 实验原理: 1.掌握可视化语言C#与数据库的连接方式 C#连接数据库方式: .NETFramework提供了SQLSERVER.NETFramework数据提供程序,定义于命名空间System.Data.SqlClient,用于连接SQLServer7.0及以上版本。 它包括SqlConnection、SqlCommand、SqlDataReader及SqlDataAdapter对象。 范例: StringstrCnn=”datasource=localhost;InitialCatalog=student;UserId=sa;Pwd=sa;ConnectionTimeout=30”;//设置数据库连接字符串 SqlConnectionsqlCnn=newSqlConnection();//创建连接对象 sqlCnn.ConnectionString=strCnn; sqlCnn.Open();//建立连接 SqlCommandsqlCmd=sqlCnn.CreateCommand();//创建Command对象 sqlCmd.CommandType=CommandType.Text;//类型为SQL操作语句 …….//对数据库进行操作 sqlCnn.Close();//关闭数据库连接 主要仪器设备: 安装SQLSERVER2000以上和VisualStudio.NET的PC机 实验内容: 一个数据库应用系统主要工作就是对数据进行增加、修改、删除、更新等处理、对数据库中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告