数据库技术与应用.doc

上传人:scccc 文档编号:11122458 上传时间:2021-07-03 格式:DOC 页数:30 大小:498.03KB
返回 下载 相关 举报
数据库技术与应用.doc_第1页
第1页 / 共30页
数据库技术与应用.doc_第2页
第2页 / 共30页
数据库技术与应用.doc_第3页
第3页 / 共30页
数据库技术与应用.doc_第4页
第4页 / 共30页
数据库技术与应用.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《数据库技术与应用.doc》由会员分享,可在线阅读,更多相关《数据库技术与应用.doc(30页珍藏版)》请在三一文库上搜索。

1、数据库技术与应用实验内容:数据库技术与应用班级:学号:姓名:日期:实验1 数据库的创建与修改一实验目的学习创建和修改用户数据库的方法。1掌握用SQL Server Management Studio创建和修改数据库。2掌握用TSQL语句创建和修改数据库。二实验内容练习用SQL Server Management Studio创建数据库,设置数据文件和日志文件的属性;练习用SQL Server Management Studio对数据库进行修改、删除;练习用TSQL语句创建和修改数据库。1. 在SQL Server Management Studio中创建数据库,名称为Tushuguan,数据文

2、件的初始大小20Mb,增量20%,限制大小100Mb。2. 在SQL Server Management Studio中,将Tushuguan的主数据文件的限制大小改为200Mb,并为其增加一个非主数据文件,名称为TushuguanN,数据文件的初始大小10Mb,增量1%,限制大小100Mb。3.在查询分析器中创建数据库,名称为Tushuguan1,数据文件的初始大小10Mb,增量2Mb,限制大小50Mb。4.在查询分析器中,为Tushuguan1增加一个事务日志文件,名称为TushuguanL,文件的初始大小15Mb,增量1 Mb,限制大小30Mb。实验2 数据表的创建与修改(一)一实验目的

3、熟悉有关数据表的创建和修改等工作,并了解主键、外键等各种约束的创建和定义,熟练掌握使用SQL Server Management Studio对数据表进行操作。1掌握用SQL Server Management Studio创建和修改数据表。二实验内容练习用SQL Server Management Studio创建、修改数据表和约束。1. 在Tushuguan数据库中,用SQL Server Management Studio创建下面三个表,定义表中要求的约束。学生信息表:student字段名称数据类型说明stuIDInto 标识列(10000,10)学生编号,主键stuNameVarcha

4、r(10)学生名称,不为空 majorVarchar(50)专业 默认值(计算机)SexChar(2)性别,检查约束,不为空图书表:book字段名称数据类型说明BIDInt 标识列(10,1)图书编号,主键titlechar(50)书名 惟一性约束authorchar(20)作者,不为空借书信息表:borrow字段名称数据类型说明borrowIDchar(10)借书编号,主键stuIDint学生编号,不为空BIDInt图书编号,不为空T_timedatetime借书日期 ,不为空B_timedatetime还书日期实验三 数据表的创建与修改(2)一实验目的使用TSQL语句进行数据表的创建和修改

5、,使用TSQL语句设置主键、外键等各种约束。二实验内容1. 在Tushuguan1中,在查询分析器中创建下面三个表,定义表中要求的约束。学生信息表:student字段名称数据类型说明stuIDInto 标识列(10000,10)学生编号,主键stuNameVarchar(10)学生名称, 不为空majorVarchar(50)专业 默认值(计算机),不为空SexChar(2)性别,检查约束,不为空图书表:book字段名称数据类型说明BIDInt 标识列(10,1)图书编号,主键titlechar(50)书名 惟一性约束,不为空authorchar(20)作者 ,不为空借书信息表:borrow字

6、段名称数据类型说明borrowIDchar(10)借书编号,主键stuIDint学生编号,外键BIDInt图书编号,外键T_timedatetime借书日期,不为空B_timedatetime还书日期要求:(1)在创建表时,约束定义在表的属性中。(2)创建表时,列只定义数据类型,是否为空等。再修改表添加约2. 设置复合主键新建学生信息表:student1字段名称数据类型说明stuIDInto 标识列(10000,10)学生编号stuNameVarchar(10)学生名称majorVarchar(50)专业 score1int成绩利用TSQL设置复合主键(学生编号+学生姓名)CONSTRAINT

7、 主键名 PRIMARY KEY(学生编号,学生姓名)3. 创建约束创建score1列的成绩约束,要求在0100之间。4. 在三个表中添加一些数据,查看外键约束中如果选中:级联更新和级联删除后,更新主键数据和删除主键数据的情况。5. 观察去掉级联删除选项后,删除主键数据(外键存在引用的数据)的情况。6 用 T-SQL插入新纪录,观察各种约束的情况7. 数据表复制(1)在当前库中,将“学生信息表”中的stuName和major列的数据复制到一个新表中。(2)在当前库中,将“学生信息表”中的stuName和major列的数据复制到一个新表中。在新表中stuName列的别名为“学生姓名”,major

8、列的别名为“专业”。(3)将“学生信息表”中的stuName和major列的数据复制到数据库“abc”的一个新表中。8. 用 T-SQL删除纪录,观察各种约束的情况(1)单表删除记录,如删除student表中 专业为计算机的。删除“借书信息表”中,借书日期2009-1-1以前的。Delete from student where major=计算机(2) 多表删除,删除“张三”的借书记录。Delete from borrow where stuID IN (select stuID from student where stuName =张三)(3)多表删除,删除“张三”并书名为“abcd”的

9、借书记录。Delete from borrow where stuID IN (select stuID from student where stuName =张三)And BID IN (select BID from student where title =abcd 实验四 数据查询(1)一实验目的学习使用SQL Server的查询语句,熟练掌握简单查询、排序、汇总函数、分组、HAVING和汇总等基本的查询操作。二相关知识查询操作是数据库的核心操作,SQL语言提供了SELECT语句进行查询,主要用来从数据库中检索出符合条件的记录。1基本语法SELECT子句是SELECT语句的核心部分,

10、虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下:SELECT select_listINTO new_table_nameFROM table_listWHERE search_conditionsGROUP BY group_by_listHAVING search_conditionsORDER BY order_list ASC | DESC 其中:select_list:表示需要检索的字段的列表。它是一个逗号分隔的表达式列表,列表中可以包含数据源表或视图中的字段名称。也可能是其它表达式,在选择列表中使用 * 表达式指定返回源表中的所有列。在此子句中,可以使用DIS

11、TINCT和TOP等关键字来限制结果集的范围。INTO new_table_name:指定使用检索出的结果集来创建新表。新表的名称为new_table_name。FROM table_list: 指定检索数据的数据源表的列表。WHERE search_conditions: WHERE 子句是一个筛选,它定义了源表中的行要满足 SELECT 语句的要求所必须达到的条件。只有符合条件的行才向结果集提供数据。不符合条件的行中的数据不会被使用。GROUP BY group_by_list: GROUP BY 子句根据 group_by_list 列中的值将结果集分成组。HAVING search_c

12、onditions: HAVING 子句是应用于结果集的附加筛选。逻辑上讲,HAVING 子句从中间结果集对行进行筛选,这些中间结果集是用 SELECT 语句中的 FROM、WHERE 或 GROUP BY 子句创建的。HAVING 子句通常与 GROUP BY 子句一起使用。ORDER BY order_list ASC | DESC : ORDER BY 子句定义结果集中的行排列的顺序。order_list 指定组成排序列表的结果集的列。ASC 和 DESC 关键字用于指定行是按升序还是按降序排序。除了以上子句,SELECT语句中经常出现的关键字还包括UNION运算符、COMPUTE子句、

13、FOR子句和OPTION等子句。(1) 改变列的标题可以为显示的列重新起一个标题,比如:SELECT TOP 10 产品价格定价FROM 产品表或者利用 AS 关键词:SELECT TOP 10 定价 AS产品价格 FROM 产品表(2) 匹配查询条件模式匹配符有两种:LIKE 和 NOT LIKE。它们主要用来进行模糊查询,判断列值是否与指定的字符串格式匹配。常用的 SQL Server 通配符有“%”和“_”%:包含零个或更多字符的任意字符串。_(下划线):任何单个字符。(3) 汇总函数汇总函数(例如 SUM、AVG、COUNT、COUNT(*)、MAX 和 MIN)在查询结果集中生成汇总

14、值。汇总函数(除 COUNT(*) 以外)处理单个列中全部所选的值以生成一个结果值。汇总函数可以应用于表中的所有行、WHERE 子句指定的表的子集或表中一组或多组行。应用汇总函数后,每组行都将生成一个值。表1显示了汇总函数的语法及结果(expression 几乎总为列名)。表1 汇总函数的语法汇总函数结果SUM(ALL | DISTINCT expression)数字表达式中所有值的和AVG(ALL | DISTINCT expression)数字表达式中所有值的平均值COUNT(ALL | DISTINCT expression)表达式中值的个数COUNT(*)选定的行数MAX(expres

15、sion)表达式中的最高值MIN(expression)表达式中的最低值(4)COMPUTE和COMPUTE BY 子句生成合计作为附加的汇总列出现在结果集的最后。当与 BY 一起使用时,COMPUTE 子句在结果集内生成控制中断和分类汇总。可在同一查询内指定 COMPUTE BY 和 COMPUTE。格式为: COMPUTE 汇总函数(汇总函数表达式)BY 分组字段汇总函数表达式是对其执行计算的列名。汇总函数表达式必须是选择列表中的一个项目,在汇总函数表达式内不能使用在选择列表中指定的列的别名。分组字段用来设置用于分类的字段名称、字段别名或表达式,而且这个字段别名必须出现在ORDER BY

16、子句中。如果使用 COMPUTE BY,则必须也使用 ORDER BY 子句。表达式必须与在 QRDER BY 后列出的子句相同或是其子集,并且必须按相同的序列。2操作实例演示以下是某公司的产品销售数据库(ProductSales)中的产品表(Product)和销售表(Sales),产品表为主表,销售表为子表,表结构和存储的数据如表2、表3所示:表2 产品表,主表产品编号(主键)产品名称(唯一性约束)定价1HP1200打印机20002LX360兼容机48003IBM 350笔记本110004IBM 360笔记本12000表3 销售表,子表产品号(外键)客户名称购买数量 销售单价2河北工大104

17、5001河北工大2516003天津大学10110002天津大学3046001天津大学2018003河北大学40100003南开大学2010500编写SQL语句实现以下要求的查询:(1)查询出单笔购买数量大于15的客户名称、购买数量、销售单价信息;select 客户名称,购买数量,销售单价 from 销售表 where 购买数量15(2)查询出产品号,客户名称,购买数量,按产品号排序。select 产品号,客户名称,购买数量 from 销售表 order by 产品号(3)查询出产品号,客户名称,购买数量,产品号升序,购买数量降序select 产品号,客户名称,购买数量 from 销售表 ord

18、er by 产品号,购买数量 desc(4)查询出购买数量最多(单笔)前三位的记录。select top 3 * from 销售表 order by 购买数量 desc(5)查询出所有商品的全部销售金额。select sum(购买数量*销售单价) as 销售总额 from 销售表(6)查询销售单价最高和最低的记录。select max(销售单价) as 最高单价,min(销售单价)as 最低单价 from 销售表(7)查询总共有多少笔销售记录。select count(*) as 记录数 from 销售表(8)查询客户姓名、对应客户的平均每笔购买数量。select 客户名称,avg(购买数量)

19、 as 平均购买量 from 销售表 group by 客户名称(9)查询出每种产品最高价高于2000的产品号和最高单价。select 产品号, max(销售单价) from 销售表 group by 产品号 having max(销售单价)2000(10)查询出全部销售记录,并汇总总销售量和销售记录数。select * from 销售表 compute sum(购买数量),count(购买数量)(11) 查询 “产品表”中产品名称含有IBM的记录。select * from 产品表 WHERE 产品名称 like %IBM%三实验内容创建表2、表3所示的产品表和销售表,编写SQL语句实现以下

20、的要求:1. 查询出销售单价最低(单笔)的前50的记录。select top 50 percent * from saleorder by 销售单价2. 查询出产品号,客户名称,购买数量,产品号升序,客户名称降序。select 产品号,客户名称,购买数量 from saleorder by 产品号,客户名称 desc3. 查询所有商品的销售总数。select 产品号,sum(购买数量) as 销售总数 from salegroup by 产品号4. 查询共有几家客户(不重复)。select count(distinct 客户名称) as 客户数from sale5. 查询客户姓名、对应客户的销

21、售总金额。select 客户名称,sum(购买数量*销售单价) as 销售总金额from sale group by 客户名称6. 查询每种产品的产品号和相应的每单位的平均销售单价。select 产品号,avg(销售单价)as 平均销售单价from sale group by 产品号7. 查询每种产品中每个客户购买的最高销售单价。select distinct 产品号,max(销售单价)as 最高销售单价from sale group by 产品号8. 查询出全部销售记录,并汇总每种产品的总销售量和销售记录数。select * from sale compute sum(购买数量) ,coun

22、t(购买数量)结果如下9. 查询产品号,客户名称,购买数量,销售单价,(购买数量*销售单价) as 销售额,并汇总每种产品的销售数量和总销售额。select 产品号,客户名称,购买数量,销售单价,(购买数量*销售单价) as 销售额from salecompute sum(购买数量),sum(购买数量*销售单价)10. 查询 “销售表”的客户名称字段中以“大学”结尾的记录select * from sale where 客户名称like %大学11. 查询购买数量最高和最低的记录。select * from sale compute max(购买数量),min(购买数量)实验5 数据查询(2)

23、一实验目的学习使用SQL Server的查询语句,掌握内连接、外连接和交叉连接,掌握子查询。二相关知识在很多情况下,需要从多个表中提取数据,组合成一个结果集。如果一个查询需要对多个表进行操作,即当查询同时涉及两个以上的表时,则将此查询称为连接查询。连接查询包括内连接、外连接和交叉连接等。(一)基本语法1内联接内联接是用比较运算符比较要联接列的值的联接。格式为:数据表1 INNER JOIN 数据表2 ON 联接表达式此内联接称为相等联接。它返回两个表中的所有列,但只返回在联接列中具有相等值的行。在内连接中,所有表是平等的,没有主次之分。当创建内联接时,包含 NULL 的列不与任何值匹配,因此不

24、包括在结果集内。空值不与其它的空值匹配。2外联接与内连接相对,参与外连接的表有主次之分。以主表的每一行数据去匹配从表中的数据列,符合连接条件的数据将直接返回到结果集中,对那些不符合连接条件的列,将被填上NULL值后再返回到结果集中。外连接可以分为左(向外)连接、右(向外)连接和完整外部连接三类。(1)左联接格式为: 数据表1 LEFT JOIN 数据表2 ON 联接表达式左连接以连接(JOIN)子句左侧的表为主表,主表中所有记录都将出现在结果集中。如果主表中的记录在右表中没有匹配的数据,则结果集中右表的列值为NULL。在WHERE子句中,可以使用*=符号定义左连接。(2)右联接格式为: 数据表

25、1 RIGHT JOIN 数据表2 ON 联接表达式右连接以连接(JOIN)子句右侧的表为主表,主表中所有记录都将出现在结果集中。如果主表中的记录在左表中没有匹配的数据,则结果集中左表的列值为NULL。在WHERE子句中,可以使用=*符号定义右连接。(3)完整外联接格式为: 数据表1 FULL JOIN 数据表2 ON 联接表达式完整外部连接包括连接表中的所有行,无论它们是否匹配。3交叉联接格式为: 数据表1 CROSS JOIN 数据表2 在交叉连接查询中,两个表中的每两行都可能互相组合成为结果集中的一行。交叉联接不使用WHERE子句。数学上,交叉联接就是笛卡儿集。第一个表的行数乘以第二个表

26、的行数等于笛卡儿集的大小。4嵌套查询嵌套查询是指在一个外层查询中包含有一个内查询。即在WHERE子句中包含一个形如SELECTFROMWHERE的查询块,此查询块称为子查询或嵌套查询。子查询在WHERE语句中的一般用法: SELECT FROM 表1 WHERE 字段1 (子查询)括号中嵌入的查询称为子查询,外面的查询称为父查询或外部查询,外查询称为主查询。一般情况下,套查询在执行时由里向外处理,每个子查询是在上一级外部查询处理之前完成,主查询要用到子查询的结果。即先用内查询挑选出部分数据,作为外查询的数据来源或搜索条件。将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个。 子查

27、询还常和UPDATE、INSERT、DELETE一起使用,语法类似于SELECT语句。 (1)带有IN或NOT IN谓词的子查询在嵌套查询中,子查询的结果往往是一个集合,IN或NOT IN关键字用于确定给定的值是否包含在子查询返回的结果集合中。l IN后面的子查询可以返回多条记录l 常用IN替换等于()的比较子查询(2)带有EXISTS或 NOT EXISTS谓词的子查询EXISTS表示存在量词,带有EXISTS的子查询不返回任何实际数据,它只得到逻辑值“真”或“假”。 EXISTS子查询的语法:IF EXISTS (子查询) 语句如果子查询的结果非空,即记录条数1条以上,则EXISTS (子

28、查询)将返回真(true),否则返回假(false)。 EXISTS也可以作为WHERE 语句的子查询,其语法是:WHERE NOT EXISTS (子查询)当子查询的查询结果集合为非空时,外层的WHERE子句返回真值,否则返回假值。NOT EXISTS与此相反。含有IN的查询通常可用EXISTS表示,但反过来不一定。5合并查询合并查询UNION 运算符将两个或多个 SELECT 语句的结果组合成一个结果集,该结果集包含联合查询中的所有查询的全部行。使用UNION运算符组合两个查询的结果集的两个前提是:l 所有查询结果中的列数和列的顺序必须相同;l 对应列的数据类型必须兼容。合并查询经常用来返

29、回明细和统计信息。因为明细和统计信息需要分别统计,所以可以使用合并查询将它们统一到一个结果集中。注意事项:l UNION 的结果集列名与 UNION 运算符中第一个 SELECT 语句的结果集中的列名相同。另一个 SELECT 语句的结果集列名将被忽略。l 默认情况下,UNION 运算符从结果集中删除重复的行。如果使用 ALL 关键字,那么结果中将包含所有行并且将不删除重复的行。 l 合并查询中只能使用一个ORDER BY子句,它对整个结果集起作用。如果分别为每个SELECT语句指定ORDER BY子句,将会出现错误。(二)操作实例演示以下是某公司的产品销售数据库中的产品表、销售表和库存表,产

30、品表为主表,销售表和库存表为子表,表结构和存储的数据如表1、表2和表3 所示:表1 产品表,主表产品编号(主键)产品名称(唯一性约束)定价1HP1200打印机20002LX360兼容机48003IBM 350笔记本110004IBM 360笔记本12000表2 销售表,子表产品号(外键)客户名称购买数量 销售单价2河北工大1045001河北工大2516003天津大学10110002天津大学3046001天津大学2018003河北大学40100003南开大学2010500表3 库存表(原始的库存表,包括上面销售表的数量)产品编号(主键)库存数量1200232031604500编写SQL语句实现以

31、下要求的查询:(1)查询出每笔销售记录的产品名称、客户名称、销售单价(分别用where 子句 和 join 实现)select a1.产品名称,a2.客户名称,a2.销售单价 from 产品表 as a1,销售表 as a2 WHERE a1.产品编号=a2.产品号select a1.产品名称,a2.客户名称,a2.销售单价 from 产品表 as a1 inner join 销售表 as a2 on a1.产品编号=a2.产品号(2)查询出每笔销售的产品名称、销售数量和剩余库存数量。(用where用inner join )select a1.产品名称,a2.购买数量,a3.库存数量-a2.购

32、买数量 as 剩余库存 from 产品表 as a1,销售表 as a2,库存表 as a3 WHERE a1.产品编号=a2.产品号 and a2.产品号=a3.产品编号select a1.产品名称,a2.购买数量,a3.库存数量-a2.购买数量 as 剩余库存 from (产品表 as a1 inner join 销售表 as a2 on a1.产品编号=a2.产品号 )inner join 库存表 as a3 on a2.产品号=a3.产品编号(3)查看产品名称和客户名称的交叉查询的结果select a1.产品名称,a2.客户名称 from 产品表 as a1 cross join 销售

33、表 as a2(4)查询出销售单价最高和最低的销售记录。用“UNION”连接查询结果集。select * from 销售表 where 销售单价 in (select max(销售单价) from 销售表 union select min(销售单价) from 销售表)方法四select *from salewhere 销售单价in(select top 1 销售单价from sale order by 销售单价desc)union (select top 1 销售单价from sale order by 销售单价)select *from salewhere 销售单价= (select to

34、p 1 销售单价from sale order by 销售单价desc)unionselect *from salewhere 销售单价= (select top 1 销售单价from sale order by 销售单价)方法二select *from salewhere 销售单价= (select max(销售单价)from sale )unionselect *from salewhere 销售单价= (select min(销售单价)from sale )方法三select * from sale where 销售单价in (select max(销售单价) from sale uni

35、on select min(销售单价) from sale)(5)查询出已经销售出的产品名称。select * from 产品表 where 产品编号 in (select 产品号 from 销售表)(6)如果某种产品的总销售数量超过了50,则所有产品库存增加50,否则,增加10。if exists(select sum(购买数量) from 销售表 group by 产品号 having sum(购买数量)50)update 库存表 set 库存数量=库存数量+50elseupdate 库存表 set 库存数量=库存数量+10三实验内容创建表1、表2和表3所示的产品表、销售表和库存表,编写S

36、QL语句实现以下的要求:12. 查询出单笔售数量大于15的客户名称、产品名称、销售数量信息;(分别用where 字句 和 join 实现)select 客户名称,产品名称,购买数量as 销售数量from product,salewhere product.产品编号=sale.产品号and 购买数量15select 客户名称,产品名称,购买数量as 销售数量from product join saleon product.产品编号=sale.产品号 and 购买数量1513. 查询每种产品的销售记录,列出产品名称和销售数量。(分别左连接和右连接)(分别用where 字句 和 join 实现)se

37、lect 产品名称,购买数量as 销售数量from product left join sale on product.产品编号=sale.产品号 select 产品名称,购买数量as 销售数量from product right join sale on product.产品编号=sale.产品号 select 产品名称,购买数量as 销售数量from product,salewhere product.产品编号=sale.产品号14. 在销售表添加一条记录, 8,相机,30,2100。查看完全外连接的结果。insert into salevalues (8,相机,30,2100)15. 查

38、询出销售单价最高的销售记录。select * from sale where 销售单价in (select max(销售单价) from sale)select * from sale where 销售单价in (select top 1 销售单价from sale order by 销售单价desc) 此处最好不要用“=” 因为可能有多条记录16. 查询出销售单价最高和最低的销售记录的产品名称、客户名称、销售单价。select 产品名称,客户名称,销售单价from sale,productwhere product.产品编号=sale.产品号and 销售单价= (select max(销售单

39、价)from sale )unionselect 产品名称,客户名称,销售单价from sale,productwhere product.产品编号=sale.产品号and 销售单价= (select min(销售单价)from sale )17. 查看产品表中产品编号和产品名称与销售表中客户名称和购买数量的交叉查询的结果。select 产品编号,产品名称,客户名称,购买数量from product cross join sale18. 查询出没有销售的产品名称。select 产品名称from productwhere 产品编号not in (select distinct 产品号from s

40、ale)19. 如果某种产品的总销售数量超过了50,则该种产品库存增加50,其余的产品库存增加10(子查询where字句中分别用exists和in 来实现)。if exists(select sum(购买数量) from sale group by 产品号having sum(购买数量)50)update kucun set 库存数量=库存数量+50elseupdate kucun set 库存数量=库存数量+10实验七 视图、索引的建立与使用一实验目的掌握使用创建视图的方法,了解如何应用视图有选中地查看所需数据,并熟悉通过视图操作数据表中数据的方法。掌握创建索引的方法。二实验内容以下是某公司

41、的产品销售数据库中的产品表、销售表和库存表,产品表为主表,销售表和库存表为子表,表结构和存储的数据如表1、表2和表3 所示。创建销售数据库及表、表2和表3所示的产品表、销售表和库存表,编写TSQL语句实现以下要求:1. 创建视图,包含列:产品名称=产品表.产品名,客户名称=销售表.客户名称,销售数量=销售表.购买数量,购买数量12,分别在(企业管理器和用T-SQL)实现。create view pr_saasselect product.产品名称as 产品名称,sale.客户名称,sale.购买数量as 销售数量from product,salewhere product.产品编号=sale.

42、产品号and 购买数量12在窗口中的视图 右击-新建视图 添加product 和sale表 钩选上产品名称,客户名称,购买数量 在购买数量的后面的筛选器中写上12如下图点击 运行即可2. 查询(1)中的视图,查询出每种产品的销售总量select sum(销售数量)as 销售总量from pr_sagroup by 产品名称。3. 销售表中对客户名称建立索引(企业管理器和T-SQL),填充因子30,并查询客户名称为“河北工大”的记录。create index in_name on sale(客户名称)with pad_index,fillfactor=30select * from sale w

43、here 客户名称=河北工大打开sale表 在客户名称上右击-键/索引 如图4. 产品表中对产品名称建立唯一索引(非聚集索引),并查询包含“IBM”的记录。create uniqueindex in_product on product(产品名称)select 产品名称from productwhere 产品名称like %IBM%5. 对产品表的产品名称和定价列建立复合索引。create index in_fuhe on product(产品名称,定价)表1 产品表,主表产品编号(主键)产品名称(唯一性约束)定价1HP1200打印机20002LX360兼容机48003IBM 350笔记本110004IBM 360笔记本12000表2 销售表,子表产品号(外键)客户名称购买数量 销售单价2河北工大1045001河北工大2516003天津大学10110002天津大学3046001天津大学2018003河北大学40100003南开大学2010500表3 库存表(原始的库存表,包括上面销售表的数量)产品编号(主键)库存数量1200232031604500心得体会:通过这数周的上机课练习,对Microsoft SQL Server 2005有了更深层次的了解,掌握了如何用TSQL以及企业管理器对数据库、数据表进行操作,了解了更多数据处理函数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1