电商系统功能开发.docx
大连东软信息学院电商系统功能开发技能实习手册 系 别: 信管系 专业班级: 商务09001 学 号: 09120100128 学生姓名: 施冰冰 指导教师: 黄川林 第一部分SQL Server 2005 数据库1. 数据库基本操作1.1实验目的安装SQL Server 2005;了解SQL Server 2005 各组件;建立和删除数据库;理解SQL Server的数据类型,建立、删除和修改表。1.2实验步骤1.2.1 安装SQL Server 20051) 将SQL Server 2005的安装光盘放入光驱中,运行光驱中的autorun.exe程序,出现安装启动画面。2) 在弹出的“最终用户许可协议”对话框中,选择“我接收许可条款和条件”复选框。然后单击“下一步”按钮。3) 接着,在弹出的“安装必备组件”对话框中列出了安装SQL Server 2005之前所需的所有必要组件。单击“安装”按钮,开始安装和配置这些组件。4) 安装完成后,单击“下一步”按钮,启动“安装向导”对话框。5) 单击“下一步”按钮,打开“系统配置检查”对话框。6) 单击“下一步”按钮,弹出“注册信息”对话框,输入姓名、公司名称和注册码后,单击“下一步”按钮。7) 接着,会打开“要安装的组件”对话框。在此对话框中,选择要安装的组件。 8) 单击“下一步”按钮,打开“实例名”对话框。9) 选择“默认实例”单选项,单击“下一步”按钮,打开“服务账户”对话框。10) 配置完成后,单击“下一步”按钮,打开“身份验证模式”对话框。11) 单击“下一步”按钮,打开“排序规则设置”对话框。12) 单击“下一步”按钮,打开“错误和使用情况报告设置”对话框。13) 单击“下一步”按钮,打开“准备安装”对话框。14) 单击“安装”按钮,开始安装SQL Server 2005的选定组件。15) 安装完成后,单击“下一步”按钮,打开“完成Microsoft SQL Server 2005安装”对话框,显示摘要日志等信息。单击“完成”按钮,此时会提示重新启动计算机,选择“是”,重新启动计算机后,完成安装。实验结论:SQL Server 2005运行正常1.2.2 SQL Server主要组件(1) 启动、停止数据库服务器在“开始”菜单中启动1) 选择开始“所有程序”Microsoft SQL Server 2005“配置工具”SQL Server Configuration Manager 命令。进入 SQL Server Configuration Manager 窗口后,选择左边的“SQL Server 2005 服务” 选项,在右边会显示出相应的服务器。这时分别可进行服务器的启动和停止操作。2) 可以设置服务器在开机时自动启动或禁用。操作如下:在 SQL Server Configuration Manager 窗口中选择要启动或禁用的服务器右击,选择“属性”命令进入相应服务的属性界面,选择“服务”选项卡,然后再选择“启动模式”后面的选项,其中“自动”选项即为服务器在开机启动时自动启动。“已禁用”选项即为暂停使用。“手动”选项即为每次要手动启用相应的服务器。3) 使用“控制面板”窗口中的“服务”应用程序启动或停止服务器。 打开“控制面板”窗口,双击“管理工具”图标,再双击“服务”图标,然后找到要启动或停止的服务器右击,在弹出的快捷菜单中选择相应的启动命令或“停止”命令。(2) 熟悉对象资源管理器选择“开始”“所有程序”Microsoft SQL Server 2005SQL Server Management Studio 命令,选择服务器名称和身份验证以及输入用户名和密码等。然后单击“连接”按钮进入“对象资源管理器”面板中。在“对象资源管理器”面板中可以进行注册和删除服务器。 (3) 熟悉查询分析器在 SQL Server Management Studio 窗口中,进入 SQL Server Management Studio查询窗口,即查询分析器。 在查询分析器的编辑面板中输入以下的查询语句: USE master SELECT * FROM spt_values单击“执行”按钮后分析“结果”和“信息”两个选项卡的内容,试分析一下为什么有这样的现象?实验结论:1.2.3 数据库及其管理1) 用对象资源管理器创建一个数据库。数据库名称为“图书”,主数 据文件的逻辑名称为“图书_data ”,操作系统文件的名称为“d:图书_mdf ”,大小为30MB, 最大为 60MB,以 15%的速度增长。数据库的日志文件逻辑名称为“图书_log ”,操作系 统文件的名称为“d:图书_ldf ”,大小为3MB,最大为 15MB,以 1MB 的速度增长。 2) 使用对象资源管理器将数据库“图书”的初始分配空间大小扩充到45MB。3) 使用对象资源管理器将“图书”数据库的空间压缩至最小容量。 4) 使用对象资源管理器将“图书”数据库重新设置为只读状态。 5) 使用对象资源管理器将“图书”数据库改名为“图书信息库”。 6) 使用对象资源管理器删除“图书信息库”数据库。实验结论:1.2.4 数据库中表的基本操作1) 在“对象资源管理器”面板中创建数据库“BookShop”。2) 在数据库“BookShop”中创建如下七张表:表1 Board的表结构字段名称说明数据结构约束Id公告编号int主键Title公告题目varchar(50)非空Content公告内容varchar(100)PostTime提交时间datetimePoster提交人varchar(20)表一:表2 BookType的表结构字段名称说明数据结构约束TypeId分类编号int主键TypeName分类名称varchar(50)非空表二:表3 Books的表结构字段名称说明数据结构约束Id记录编号int主键TypeId图书分类int外键BookName图书名称varchar(200)非空ISBN书号varchar(50)惟一Publisher出版社varchar(100)默认值“清华大学出版社”Author作者varchar(50)PageNum页数intPublishDate出版日期datetimeSalePrice销售价格floatStorePrice进货价格float小于“销售价格”Content图书简介varchar(1000)ReadCount阅读次数intBuyCount销售数量int取值大于0表三:外键:唯一键:默认值:Check约束:表4 Basket的表结构字段名称说明数据结构约束Id编号int主键UserId用户名varchar(50)外键BookId图书编号int外键OrderTime订购时间datetime非空OrderCount订购数量int取值大于0SalePrice销售价格float取值大于0UserChecked用户确认(0-用户订购;1-送至收银台;2-提交订购)tinyint默认值为0OrderNumber订单号varchar(50)非空PostTime提交时间datetimeAdminChecked管理员确认(0-没有提交;1-用户提交;2-处理;3-发货;4-结账)tinyint默认值为0表四:表5 Complain的表结构字段名称说明数据结构约束Id投诉编号int主键PostTime投诉时间datetime非空UserId用户名varchar(50)外键OrderNumber订单号OrderNumbervarchar(50)Content投诉内容varchar(1000)Result处理结果varchar(1000)Flag处理标志(0-未处理;1-已处理)bit默认值为0表五:表6 Users的表结构字段名称说明数据结构约束UserId用户名varchar(50)主键Pwd用户密码varchar(50)非空UserName用户姓名varchar(50)Sex性别Char(2)取值为“男”或“女”Address地址varchar(500)Email电子邮件地址varchar(50)Telephone固定电话varchar(100)Mobile移动电话varchar(50)表六:Check约束:表7 Admin的表结构字段名称说明数据结构约束AdminId用户名varchar(50)主键Passwd密码varchar(50)非空AdminName用户姓名varchar(50)表七:3) 使用对象资源管理器修改表结构。 修改表名。 增加列。 删除列。 修改已有列的属性。4) 向Books表中插入如下数据。5) 修改表中数据。6) 删除表中数据。实验结论:1.3实验中的问题及解决方法2. T-SQL 语言2.1实验目的复习SQL 语句(查、增、删、改),理解局部变量和全局变量的概念、定义和使用方法,掌握SQL Server中流程控制语句的使用。2.2实验步骤2.2.1 使用SQL语句(1) SELECT语句的基本使用1) 查询图书表books中的每本图书的所有数据。 select * from books2) 分别查询books表和BookType 表的全部信息。 select*from books select *from BookType3) 在图书books 表中查询每本图书的书名和销售价格。 select BookName SalePrice from books4) 在books 表中查询记录编号为“0003 ”的图书的书名和销售价格。 select BookName SalePrice from books where id='0003'5) 在 books 表中查询销售价格为 20 元的图书记录编号、书名和进货价格。使用 AS 子句将结果中指定目标列标题分别指定为图书记录编号、图书名和进货价格。 select id as 图书记录编号, bookname as 图书名, StorePrice as 进货价格 from books where SalePrice=206) 在books 表中查询出销售价格在 1050 元之间的图书的书名和销售价格, 分别取别名为图书的书名和图书的销售价格。 select bookname as 图书的书名,Saleprice as 销售价格 from books where Saleprice>10 and Saleprice<507) 在books表中查询出书名中有一个“中”字的所有图书。 select * from books where bookname like '%中%'8) 在books表中查询出版社有一个“人”字并且销售价格在 10150 元之 间的所有图书。 select * from books where Saleprice>10 and Saleprice<150 and bookname like '%人%'(2) 子查询的使用1) 计算机类图书的平均销售价格。 select avg(saleprice) from books where typeid=(select TypeId from BookType where typename='计算机')2) 查询销售价格高于所有图书平均销售价格的图书记录编号,书名及出版社。 select Id,BookName,publisher from books where saleprice>(select avg(saleprice) from books)(3) 连接查询的使用1) 查询图书的书名、销售价格和图书分类名称。 select bookname,Saleprice,TypeId from books2) 查询订购时间在2010-8-25订购图书的用户姓名、地址、移动电话,所定图书的书名、作者,以及订购数量。 select username,address,mobile,bookname,author,OrderCount from users,books,basket where USERS.USERID=BASKET.USERID AND BOOKS.ID=BASKET.BOOKID AND OrderTime='2010-8-25'(4) 数据汇总1) 在books表中查询“清华大学出版社”所出书的平均销售价格。 select avg(saleprice) from Books where publisher='清华大学出版社'2) 查询books 表中一共有多少本书。 select COUNT(Id) from books(5) GROUP BY、ORDER BY 子句的使用1) 按出版社统计各个出版社所出书的平均销售价格。 select AVG(SALEPRICE) from BOOKS group by PUBLISHER2) 统计books 表中每个出版社一共有多少本书。 select COUNT(Id) from BOOKS group by PUBLISHER实验结论:2.2.2 T-SQL语言的基本使用(1) 使用局部变量、全局变量1)定义及使用局部变量 定义一个tinyint的整型变量,并分别给其赋值45、345,观察其执行结果。 DECLARE qingqiu tinyint SELECT qingqiu=45 SELECT qingqiu SET qingqiu=56 SELECT qingqiuGO 定义一个长度为9的可变长型字符变量,并分别给其赋值“Welcome to Beijing”及“Beijing”,观察其执行结果。 DECLARE qingqiu nvarchar(9) SET qingqiu =' Welcom to beijing' SELECT qingqiu SET qingqiu='beijing' SELECT qingqiuGO2)使用全局变量 返回当前SQL Server服务器的版本。 select version 返回当天试图连接到本服务器的连接的数目。 select connections(2)函数的使用1)数学函数的使用分别用函数求出-2、1.2的绝对值,16的平方根及5的平方。 select ABS(-2) select ABS(1.2) select SQRT(16) select SQUARE(5) 2)字符串函数的使用 返回字符串“Abcd”第一个字符的ASCII码值。select ASCII('Abcd') 分别将字符串“china”、“MACHINE”转换成大写、小写字母。 select UPPER('china')select LOWER('MACHINE') 使用RTRIM和LTRIM函数分别去掉字符串“机械工业”右边、左边及左右两边的空格,再与“中国”及“出版社”连接起来。 SELECT RTRIM('机械工业') SELECT LTRIM('机械工业') SELECT LTRIM(RTRIM('机械工业') SELECT '中国'+LTRIM(RTRIM('机械工业')+'出版社' 使用SUBSTRING函数从字符串“中国机械工业出版社”中返回字符串“机械”,并使用REVERSE函数将字符串“机械”逆序返回。select REVERSE( SUBSTRING ('中国机械工业出版社',3,2) 将字符串“abcdabcd”中的所有字符“a”换为字符“%”。select REPLACE('abcdabcd','a','%')3)日期、时间函数的使用 使用getdate( )函数返回系统当前日期及当前日期的年份、月份及日期。select GETDATE(), YEAR(GETDATE() , MONTH(GETDATE() ,DAY(GETDATE() 使用datediff函数返回某个给定日期与当前系统日期相差的天数。 Select datediff(day,'2011-8-22',getdate() 4)系统函数的使用 使用系统函数user_name( )、db_name( )显示正在使用的用户名、数据库名。selectUSER_NAME(),DB_NAME() 用全局变量返回数据库服务器名称。 select version5)集合函数的使用求出BookShop数据库中Books表中所有书销售价格的平均价格、最高价格、最低价格。selectAVG(SALEPRICE),MAX(SALEPRICE),MIN(SALEPRICE) FROM BOOKS(3)流程控制语句的使用1)PRINT语句。用PRINT语句在屏幕上显示“I AM A STUDENT”.print 'I AM A STUDENT'2)用IF语句判断。如果BookShop库中Books表中存在图书类型为“计算机类”的书,就显示“库中存在该类型图书”,否则显示“库中不存在该类型图书”。if exists(select books.* from books ,booktypewhere books.typeid=booktype.typeid and typename='计算机类')print '库中存在该类型图书'elseprint '库中不存在该类型图书'3)使用CASE语句。 从BookShop库Books表中,选取书名、出版社,如果出版社为“清华大学出版社”则输出“中国最有实力的出版社之一”,如果是“海南出版社”,则输出“海外影响力最强的出版社之一”。select bookname,'Publisher'=case Publisherwhen '清华大学出版社' then '中国最有实力的出版社之一'when'海南出版社' then '海外影响力最强的出版社之一'endfrom books从BookShop库Books表中查询所有书的销售价格情况,凡销售价格为空的输出“未录入销售价格”,小于30元输出“价格适中”,30100元输出“价格偏高”,100300元输出“价格高”,300以上的输出“价格特别高”。select 'SalePrice'=case when SalePrice<30 then '价格适中'when SalePrice>30 and SalePrice<100 then '价格偏高'when SalePrice>100 and SalePrice<300 then '价格高'when SalePrice>300 then '价格高'else '未录入销售价格'Endfrom books4) 设置在2分钟后进行一次查询操作。use BookShopgobeginwaitfor delay '00:02'select * from booksend 5)用WHILE语句求1100的和。Dec lare sum int ,count intselect sum=0,count=1while count<=100beginset sum=sum+countset count=count+1endprint sum实验结论:2.3实验中的问题及解决方法3. 数据库对象管理3.1实验目的掌握索引和视图的作用和使用方法,理解存储过程和触发器的基本概念,并掌握如何在SQL Server中建立相应的存储过程和触发器。3.2实验步骤3.2.1 索引(1) 通过对象资源管理器创建索引1)创建索引 用对象资源管理器为表Users创建一个索引名为User_index的唯一性非聚簇索引,索引关键字为Username,升序,填充因子85%。create unique NONCLUSTERED index User_index on users(username asc) with FILLFACTOR=85 用对象资源管理器为表Books创建一个名为IX_PP的非聚簇复合索引,索引关键字为Publisher、SalePrice,升序,填充因子65%。 CREATE UNIQUE NONCLUSTERED INDEX IX_PP ON Books( Publisher,SalePrice ASC ) WITH FILLFACTOR=65 用对象资源管理器为表Board创建一个基于提交人和提交时间的索引IX_ Poster_t,其中提交人按降序排列,当提交人相同时,按提交时间升序排列。 CREATE UNIQUE NONCLUSTERED INDEX IX_Poster_tt ON Board ( Poster desc,PostTime ASC ) WITH FILLFACTOR=652)重命名索引用对象资源管理器将Users表索引文件User_index更名为User1_index。sp_rename 'Users.User_index','User1_index'3) 用对象资源管理器将Board表的索引文件IX_ Poster_t删除。 drop index board.IX_Poster_t (2) 使用T-SQL语句创建、管理索引文件1)创建索引 用T-SQL语句为表books创建一个索引名为book_index的唯一性非聚簇索引,索引关键字为bookname,升序,填充因子85%。 用T_SQL语句为表Basket创建一个名为IX_UB的非聚簇复合索引,索引关键字为UserId、BookId,升序,填充因子65%。 为表Complain创建一个基于订单号和投诉时间的索引IX_ord_t,其中订单号按降序排列,当订单号相同时,按投诉时间升序排列。2)重命名索引将books表索引文件book_index更名为book1_index。3) 将Basket表的索引文件IX_UB删除。 实验结论:3.2.2视图(1) 创建视图1) 用对象资源管理器创建一个显示用户购买记录的视图(order_view),要求显示用户姓名、地址、移动电话、图书名称、销售价格、订购数量、提交时间。2) 将books 表中所有出版社的记录定义为一个视图(printer_info_view),在“查询”窗 口中输入并执行语句,并在“对象资源管理器”面板中显示其结果。 CREATE VIEW printer_info_view AS SELECT PUBLISHER FROM BOOKS3) 对Users表定义一个能反映用户姓名、地址和移动电话的视图(users_info_view),在“查询”窗口中输入并执行语句,并在“对象资源管理器”面板中显示其结果。 CREATE VIEW USERS_INFO_VIEW AS SELECT UserName, Address, Mobile FROM USERS(2) 使用视图1) 将视图printer_info_view进行加密,然后在“查询”窗口中进行查询该视图。 alter view printer_info_view WITH ENCRYPTION as select publisher,publishdate from books 2) 显示视图users_info_view的信息。 sp_helptext printer_info_view3) 将视图order_view用对象资源管理器删除,视图printer_info_view用 SQL 语句删除。 DROP VIEW PRINTER_INFO_VIEW4) 向视图users_info_view修改(UPDATE)和删除(DELETE)操作。修改的数据为把用户姓名“张伟”的地址改为“中国大连”。删除的数据为把用户姓名为“刘冰”的用户删除。 UPDATE USERS_INFO_VIEW SET ADDRESS='中国大连' WHERE USERNAME='张伟' DELETE FROM USERS_INFO_VIEW WHERE USERNAME='刘冰'实验结论:3.2.3 存储过程1) 在bookShop 数据库中创建一个名为p_SalePrice_books 的存储过程。该存储过程返回books 表中所有销售价格在 5001000 的图书的记录。 并执行已经定义的存储过程SalePrice_books。 CREATE PROCEDURE p_SalePrice_booksAS SELECT * FROM BOOKSWHERE SALEPRICE>500 AND SALEPRICE<10002) 创建存储过程p_books_price,要求能根据用户给定的出版社,统计该出版社的出书的平均销售价格,并将平均销售价格以输出变量返回给用户。 并执行已经定义的存储过程。create proc p_books_price publisher varchar(100),avgprice float = 0 output as select avg(saleprice) from books where publisher=publisher print avgprice3) 查看存储过程p_SalePrice_books的定义。sp_help p_SalePrice_books4)删除存储过程p_books_price。sp_help p_SalePrice_books实验结论:3.2.4触发器1) 使用CREATE TRIGGER 命令创建一个触发器books_tril,当向books 表中插入一条记录时,自动显示信息“数据插入成功”。在查询分析器中输入触发器的代码并执行。触发器建立完毕后,当向books表中插入一条记录后,观察窗口下方的消息变化。CREATE TRIGGER books_tril on books for insert as print '数据插入成功'2) 禁用或删除刚才创建的books_tri1 触发器。 drop TRIGGER books_tril3) 使用CREATE TRIGGER 命令创建一个触发器books_insert_tril,当向book2 表中插入一条记录时,自动显示 books 表中的记录.可参考本题的代码和步骤运行操作。插入一条 数据,并观察结果。CREATE TRIGGER books_insert_tril on books for insert as print '数据插入成功' select * from books insert into books (id,bookname,storeprice) values('1','清秋','100') 4) 使用系统存储过程 sp_helptext 查看触发器books_insert_tril 的定义文本信息。sp_help books_insert_tril实验结论3.3实验中的问题及解决方法4. 数据库保护4.1实验目的掌握SQL Server 2005服务器的安全性机制及其运用,熟练掌握创建和管理安全账户、管理数据库用户、角色及权限。并掌握备份的创建、使用对象资源管理器和命令进行备份、恢复数据库的方法。4.2 实验步骤4.2.1 SQL Server 2005的安全管理(1) 创建登录账户1) 使用对象资源管理器创建 SQL Server 2005 身份验证模式的登录,其中登录名称是bok_login1,密码是 123456,默认数据库是bookshop,其他保持默认值。 2) 使用系统存储过程 sp_addlogin 创建登录,其登录名是bok_login2,密码是 123456,默认数据库是bookshop。在“查询”窗口中输入和执行语句,并在“对象资源管理器”面板中显示其结果。 sp_addlogin 'book_login2',' 123456','bookshop' 4) 使用对象资源管理器删除bok_login1。5) 使用存储过程sp_droplogin 从 SQL Server 2005 中删除登录账户bok_login2 。在“查询”窗口中输入和执行语句,并在“对象资源管理器”面板中显示其结果。sp_droplogin 'book_login2'(2) 创建和管理数据库用户和角色1) 创建登录数据库名是 bok_user1,密码是 123456,默认数据库是 bookshop,并能连接到bookshop数据库的用户。2) 使用对象资源管理器创建数据库角色(标准角色),新角色名称是bok_role1 ;然后将角色成员 bok_user1添加到标准角色中,最后在“对象资源管理器”面板中删除数据库角色bok_role1。3) 使用系统存储过程sp_addrole 添加名是bok_role2 的标准角色到bookshop 数据库。然后,使用系统存储过程 sp_droprole 删除book 数据库中名是bok_role2 的角色。sp_addrole 'bok_role2'sp_droprole 'bok_role2'4) 使用系统存储过程 sp_addapprole创建名是 bok_role3的应用程序角色,授权bok_role3 具有books 表的 SELECT 权限,以bok_user1 身份连接另一查询分析器。sp_addapprole 'bok_role3','123456' grant select on books to bok_role35) 创建一个应用程序角色bok_approle,此角色能够访问bookshop 数据库,并具有读取、修改数据表的权限。sp_addapprole 'bok_approle' ,'123456' grant select on books to bok_approleGrant update on books to bok_approle(3) 管理权限 1) 把books 表的删除权限授给用户bok_user1。grant delete on books to bok_user1 2) 把对books 表的全部操作权限授予bok_user1 。 grant all on books to bok_user1 3) 把对books 表的查询权限授予所有用户。 grant select on books to public 4) 把对books表的INSERT 权限授予用户bok_user1,并允许将此权限再授予其他用户。 grant insert on books to bok_user1 with grant option5) 撤销所有用户对books表的查询权限。 revoke select on books from public实验结论:4.2.2 数据库的备份与恢复1) 分别使用对象资源管理器和查询分析器为数据库bookshop 做一次完全数据库备份。 2) 数据库bookshop建立完全备份后,在数据库 bookshop中建立两个新表(new1,new2),然后