1、实验一 SQL Server基本使用与数据定义一实验目的1掌握“企业管理器”及查询的定义方法使用方法;2熟悉数据库建模及E/R图的画法;3掌握SQL Server 中数据库、及数据表的建立与管理方法;4掌握数据的导入/导出及数据库备份/还原方法。二实验内容一、SQL Server 基本使用1启动SQL SERVER。从SQL Server 2005程序组中启动“SQL Server”,弹出如下对话框。按提示执行以下三项操作:l 选择服务器l 选择身份验证模式(SQL Server身份验证,指定登录名和密码)在“服务器”列表框中,选择服务器类型,选择输入相应的服务器名称,选择身份验证模式.如图1
2、1:点击连接。图112对象资源管理器连接完成后,进入对象资源管理器界面,如图12图123、在对象资源管理器的使用 点开服务器名称,打开树状结构,可以看见服务器上的数据库对象和其他对象。4创建查询SQL Server提供了许多工具,可以用于管理服务器和客户机、开发数据库和应用程序.查询它可以通过图形界面执行SQL语句。创建查询后在其中可以交互式地输入和执行各种SQL语句,并且可以在一个窗口中同时查看SQL语句和其结果集;可以在同时执行多个SQL语句,也可以执行脚本文件中的部分语句; 打开方法:创建SQL查询分。如下图1-3所示,可在工具栏中选择要操作的数据库(如master),并在查询窗口中输入
3、相应的SQL语句(select * from sysfiles),点击工具条的绿色小三角运行你输入的SQL语句.此时在查询窗口的下部会显示执行结果。图13查询结果的显示方式,可通过查询菜单设置:文本显示结果、以表格显示结果或结果保存为文件。5查看数据库及浏览表中记录查看已建立的数据库在对象资源管理器中,单击服务器左侧的+号,选择“数据库”选项,可以看到在数据库服务器中已建立的数据库. 浏览表中记录 选择某数据库并选择数据库中的“表”选项 .选择要浏览的表,按右键并选择:打开表/返回所有行 ,即可浏览表中记录。二、数据库的建立与管理1数据库建模依据数据库设计总体需求及原始数据,在实验前完成数据库
4、的建模工作(写出预习报告)。具体要求如下:(1)设计订单作为联系的E/R图.(2)设计订单作为实体的E/R图。(3)标出E/R图中各实体的键码。(4)将订单作为实体的E/R图转换为关系模型.3使用图形界面创建数据库和表 使用图形界面(对象资源管理器)并依据内容1中的关系模型创建数据库和表。创建数据库右击“数据库”选项,点击“新建数据库”,在弹出对话框中输入你要创建的数据库名(例如mybatabase)后直接按确定键。这时系统就会创建一个名为mydatabse的数据库。 创建表 在数据库中。右击“表”选项. 选择“新建表” ,输入:列名、数据类型、长度等,并存盘。4使用查询分析创建表。 点击创建
5、查询;. 在出现的“查询窗口”中选择你要操作的数据库,然后就可以在下面的编辑框中输入SQL语句建立相关表。. 点击工具条的绿色小三角(或按F5)就可以运行你输入的SQL语句。5数据库的备份与还原数据库的备份: 运行企业管理器,右击你所要备份的数据库,选择“任务”中的“备份数据库”。 输入备份数据库的名称,点击“添加后输入备份数据库存放的目录和文件名。按确定按钮,备份完成。数据库的还原:一旦数据库遭到破坏,可用备份的数据库进行恢复。 运行企业管理器,右击“数据库”,在“任务”中选“还原数据库”。 在“常规”页中输入恢复的数据库名,选择“从设备” 还原,点击“选择设备”后,再点击“添加按钮选择你所
6、要恢复的数据库备份文件名.点击确定按钮完成恢复. 如果原有数据库被删除,恢复异常。则可先建立一个同名数据库,再在数据库上进行强制还原即可。实验二、数据更新与简单查询一实验目的:1掌握向表中进行数据更新的方法。2. 掌握视图的创建与删除方法。3掌握视图的查询与更新方法.二实验内容 与 相关代码:1插入数据。在产品表格中插入一种新产品。 0077、瓷器,单位(件)、8000、3、1002、10000。00insert into 产品values(0077,瓷器,单位(件),8000,3,1002,10000,00,NULL);在订单表中插入新订单。 666、20030606、300 666、200
7、70601、9990.00insert into 订单values(666,2003-0606,300);insert into 订单values(777,2007-0601,9990。00);在代理商表中插入新代理商。 05、海信、中山路9号、541000、200000.00、60insert into 代理商values(05,海信,中山路9号,541000,200000.00,60);2修改数据。 更新所有代理商的提成比例为20。update 代理商set 提成比例 = 20; 为产品表格增加一个新字段-缺货量。alter table 产品add 缺货量 int; 将编号为0011的产品
8、单价更新为1000。update 产品set 价格 = 1000where 产品编号 =0011;3删除数据。 删除编号为700的客户.deletefrom 客户where 客户编号 = 700; 删除编号为05的代理商。deletefrom 代理商where 代理商编号 = 05;4建立与删除索引的方法。在各表中,分别按代理商编号、客户编号、产品编号及订单编号建立索引.create index dailiindex on 代理商(代理商编号);create index dailiindex on 客户(客户编号);create index dailiindex on 产品(产品编号);cre
9、ate index dailiindex on 订单(订单编号);5单表查询。 从产品表中查询现有产品的库存量。select 库存量from 产品; 从客户表中查询“王五”的地址及代理商编号。select 地址,代理商编号from 客户where 姓名 = 王五; 从代理商表中查询代理商“惠普”的提成金额。select 提成金额from 代理商where 姓名 = 惠普; 从订货项目表中查询编号为“444”的订单所订购的商品编号及数量.select 产品编号,订购数量from 订货项目where 产品编号 = 444; 分别求代理商和客户的总数。select count(*)from 代理商;
10、select count()from 客户; 从订货项目表中,查询编号为0033的产品定货总数量。select sum(订购数量)from 订货项目where 产品编号 = 0033;三实验总结:1。插入数据的INSERT INTO语法如下:INSERTINTO 表名 (字段1,字段2, 。.)VALUES (值1,值2, 。.);2.修改数据的UPDATE SET语法如下:UPDATE表名SET = ,列名 = 表达式WHERE ;3。删除数据的DELETE语法如下:DELETEFROM表名WHERE ;4。 建立与删除索引的方法如下:CREATE UNIQUE CLUSTER INDEX
11、,);5.单表查询的方法如下:SELECT FROM 表名WHERE 条件;参考教材P112126完成更多操作实验三 SQL复杂查询与视图一实验目的:1掌握SQL语言中SELECT语句的多种查询方式.2掌握对表建立与删除索引的方法。3掌握聚焦函数的使用方法。4掌握集合查询方法。二实验内容 与 相关代码:2多表查询 查询编号为300的客户通过的代理商的姓名和地址。select 代理商.姓名,代理商.地址from 代理商,客户where 客户编号=300 AND 代理商.代理商编号= 客户。代理商编号; 查询产品编号为0033、订货数量大于100的客户编号及其姓名。方法一:select 客户.客户
12、编号,客户.姓名from 客户where 客户编号IN (select 客户编号from 订单where 订单编号IN(select 订单编号from 订货项目where 订购数量 100 and 产品编号=0033));方法二:select 客户.客户编号,姓名from 客户,订单,订货项目where 客户.客户编号=订单。客户编号AND 订单。订单编号=订货项目.订单编号AND 订购数量100 AND 产品编号=0033; 查询每个客户的订单,显示客户编号、客户名、订单编号及订货日期。select 客户。客户编号,姓名,订单编号,订货日期from 客户,订单where 客户。客户编号= 订
13、单.客户编号order by 客户编号ASC; /按 客户编号 升序(ASC)降序(DESC)排序 查询所有2000年以后订货项目。select from 订单where 订货日期 2000; 查询提成金额为100000以上(含100000)的代理商所对应的客户。select 客户。*from 代理商,客户where 提成金额100000 AND 代理商。代理商编号= 客户.代理商编号;3、嵌套查询 分别用带有IN谓词的子查询和带比较运算符的子查询实现以下操作 查询与“刘晨”在同一个系学习的学生.select *from studentwhere Sdept IN(select Sdeptfr
14、om studentwhere Sname = 刘晨); 查询选修了课程名为“操作系统的学生。select from studentwhere Sno IN(select Snofrom scwhere Cno IN (select Cnofrom coursewhere Cname=操作系统));4建立视图 建立含有订单号及拥有该订单的客户编号和代理商号三个字段的视图。create VIEW 订单视图asselect 订单。订单编号,客户。客户编号,代理商。代理商编号from 订单,客户,代理商where 订单.客户编号= 客户。客户编号AND 客户.代理商编号= 代理商.代理商编号; 立一
15、个含有产品编号、产品库存量及产品在订量三个字段的视图。create VIEW 产品视图asselect 订货项目.产品编号,订货项目.订购数量,产品.库存量from 订货项目,产品where 订货项目。产品编号= 产品。产品编号; 建立一个含有客户编号、客户所订的产品、该产品的订购价及该产品的描述四个字段的视图。create VIEW 订购视图asselect 客户。客户编号,订货项目。订购单价,产品.信息描述from 客户,订单,订货项目,产品where 客户。客户编号= 订单。客户编号AND 订单.订单编号= 订货项目。订单编号AND 订货项目.产品编号= 产品。产品编号;建立一个含计算机
16、科学系的学生及年龄不大于19岁的学生的视图。create VIEW CS19学生试图asselect from studentwhere Sdept=CS AND Sage19; 建立一个既选修了课程1又选修了课程2的学生视图。create VIEW 选修1AND2课程学生视图asselect *from studentwhere Sno IN(select Snofrom scwhere Cno=1intersectselect Snofrom scwhere Cno=2);5在视图基础上的查询 查询所有订单的客户和代理商。select 客户编号,代理商编号from 订单视图; 查询编号为4
17、00的客户所订的产品以及该产品的单价。select 订购单价from 订购视图where 客户编号=300; 查询选修课程1的所有学生。select Snamefrom studentwhere exists(select *from scwhere Sno=student。Sno AND Cno =1);实验四 数据库的安全一实验目的1掌握SQL Server 中数据库安全性管理的策略与方法。二实验内容数据库的安全主要包括几个方面的内容:安全模式,SQL Server服务器安全, SQL Server登录帐号, 角色, SQL Server用户和许可等内容. 安全模式包括如下内容:(1) 安
18、全规划:(2) 选择安全的形式:指选择用户登录的登录认证方式.1认证模式 认证是指当用户访问数据库系统时,系统对该用户的帐户和口令的确认过程。SQL Server可以识别两种类型的登录认证机制。 SQL Server认证机制 Windows NT认证机制当使用SQL Server认证机制时,SQL Server系统管理员定义SQL Server的登录帐户和口令。当用户连接SQL Server时,必须提供登录帐户和口令.当使用Windows NT认证机制时,由Windows NT帐户控制用户对SQL Server系统的访问。这时用户不必提供SQL Server的登录帐户和口令就能连接到系统上,但
19、是,在该用户连接之前,SQL Server系统管理员必须将Windows NT帐户定义为SQL Server的有效登录帐户(请参考Windows NT帐户管理方法)。用户可以使用SQL Server企业管理器来设置服务器的认证模式.设置方法参见实验一。2登录管理 登录帐户是基于SQL Server服务器使用的用户名,可控制用户对数据库服务器的访问.在SQL Server中有一个特殊的登录帐户:sa,是系统管理员的简称,它在SQL Server系统和所有数据库中有全部的权限,不能被删除。设置sa帐号密码: 单击相应服务器属下的 “Login”;右单击右窗格的用户名,选择 “属性。增加登录帐户的两
20、种方法:一是:从Windows NT组和用户中创建登录帐户和创建新的SQL Server登录帐户(参考Windows NT帐户管理方法)。二是:使用SQL Server企业管理器创建登录帐户,方法如下:在SQL Server企业管理器选择一服务器,选择“安全性文件夹,在“安全性”文件夹中,右击“登录,选择“新建登录”,则出现如下窗口:在常规选项卡中输入登录名和口令;在服务器角色选项卡中选择相应服务器角色复选框;在数据库访问选项卡中选择要访问的数据库及指定该帐户所属的数据库角色。最后按确定即可。用刚建立的登录帐户登录服务器:先右击服务器,选择断开,再右击服务器,选择连接。按提示输入帐户名和口令即
21、可登录.如果选择连接时不提示输入帐户/口令,可选择强制用户登录时验证帐户和口令(参见5.) (3)配置安全角色 角色:SQL Server2000服务器操作和数据库访问许可的管理单位,角色可以把各个用户汇集成一个单元,以便进行许可管理。SQL Server提供了用于通常管理工作的预定义服务器角色、和数据库角色,以简化对某一个用户授予一些管理许可的工作。可在建立登录帐户时设置.系统管理员给适当用户分配相应的角色是SQL Server服务器和数据库安全的关键之一。SQL Server2000服务器系统管理员或数据库所有者在设置数据库访问许可时,应先创建新的角色并将访问许可集中授予角色,然后再将需要
22、拥有这一许可权限的用户加入到角色中, 加入到角色中的所有用户自动具有角色所拥有的访问许可权限.常用固定服务角色如下角色许可系统管理员(system administrator)执行任意活动数据库创建者(database creator)创建和修改数据库磁盘管理员(disk administrator)管理磁盘文件进程管理员(process administrator)管理系统进程安全管理员(security administrator)管理和审核服务器登录服务器管理员(server administrator)配置服务器端设置安装管理员(setup administrator)安装复制 固定的
23、数据库角色及许可常用固定数据库角色及其许可角色许可Public维护全部默认的许可Db_owner执行任何数据库角色的操作Db_accessadmin增加或者删除数据库用户、组和角色Db_ddladmin增加、修改或者删除数据库对象Db_securityadmin执行语句和对象许可Db_backupoperator备份和恢复数据库Db_datareader读取任意表中的数据Db_datawriter增加、修改或者删除全部表中的数据Db_denydatareader不能读取任一个表中的数据Db_denydatawriter不能修改任一个表中的数据创建角色方法:用户只能创建数据库角色,只在其所在的数
24、据库中有效,对其他数据库无效。 右单击 “角色”授权:授予用户,用户组以及角色某种或某些许可权限,权限:一种对数据库对象的操作权力.用户登录到SQLServer服务器后,其所充当的角色和用户的许可,就决定了它们对数据库对象所能执行的操作。创建应用程序角色:标准角色可在SQLServer某些方面Enterprise Manager窗口中操作数据库,也可以通过应用程序使用数据库; 应用程序角色:仅可以通过应用程序访问数据库的角色;创建应用角色后,授权方法跟标准角色授权方法一样.添加角色到固有角色,角色就具有相应固有角色所具有的授权。方法:右键单击需将角色添加到其属下的固有角色。“属性-按“add.
25、创建SQL Server用户方法:右键单击需将创建角色的数据库属下的的 “user”. SQL Server用户只能用于访问数据库,不能用于登录4许可管理 许可的种类:对象许可,数据库许可和固有角色的隐含许可在SQL SERVER 系统中,把权利定义为许可,通过实行许可管理,维护数据的有序流动。可在用户权限中设定.设置对象许可的方法:右键单击需设置许可的对象(以数据表为例)-“属性”-permissions设置语句许可的方法:右键单击需设置语句许可的数据库名-“属性-单击“permissions选项卡授权5强制用户登录时验证用户名及口令右击服务器,选择“编辑SQL Server注册属性”,如下
26、图所示:选择“总是提示输入登录名和密码”,再重新登录即可。实验完成规划实施某部门SQL Server安全策略具体要求 和 相关操作 如下:1。 部门总监(1人):作为系统管理人员,允许任何操作。a) 用户名:vadminb) 服务器角色:sysadminc) 数据库角色:无d) 权限:无2. 服务器登录安全管理员(1人):可设置和管理用户登录帐号,授权访问订单数据库。a) 用户名:vsafemanagerb) 服务器角色:securityadminc) 数据库角色:无d) 权限:无3. 数据库维护人员(1人):可对订单数据库进行任何操作,没有登录管理操作权限。a) 用户名:vmaintaine
27、rb) 服务器角色:无c) 数据库角色:db_ownerd) 权限:无4。 数据录入人员(2人):可进行数据录入,不能创建与修改表结构及其它授权等操作。a) 用户名:vdata_in01,vdata_in02b) 服务器角色:无c) 数据库角色:db_datawriterd) 权限:无5. 订单管理人员(2人):能对订单数据库中的订单表和项目表进行更新,其它表仅能查询.a) 用户名:vorder01,vorder02b) 服务器角色:无c) 数据库角色:db_datareaderd) 权限:对订单表和项目表设置插入(INSERT)、更新(UPDATE)权限6。 客户管理人员(2人):能对订单数
28、据库中的代理商表和客户表进行更新,其它表仅能查询.a) 用户名:vcustomer01, vcustomer02b) 服务器角色:无c) 数据库角色:db_datareaderd) 权限:对代理商表和客户表设置更新(UPDATE)权限注意:以上人员的登录帐号和密码统一规划设置。综合设计I开放数据库互连(ODBC)是Microsoft引进的一种早期数据库接口技术.它实际上是我们要在本章后面加以讨论的ADO的前身。Microsoft引进这种技术的一个主要原因是,以非语言专用的方式,提供给程序员一种访问数据库内容的简单方法。换句话说,访问DBF文件或其他数据库以得到数据库中的数据时,无需懂得数据库程
29、序设计语言.一实验目的1 掌握客户端访问数据库的方法。2 掌握常用数据感知元件的应用。 3、DELPHI程序的基本设计方法。二实验内容1ADO简介ADO是Active Data Objects(活动的数据对象)的简称,是Microsoft用来访问数据库接口,也称OLE DB(对象链接和嵌入数据库).Delphi提供了一组ADO元件,可以通过ADO技术来访问数据库。然后用现有的数据感知控件(如DBGrid)即可显示ADO数据。ADO元件用途TADOConnection用于连接一个ADO数据库.多个ADO元件可以共享这个连接来执行命令、检索数据和对数据库对象进行操作。TADODataSet代表一个
30、ADO数据集,可以从一个或多个表中检索数据。TADOTable代表一个表,可以从单人表中检索数据TADOQuery用SQL语句查询数据集;2使用ADOConnection来连接数据库在ADO中将ADOConnection拖入FORM1中,并单击设置ConnectionStringBuild提供者选择。for SQL Server;连接选择:数据库、用户。.。;高级设置:连接超时30秒。测试并确定.3使用ADOTable来连接表同样设置ADOTable,Connection属性为以上设置的ADOConnection1,在TableName中选择连接的表名。设置Active为true。 4使用DB
31、Grid显示表先Data Access中选择设置Data Source的DataSet属性为ADOTable1。然后再在Data Controls中,选择设置DBGrid(方法同上)DataSource属性为Data Source1。5使用数据库导航器(DBNavigator)在Data Controls中,选择设置DBNavigator 的DataSource属性为Data Source1。6实现在同一窗体中显示多表内容,并能用数据库导航器进行增加、删除等操作。7、主界面的制作缺省状态下,工程中创建并保存的第一个窗体将成为工程的主窗体,若要改变工程的主窗体,操作如下:1) 选择Project
32、/Options,然后选中Forms页面。2) 在Main Form组合框中,选取想以其作为工程主窗体的窗体,然后选择OK。 此时运行应用程序时,就会显示新选择的主窗体。8、界面的连接若将其它窗体加到工程中,可选取File/New Form9、主菜单的使用在编写引用新窗体的程序代码之前,需要在引用该窗体的单元文件中加入窗体引用,称之为窗体链接.操作如下:3) 选取需要引用另一个窗体的窗体4) 选择File/Use Unit。5) 为被引用窗体选取窗体单元名。6) 选择OK 若两个窗体互相引用(递归引用),编译程序会出错,解决方法如下:l 将两个uses子句和单元标识符放在独立单元文件的impl
33、ementation部分(如:File/Use Unit.)。l 将一个uses子句放在interface部分,而另一个uses子句放在implementation部分。要求:根据以上方法,创建一主窗体和两个子窗体,在主窗体中使用按钮控制连接两子窗体.在子窗体中分别连接访问订单表和订货项目表,并用DBNavigator控制记录浏览。数据库综合设计II一、 设计目的结合数据库原理的基本理论,选用一种现代关系数据库系统(如:SQL SERVER),设计一个具体的信息管理系统.通过本课程的训练,使学生掌握数据库技术的实际应用以及数据库信息管理系统的设计方法与开发过程;掌握数据库开发工具的使用以及综合
34、编程调试的能力,为以后能进行数据库系统设计、开发与维护打下良好的基础.二、 设计要求结合一个具体任务(见附件一:课程设计参考题目),完成一个基于C/S模式的数据库系统的设计与开发,主要应包括如下内容:1完成课题任务的需求分析、完成系统总体结构设计方案。(主控功能模块、数据处理模块、统计报表模块等)2数据库结构的设计与实现.3数据库安全的设计4客户端数据库应用程序的开发。5综合调试方法的掌握。三、 客户端数据库应用程序的开发内容完成信息管理系统的主界面设计;数据输入与修改的设计;数据查询的设计;统计与报表输出的设计.要求功能完整,数据处理正确。四、 设计完成形式1能够进行操作演示的自己设计的管理
35、软件一套。2课程设计报告一份。五、 参考文献赵建明 手把手教你学用数据库 清华大学 2001。6刘前进 Delphi数据库编程技术 人民邮电出版社 1999.10段来盛 Delphi实战演练 人民邮电出版社 2000。1肖永顺 Delphi 程序设计 人民邮电出版社 2000.5六、 参考网站Delphi技术网站: www。delphibbs。com附件一:课程设计参考题目(也可另选其它题目)1人事档案管理信息系统2工资管理信息系统3学生成绩管理系统4商品进货管理系统5商品销售管理系统6商品库存管理系统7图书管理信息系统8设备管理系统附件二:开发应用程序用户界面(仅供参考)2. 使用主窗体缺省
36、状态下,工程中创建并保存的第一个窗体将成为工程的主窗体,若要改变工程的主窗体,操作如下:1) 选择Project/Options,然后选中Forms页面。2) 在Main Form组合框中,选取想以其作为工程主窗体的窗体,然后选择OK. 此时运行应用程序时,就会显示新选择的主窗体。3. 加入其它窗体若将其它窗体加到工程中,可选取File/New Form4. 链接窗体在编写引用新窗体的程序代码之前,需要在引用该窗体的单元文件中加入窗体引用,称之为窗体链接。操作如下:1) 选取需要引用另一个窗体的窗体2) 选择File/Use Unit。3) 为被引用窗体选取窗体单元名。4) 选择OK 若两个窗
37、体互相引用(递归引用),编译程序会出错,解决方法如下:l 将两个uses子句和单元标识符放在独立单元文件的implementation部分(如:File/Use Unit.)。l 将一个uses子句放在interface部分,而另一个uses子句放在implementation部分。不要把两个uses子句都放在独立单元文件的interface部分,这会产生“递归引用”。5. 显示和释放窗体显示FORM1:FORM1.SHOWMODAL;关闭FORM1:FORM1.CLOSE;释放FORM1:FORM1.FREE;6. 记录的移动应用程序可以用来移动到不同记录的方法:First 移动到第一条记录
38、Last 移动到最后一条记录Nex 向下移动一条记录Prior 向上移动一条记录如将当前打开表TABLE1当前记录指针移动到最后一条记录:TABLE1.Last;7. 修改数据可以使用下列的数据集方法来新增、更新和删除数据;Edit 编辑修改Append 在数据集末尾插入一条记录Insert 在当前记录之前插入一条新记录Post 把新增或更新的数据写回数据库Cancel 取消当前操作Delete 删除当前记录方法:在Table1(组件名)所连接的数据表中插入新记录方法如下: Table1.Insert;注意:在新增或更新数据前,应将组件和数据集l ReadOnly属性设置为Falsel Can
39、Modify属性设置为True8. 使用查询客户端应用程序使用ADOQuery组件的属性和方法来操作SQL语句及其参数、执行查询等.在设计期使用ADOquery组件:方法和ADOTable组件相同。并可在其SQL属性中指定查询语句、设置Active属性为True。在执行时期直接定义SQL属性方法如下:1) 调用Close方法关闭查询。2) 如果正在更换整个SQL语句,请调用SQL属性的Clear方法来清除当前的SQL语句。3) 创建或加入一行SQL语句,可调用SQL属性的ADD方法。4) 调用Open或ExecSQL方法执行查询。 构造整个SQL语句的程序代码如下:(参考) with Query1 do beginclose; 关闭查询with SQL do begin clear 删除当前的SQL语句 add(SELECT FROM Tablename); 加入SQL的第一行 add(WHERE 性别= ” 女 ” ); 加入第二行end;open; end;