BlogJava-开拓自己-文章分类-数据库http://www.blogjava.net/wwwlike/category/18508.htmlNeverDropzh-cnWed, 28 Feb 2007 23:06:12 GMTWed, 28 Feb 2007 23:06:12 GMT60 sql server数据管理与实现(高级特性3)http://www.blogjava.net/wwwlike/articles/91389.html诚夏徕诚夏徕Tue, 02 Jan 2007 06:50:00 GMThttp://www.blogjava.net/wwwlike/articles/91389.htmlhttp://www.blogjava.net/wwwlike/comments/91389.htmlhttp://www.blogjava.net/wwwlike/articles/91389.html#Feedback0http://www.blogjava.net/wwwlike/comments/commentRss/91389.htmlhttp://www.blogjava.net/wwwlike/services/trackbacks/91389.html-------------------------------------------------------------存储过程---------------------------------------------------
存储过程创建时就在服务器上编译了,所以比执行单个sql语句快

用exec 系统存储过程名称就可以调用,常用的有:

sp_renamedb '原数据库名','修改后的名'                作用 修改数据库名称 在master下用(这个功能比较实用)

sp_tables                                --当前数据库中而已查询的对象的列表

sp_helpindex stuMarks  查看stuMarks表的索引

Exec xp_cmdshell 'mkdir d:\bank',no_output 创建文件夹

存储过程里也可以 调用视图

用户自定义存储过程,

1:不带参数的存储过程:

create  exec proc 或者procedure  存储过程名 (过程名最好是proc_名称为好)
as
(可以在里面定义一些局部变量)
sql语句,任何都行
go

调用
Exce 存储过程名

2:带输入参数的存储过程:(每个参数 后面要有逗号)
create proc proc_name
(参数) @ mark1 int =60  (=60表示给了一个默认值,没传参数进来的时候,就用这个值),
            @ mark2 int =60  (=60表示给了一个默认值,没传参数进来的时候,就用这个值),
            @address varchar(20)
as
语句
go

调用
1:Exce proc_name  不传任何值 表示使用默认的值 (但是@address没有给默认值所以 编译后会抱错)
  没有给默认值的输入参数,我们在调用存储过程的时候要给 值
  改:Exce proc_name @address='武汉'

2:Exce proc_name 80,@address='武汉'  (只给了一个数字的参数,会默认把参数给第一个上面)

3:Exce proc_name @mark2=80  @address='武汉'  这样才会把参数给到第2个上面
(要想不传参数必须所有的参数 在定义的时候都给上默认的值)

3,带输出参数的存储过程

创建:
create proc proc_name
--(定义参数)
@ id  int output  ,  --关键字,声明为输出参数,没有的话就是输入参数。
@ hehe int =10   --输入参数
as
sql 语句 给输出参数赋值/
go
 
调用
1:定义变量:用于接受存储过程返回的结果
  declare @id int
2: exec proc_name  @id output,60 --调用的时候也得声明


--------------------------------------------------------------------错误处理--------------------------------------------
raiserror 抛出错误
例子

当我们不愿意的变量分数>100时候

if(@mark>100)
begin
//开始抛出异常
Raiserror('几个分数不能是大于100的数字',16,1)  16代表错误等几  我门最好都写16,17,18,1表示错误状态,一般存储过程里都写1
return  --立即返回,退出存储过程

end





诚夏徕 2007-01-02 14:50 发表评论
]]>
sql server数据管理与实现(高级特性2)http://www.blogjava.net/wwwlike/articles/91375.html诚夏徕诚夏徕Tue, 02 Jan 2007 06:04:00 GMThttp://www.blogjava.net/wwwlike/articles/91375.htmlhttp://www.blogjava.net/wwwlike/comments/91375.htmlhttp://www.blogjava.net/wwwlike/articles/91375.html#Feedback0http://www.blogjava.net/wwwlike/comments/commentRss/91375.htmlhttp://www.blogjava.net/wwwlike/services/trackbacks/91375.html-------------------------------------------------------事物--------------------------------------------------------------开始事物
begin transaction
提交事物
commit transaction
回滚事物
rollback transaction
一般是用系统变量 获得是否有错误的存在
把@@error的值 累加到局部变量 @error里
最后判断@error是否为0为0 表示没有错误  可以提交事物

不为0表示有错误 事物回滚


-------------------------------------------------------视图--------------------------------------------------------------
视图是虚拟表
我们一般只在视图上做查询

视图的名称的起法 最好是view_数据库名_表名(或是一个使用这个视图人的名)
视图说明 也是放在 本数据库的sysObjects 里 通过name进行查找

创建视图
create view 视图名
as
select语句 (可以在这里把列的名字 通过as ,=改成自己喜欢的中文)
go

删除视图    drop view 视图名

视图里存放的是sql语句

使用视图的方法 select * from 视图名  (如果列名在上面被改了,这里查询时候就用改了后的)

-------------------------------------------------------索引--------------------------------------------------------------
索引是sql server编排数据的内部方法,它为sql server提供一种方法来编排查询数据的路由
列的类型为 text,image,bit 的不能创建索引
查询的时候一般不需要人工指定使用哪个索引查寻 sql会根据所创的索引自动优化

缺点:会降低增加 ,删除的速度,需要更多的存储空间
聚集索引 clustered  Index
唯一索引 unique  Index
非聚集索引  NoNclustered  Index

创建了唯一约束,将会自动创建唯一索引,设置为主键,该列就默认为聚集索引

聚集索引一个表只能一个,非聚集索引一个表可以多个




诚夏徕 2007-01-02 14:04 发表评论
]]>
sql server数据管理与实现(高级特性1)http://www.blogjava.net/wwwlike/articles/91364.html诚夏徕诚夏徕Tue, 02 Jan 2007 05:27:00 GMThttp://www.blogjava.net/wwwlike/articles/91364.htmlhttp://www.blogjava.net/wwwlike/comments/91364.htmlhttp://www.blogjava.net/wwwlike/articles/91364.html#Feedback0http://www.blogjava.net/wwwlike/comments/commentRss/91364.htmlhttp://www.blogjava.net/wwwlike/services/trackbacks/91364.html(一) 声明局部变量

在一个go里的是一个局部

declare @变量名 变量类型

给变量赋值:

1set @变量名=变量值

2select @变量名=列名 from 表名 where 产生一行数据

用第2种情况的时候 注意最好只要产生一条记录,不然变量得到的值会是最后一条记录相应列上的值

(2)全局变量

例如:

@@error
用于表示最近一条sql语句是否有错,有错返回非零的值

@@identity
返回最后标识的值

(3)T-sql里的一些语句

1print '输出语句'

2if  else 语句  如果有多条 语句就  if begin 语句1 语句2  end else begin 语句1 语句2 end  (2语句中间不用逗号)

3while 循环语句                                                                            4条件判断 之 case
   while(循环条件).                                                                           case
begin                                                                                                      when 条件1 then 结果1
循环语句                                                                                              when 条件2 then 结果2
end                                                                                                   [else 结果3]
  可以用break跳出循环                                                                  end


(4)高级查询
1 in  ,not in  在条件判断时候用,表示是否在那个范围  他们后面多半是个查询语句 

2exists ,not exists   多用在判断 是否有查询结果 exists(select * from jobs) 有查询结果 返回真ture.
所以这个多用在判断语句里

3其他:
查询为null 用 is null

给汉字的列赋值  select 汉字列名=(select查询语句 ,切记括号不能少)

count(*)  表示满足条件的所有行数,就算某些列有空值也不影响 有多少行 count 的值就是多少
count(列名) 满足条件非空的这列 有多少行  count的值就是多少

时间的表示 可以是
‘月-日-年’
也可以是
‘年/月/日’

                                                                                                     



诚夏徕 2007-01-02 13:27 发表评论
]]>