小虾的sql server 2000 成长之路

小虾的sql server 2000 成长之路

 

1.两个表A,B,A有数据,B无数据,两个表结构一样,如何把A表的数据复制到B表的数据?

select into B from A

2.有一个表A(id ,logintime)logintime是datetime类型,如何将时间在12月24日的数据取出来,并按logintime排序

select * from 时间 where logintime >=’2008-12-24 00:00:00.000’and logintime<‘2008-12-25 00:00:00.000’
order by logintime

注:因为datetime类型返回时小时和分钟和秒都是默认为00:00:00.000,所以直接取数据的话只能取到0小时0分钟0秒的记录。

不知道怎么会这样,我用between 取中间的哪一段时间会出错,是不是因为between只能确定一个数值的范围呢?而datetime类

型的判断不了。还有待大家帮助指教…

3.建立一个临时表,有一个字段(id)int类型,如何将1~10000插入表中的字段id

create table #临时表(id int)
declare @n int
set @n=1
while @n<=10000
begin
insert into #临时表
values(@n)
set @n=@n+1
end
select * from #临时表

注:临时表分为两种,一种是全局临时表,一种是普通临时表,全局临时表对于整个数据库的用户都可以使用,而普通临时表只针对创建他的用户使用

临时表的内部处理是采用存储过程对表进行封装,临时表的有点是能够节省系统的资源提高速度,因为当你停止服务器的运行时,该临时表就会被删除。

由于临时表的内部处理小虾还不懂,希望各位大哥哥多多指教…谢谢!

4.写出系统变量

变量分为两种,一种是系统变量,一种是局部变量

@@error:返回最后执行的tql错误代码,返回值为integer,通常用0和!0来判断@error,0表示代码正确,!0表示代码错误.

@@rowcount:返回受上一句语句影响的行数,除了定义变量语句外,其他语句都可以影响其值.

@@identity:返回最后插入的标识值,返回类型为numeric(数字)

5.有关存储过程的编程

–创建存储过程

create procedure p_date_productinfo(
@o_date datetime,
@p_no varchar(20),
@total_quantity int output,
@total_money money output)
as
select @total_quantity=sum(o_quantity),@total_money=sum(o_quantity)*p_price
from orders,products
where orders.p_no=products.p_no and o_date=@o_date and orders.p_no=@p_no
group by orders.p_no,p_price

–使用存储过程
declare @total_quantity int
declare @total_money money
exec p_date_productinfo’2005-08-09′,’0910810004′,@total_quantity output,@total_money output
print convert(int,@total_quantity)
print convert(int,@total_money)
注:这是我昨晚写的一条存储过程语句,功能也很简单,在这不多说,我觉得存储过程的应用跟c语言里面的函数差不多,都是

通过输入和返回来实现他的功能.但是在使用时有点麻烦,要定义输出参数,感觉到有一种数据冗余,对于学数据库的来说,数据

冗余是很敏感的…其他版本我就不知道,至少2000是这样的.哈~

6.备份一个表,导出文本文件

用sql备份表和导出我就不知道怎么弄了,我只会用企业管理器备份和导出.

7.在T-SQL中,having,case,rollup的作用

having:主要用于聚合函数(sum,avg,max,count,min),如果用到sum和count的话,要对目标字段进行分组,

就是把相同字段的分成一个组,然后通过having对其进行筛选,having和where的区别就是作用的对象不相同,

where 后面跟的是字段的筛选条件,而having跟的是分组后组的筛选条件。

case:主要运用于多支选择结构。具体语法有 case 字段名a when 字段名a then 字段名b…else 其他

还有一种搜索的case语句,结果如上,但是它会对目标表进行筛选,在第一个条件下成立后,将它移除,然后进行

第二次判断.例如:

select *,等级=case

when grade>=90 then ‘优秀’

when grade>=80 then ‘良好’

else ‘不及格’

end

from score where ‘条件’

在进行第一次判断后,会把>=90的排除,第二次判断相当于进行between 80 and 89。

**rollup:对于这个我没怎么使用过它 ,只知道它可以用于数据汇总,会把你的字段值独一置空而进行数据汇总,

具体的用法我也没试过,我会去尝试它的,如果哪个大哥对其了解较深刻的话,给小弟一些信息参考。

8.对题2建立索引。create clustered index idx时间 on A(id)

注:索引分两种,一种是聚集索引,一种是非聚集索引。聚集索引在每个表中只可以建一个,而非聚集索引可以建249个。

一个表的存储由两部分组成,一部分存储表的数据页面,一部分存放表的索引页面。索引页面相对来说比较小,所以用

索引搜索数据比较方便。

聚集索引主要按物理页面的数据顺序存储,例如书的目录就是建聚集索引。

非聚集索引按逻辑页面的数据存储,也就是利用指针指向另一个字段。索引页面存储了字段值和地址值。例如对日记进行分类,

一类是天气晴,一类是天气雨,it类或者生活类,这就相当在日记里面建立了非聚集索引,可以更方便的让你找到每一页。

9.将表中的所有数据删除,该语句与delete有什么区别?

truncate table 表名 

该语句与delete的区别是:它可以一次性的删除表中所有的数据,而delete一次只可以删除一行。用truncate可以节省记录

日志里面资源,不用单独记录多条delete,可以减少备份日志里面的压力。

10.触发器的作用

触发器主要是为了不让用户把不必要的数据写入表中

触发器有两种类型:一种是after触发器,一种是instead of 触发器

after触发器:主要是针对insert,delete,update操作,当执行某一种操作时,触发器就会自动的触发执行

instead of 触发器:主要应用于视图,当对视图进行修改时,触发器也自动执行,但不响应里面的insert,delete,update操作。

**instead of 触发器可以修改多个表或视图中的数据,可以同时更新。

触发器的主要应用是通过inserted,deleted这两个临时表实现的。可以从inserted表中找到用户新插入的值,可以在deleted表中

找到用户删除的值。在检索用户是否更新表中的数据时,可以用系统变量@@rowcount对其进行判断,当@@rowcount=0时,表示

对表中的数据更新错误,或者找不到数据。当@@rowcount=1时,表示返回一行更新的记录,表示更新了一行,假如不能级联更新或

删除时,可以用rollback对其进行回滚。insert触发器也有代替check约束的功能,主要是对inserted表中的插入项进行判断,在加上

rollback就可以实现check约束了。

**有待实现补充:rollup 和 instead of 触发器的例子应用!

**由于临近考试,有些东西做的不足请大家原谅!

转载于:https://www.cnblogs.com/magicchaiy/archive/2009/01/03/1367452.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110953.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vue + echarts 省份地图 以及打包后地图加载不出来(比较详细)「建议收藏」

    vue + echarts 省份地图 以及打包后地图加载不出来(比较详细)「建议收藏」刚开始地图怎么也出不来,经过解决,是因为echarts.min.js引入位置在index.html中引入需要的js版本按照自己需要的来<scriptsrc=”./static/plugins/echarts-5.1.2/echarts.common.min.js”></script><scriptsrc=”./static/plugins/echarts.min.js”></script>(必须引入,地图才能加载)全局引入im

    2022年10月12日
  • Linux下搭设游戏服务器实例大全

    Linux下搭设游戏服务器实例大全半条命hlds_l_3110_full.bin点击下载http://www.mudtx.com/download/hlds_l_3110_full.bincs1.5cs_15_full.tar.gz点击下载http://www.mudtx.com/download/cs_15_full.tar.gz免cdkey补丁engine_i386.so点击下载http://down.cs-cn….

  • 初窥Linux 之 我最常用的20条命令

    玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Linux系统的人有所不同。因为不想在使用是总是东查西找,所以在此总

  • 离心泵CAE_2_ICEM剖分网格_2_叶轮流道[通俗易懂]

    离心泵CAE_2_ICEM剖分网格_2_叶轮流道[通俗易懂]针对本科毕设中所涉及到的离心泵数值分析和性能计算,将用最简单粗暴的方法,讲解如何基于CFturbo、ICEM、FLUENT来开展离心泵水力设计和性能分析的计算机辅助(CAE)实现。离心泵的水力设计由CFturbo软件实现;网格剖分由ICEM软件实现;CFD数值计算由FLUENT软件实现;并验证设计值是否达到。这里是第二部分,ICEM软件实现离心泵过流通道的网格剖分,含叶轮流道、进口延伸段、蜗壳流道的网格剖分。由于三个流道分开来划分网格,所以分三部分来分别讲解,这里是第2篇,叶轮流道的网格剖分……

  • Mysql DBA 运维 MySQL数据库索引优化及数据丢失案例 MySQL备份-增量备份及数据恢复基础实战 MySQL数据库生产场景核心优化…

    Mysql DBA 运维 MySQL数据库索引优化及数据丢失案例 MySQL备份-增量备份及数据恢复基础实战 MySQL数据库生产场景核心优化…

  • pytest重试_联系人去重失败

    pytest重试_联系人去重失败安装:pip3installpytest-rerunfailures重新运行所有失败用例要重新运行所有测试失败的用例,请使用–reruns命令行选项,并指定要运行测试的最大次数:$py

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号