单元09 编号与树形数据.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单元09 编号与树形数据

回顾 创建索引可以明显提高系统性能。 创建索引的语法是: Create [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] Index 索引名 存贮过程可加快查询速度、提高安全性、减少网络流量和模块化编程。 CREATE PROC语句用于创建存贮过程。 EXECUTE语句用于调用存贮过程。 sp_recompile用于重新编译存储过程。 ADO.NET添加参数常使用: SqlCommand.Parameters.Add(参数名,类型) 使用SqlCommand调用存贮过程,应设置属性 CommandType = CommandType.StoredProcedure; CommandText = 存贮过程名 本单元任务 任务一 实现成绩信息表中“编号”生成 任务二 实现手工生成“学号” 任务三 实现“学院、专业、班级”的机构树的生成 本单元目标 创建标识列实现数据自动增长 使用SCOPE_IDENTITY()获取最后插入的标识列值 理解锁的概念 根据编号规则进行编号设计,并产生编号 能够进行树形数据的设计 使用TreeView控件创建树形 任务一实现成绩信息表中“编号”自动生成 创建标识列IDENTITY 使用Management Studio和T-SQL创建表 T-SQL创建表时指定标识列 T-SQL创建表时指定标识列 标识列可用IDENTITY属性建立 【例9-1】创建测试表TEST,该表包含名为ID、类型为int、种子为1、递增量为1的标识列。 为标识列插入数据 为包含标识列的数据表插入数据时,在通常情况下,不能显示对标识列指定值,系统会根据标识列的定义自动填充值。 【例9-2】为例9-1创建的测试表TEST中,添加两行数据。 获取插入到IDENTITY列的标识值 获取生成的最后一个标识值,可以使用三种方法: @@IDENTITY SCOPE_IDENTITY() iDENT_CURRENT() 【例9-3】新注册一个用户’王五’,要求告知用户其用户号是多少。 任务实施 在成绩信息表中,因为(学号,课程号)才能唯一确定某行数据,因此,应设置复合主键(学号,课程号)。但是,建议复合主键应尽量少使用,所以,我们可以另设置一列“编号”,作为 主键。 为了唯一区别每行数据,所以我们将其设置为标识列。 任务二 实现手工生成 “学号” 创建函数 采用查表法,生成学号,序号规则:年号(4位)+学院代码(2位)+专业代码(2位)+班级代码(2位)+学生序号(3位)。 查表法 手工生成编号,最简单的方法就是查询表中的编号最大值,然后+1即得到最新的编号。 【例9-6】手工生成用户号,用户号规则为’U’+5位顺序号。 查表法范例 (1)从当前表中的查询编号最大值,取后5位 。 (2)当前最大编号+1,并且不足5位前面补零。 (3)因为该编号规则,每次插入数据都需要使用,创建函数。 多用户并发操作的问题 (1)对用户表插入10000行数据的脚本 (2)编写执行脚本的批处理文件 (3) 双击执行这4个批处理文件(每个批文件模拟一个用户的操作)。 (4)可以观察到输出文件的信息,很多数据行没有插入。 锁 锁是数据库用来控制共享资源并发访问的机制。 锁用于保护正在被修改的数据 直到提交或回滚了事务之后,其他用户才可以更新数据 锁的分类 从数据库系统的角度来看 : 排他锁(X锁) 共享锁 更新锁 从程序员的角度看:分为乐观锁和悲观锁: 乐观锁:完全依靠数据库来管理锁的工作。 悲观锁:程序员自己管理数据或对象上的锁处理 排他锁范例 ① 新建两个连接,在第一个连接中对学生作学籍变更,执行: ② 在第二个连接,查询学生信息,执行以下语句: 观察到,第二个连接的select查询必须等待。 … ③ 在第一个连接中再执行以下语句:commit tran 观察锁的情况 打开活动监视器,可观察到表student的锁情况。 锁提示 解决多用户并发问题 【例9-8】多用户并发操作时,生成用户号 修改插入测试数据的脚本 观察到无错误信息出现 任务实施 采用查表法,生成学号,序号规则:年号(4位)+学院代码(2位)+专业代码(2位)+班级代码(2位)+学生序号(3位)。 按日期生成编号 按日期生成编号需要按照当天的日期查最大编号。 【例9-9】手工生成订单号,订单号规则为:6位日期+6位顺序号。如090601000001表示2009年6月1日的第一张订单。 独立编号表法 建立一个单独的编号表,用来保存每种编号的最新编号,获取新编号时,只需要查询编号表就可以了。 由于编号表

文档评论(0)

mydoc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档