Java学习笔记之数据库(触发器、事物、索引、投影和除、视图、存储过程和函数 )含各种链)___ 一直补充

18 篇文章 0 订阅
2 篇文章 0 订阅
2015-08-04
这个是我在学习数据库过程的相关记录和总结(我会一直完善和补充的),敬请关注

SQL教程:http://www.yiibai.com/sql/sql_function_insert.html


注:@@定义的是全局变量或者系统变量


自定义的全局变量怎么写:


delete、truncate、drop table的区别:



常用函数: (如果是常量,请使用N'xxxx',因为是nvarchar的)
raiserror: raise(提高) error http://www.cnblogs.com/xugang/archive/2011/04/09/2010216.html
-作用:用于抛出一个错误
sp_addmessage用法:
https://technet.microsoft.com/zh-cn/library/ms178649.aspx
update函数:http://www.cnblogs.com/xieex/archive/2008/12/19/1286348.html
可以看到update(TEST_A)的返回值为false,true:
true:   修改TEST_A列、插入该表中的一条数据时,都会返回true;
false:  修改该表中的其他列、删除该表中的数据时,返回false.


insert函数:http://www.yiibai.com/sql/sql_function_insert.html
delete函数:
convert函数:转化函数


GO语句:
go代表一个批处理的结束
你可以把每个go之间的语句当成一句SQL
go不是标准的语法,只是查询分析器为了区分多个批处理而设的分隔符而已
在Go 语句之前加入Return 可以跳出Go 语句段。
break可以跳出While 循环。 
sql-server注释:
--注释内容
存储过程:
语法:http://www.cnblogs.com/blsong/archive/2009/11/27/1612052.html(这里面也有sql_server的其他资料)
create procedure pro_NAME 
参数名称 参数类型【长度】,...
AS
//定义内部参数
参数名称 参数类型【长度】,...
Declare
 参数1,参数2
 //初始化内部参数
 set 参数1的初始值,set参数2的初始值
//存储过程的主要内容 Return 结束此 存储过程;trascation 的作用是,如果中间的任何一个执行错误,就全部执行都返回
Begin [trascation]
/*
1.可以取得需要的值存入到内部参数中
eg:select @str_code=name from user where ...
2.可以用取到的或传入的参数进行判断,来进行update,insert,delete等操作
eg:if @str_code ="" //单引号
begin 
具体的操作
end
    else
begin 
具体的操作
end
3.关于游标的问题
declare db cursor for //声明一个游标(db为其名字),游标必须声明在查询的前面
select name from user where...
open db //打开游标
fetch next from db into @str_name//将第一个值放入一个参数中


while @@fetch_status =0 --表示存在本笔数据 
(0:顺利执行;-1:失败,或数据列超出结果集;-2:撷取的数据列已遗漏)
begin  --开始循环
//个体操作
end--结束循环


close db--关闭游标


deallocate db //移出数据指标参考



*/
commit trascation


return
具体例子:】(点击链接查看)



创建 
调用存储过程:
exec是sqlplus的命令,只能在sqlplus中使用。 call是sql命令,任何工具都可以使用


触发器:http://www.cnblogs.com/yank/p/4193820.html
http://www.cnblogs.com/xieex/archive/2008/12/19/1286348.html
关于raiserror可见:
https://msdn.microsoft.com/zh-cn/library/ms178592.aspx


-类型 for after 和 instead of

-触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,
以便在对特定表或列作特定类型的数据修改时执行。
-语法:
CREATE TRIGGER trigger_name 
ON {table_name | view_name} 
{FOR | After | Instead of } [ insert, update,delete ]
AS           
   sql_statement
-OGJECT_ID函数的使用:
http://zhidao.baidu.com/link?url=gWVNYYub3qPTi75cvR3_5ZptVrNcbN579Y51HKQqjI6Cao6Z93cwfer9V0_kUC9LTGUiCRe9exdRM0GNo9G2GK
http://www.cnblogs.com/AngelLee2009/p/3342730.html






-主要应用:
在触发器实际应用中,主要还是建立约束以及级联更新。


函数:
http://www.blogjava.net/niudan/archive/2011/08/25/357293.html
http://www.jb51.net/article/23870.htm
http://bbs.csdn.net/topics/300002117


存储过程和函数的区别:http://www.cnblogs.com/Joetao/articles/2250516.html
-本质上没区别。只是函数有如:只能返回一个变量的限制。
而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 
        -函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 
     1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 
     2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 
     3. 存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 
     4. 当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。 
        - Procedure cache中保存的是执行计划 (execution plan) ,当编译好之后就执行procedure cache中的execution plan,
之后SQL SERVER会根据每个execution plan的实际情况来考虑是否要在cache中保存这个plan,评判的标准一个是这个execution plan可能被使用的频率;
其次是生成这个plan的代价,也就是编译的耗时。保存在cache中的plan在下次执行时就不用再编译了。


视图:
-视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表
可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。
-我的理解
视图就是在表上面的漂浮窗口,通过对视图定义的说明可以显示和过滤出感兴趣的内容,视图上面还可以有新的窗口

视图的语法:
5. 视图语法整理:


1) 创建视图  


  create view view_name
     as 
  <select 语句>


       2) 修改视图


  alter view view_name
     as 
  <select 语句>
       3)删除视图


    drop view view_name
       4)修改视图名称


exec  sp_rename  view_oldname   view_newname


       5) 查看视图


select  列名  from view_name


6.  注意事项


     每个视图中可以使用多个表


     与查询相似,一个视图可以嵌套另一个视图,但最好不要超过3层。


     视图定义中  select 语句不能包括一下内容


   order by 字句,除非在select 语句的选择列中也有一个top字句


   into 关键字


   引用临时表或表变量


事务:http://www.cnblogs.com/kissdodog/archive/2013/07/03/3169788.html
四个属性:
原子性Atomicity,一致性Consistency,隔离性Isolation,持久性Durability ,即ACID特性。
-事务是一种机制,是一个操作序列,它包含了一组数据库操作命令,并且所有的命令作为一个整体一起提交,
或者撤销操作请求,就是说这一组数据库命令要么都执行,要么都不执行。
-事务全部是关于原子性的。原子性的概念是指可以把一些事情当做一个单元来看待。从数据库的角度看,
它是指应全部执行或全部都不执行的一条或多条语句的最小组合。


索引:http://www.cnblogs.com/AK2012/archive/2013/01/04/2844283.html(不怎么理解)
索引主要目的:
是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 
索引分为 聚集索引和非聚集索引:
聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续
聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。


投影和除:
http://www.cnblogs.com/fickleness/p/3259433.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐升升

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值