数据库编程语句总结

创建一个触发器,当插入或者更新成绩时,该触发器检查插入的数据是否处于设定的范围之内(0到100之间)
create trigger tr0
on t_score
for insert ,delete,update
as
declare @de int
select @de=inserted.score from inserted
if(@de>100 or @de<0)

 begin
 raiserror ('成绩必须在0到100之间',16,1)
 rollback transaction;  //触发器中包含了一个事务,进行回滚,避免不必要的操作
 end
 go

 

RRANT语句:对象权限与角色的授予。
例如:将查询T表和修改教师职称的权限授予user3,并允许讲此权限授予其他用户。
grant select,update(prof)
on T to user3
with anmin option

REVOKE语句:语句权限与角色的收回
例如:收回用户user3查询T表和修改教师职称的权限。
revoke select ,update(prof)
on T
from user3


事务:要么全部执行,要么全部不执行。  tran
在SQL server中,事务时完成一个应用处理的最小单元,由一个或多个对数据库操作的语句组成。事务作为一个完整的执行单元
如果执行成功,事务中进行的数据更新会全部提交;如果事务中有一个语句执行失败,则取消全部操作,并将数据库恢复到事务执行之前的状态。

--begin transaction是开始事务,commit transaction是提交事务,rollback transaction是回滚事务

事务要尽可能的短,访问的数据量要尽可能的少,在浏览数据时不要开启事务,不要在事务中要求用户输入。
用于保证数据的完整性,避免在大型数据编程中发生错误

begin tran mytran
insert into t_score(name,score) values('往往','adsad')
go
if @@ERROR<>0
begin
rollback tran  mytran
print '插入出错'
return

end
commit tran mytran


游标:cursor
在查询结果集的时候,游标是在第一条结果的前面  ,这样当你弄懂游标的时候,他会向下移动一个位置 指向第二条记录  这样就会读取出结果集中所有的数据 

游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条T_SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结 ...

游标例子:
declare @post varchar(8000), @money int
declare post2_cursor  cursor for   --声明游标
select postname,salary from t_post
open post2_cursor     --打开游标

fetch post2_cursor  into @post,@money--先提取一条数据,获得状态值
while (@@FETCH_STATUS=0)--循环提取游标中的数据
begin

print @post
print @money
fetch post2_cursor  into @post,@money
end
close post2_cursor        --关闭游标
deallocate post2_cursor --释放游标,释放被游标占用的资源。

 


视图:视图是个虚表,是从一个或者多个表或者视图中导出的表,其结构和数据是建立在对表的查询基础上的。
--创建视图:
create  view v_employee
as select *from t_Employee where
Post in (select postname  from t_post where salary >120)

--修改视图
alter  view v_employee
as select *from t_Employee where
Post in (select postname  from t_post where salary >100)


存储过程:为了完成特定的功能而汇聚在一起的一组SQL程序语句,经编译后存储在数据库中的SQL程序
   在SQL server 中使用存储过程而不使用存储在客户端计算机本地的Transact—SQL程序的优点包括:
<1>存储过程已在服务器注册。
<2>存储过程具有安全特性和所有权链接,以及可以附加到他们的证书。用户可以被授予权限来执行存储过程而不必直接对存储过程中引用的对象具有权限。
<3>存储过程可以强制应用程序的安全性。参数化的存储过程有助于保护应用程序不受SQL注入的攻击
<4>存储过程允许模块化程序设计,存储过程一旦创建,以后即可在程序中调用任意多次,这样可以改进应用程序的可维护性
<5>存储过程可以减少网络通信流量。一个需要数百行的SQL代码可以通过一条执行过程代码的语句来执行,而不需要在网络中发送数百行代码。
<6>不需要在程序中写入大量的sql代码然后递交给数据库服务器,影响效率
j
存储过程的三个组成部分:
<1>所有的输入参数以及传给调用者的输出参数。
<2>被执行的针对数据库的操作语句、
<3>返回给调用者的状态值,以指明调用是否成功。

创建存储过程
create procedure p_t_post
@p1 nvarchar(50),@p2 numeric(18,1)
as
begin
insert into t_post values(@p1,@p2)
end

执行存储过程:
exec(ute) p_t_post '老板00',110


索引:聚集索引:会重新排列表中的数据会增加表的空间,速度最快(主键约束)
      非聚集索引:不会重新排列表中的数据 可以提高表的访问速度。(外键约束)
create unique clustered index number_ind  on emplopyee(number)
with

 


查看数据库最大连接数:select @@max_connections
master数据库记录MSSQLSERVER系统级别信息,数据库结构等修改要及时备份数据库,master数据库只能进行完全备份,如果master数据库损坏且无备份,可以用rebuildm.exe工具重建;tempdb保存临时表和临时存储过程;model是创建新数据库的模板;msdb 数据库供 SQL Server 代理程序调度警报和作业以及记录操作员时使用。

 

简单基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count(*) as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]

 

修改一个表中字段的类型。
alter table dbo.SS_SSQKDJK
alter column ssrq  datetime


convert转换数据的类型: 前面是目标类型,后面是要转换的数据
convert(varchar(2),
      case when VW_MZBRJSK.cardtype = 2 then '0'
    when VW_MZBRJSK.cardtype = 1 and len(VW_MZBRJSK.cardno) > 25 then '1'
           when VW_MZBRJSK.cardtype= 1 and len(VW_MZBRJSK.cardno) = 15 then '2'
    when VW_MZBRJSK.cardtype = 1 and len(VW_MZBRJSK.cardno) < 15 then '3'
    else '9' end) as klx

Isnull(VW_MZBRJSK.zxlsh,'0') as zxlsh,
被检查的字段为空时替换为指定值。


truncate和 delete只删除数据不删除表的结构(定义)

drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);

CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型     SELECT CAST('12' AS int)

 

% :替代一个或多个字符                       SELECT * FROM Persons WHERE City LIKE 'Ne%'
 _  仅替代一个字符                           SELECT * FROM Persons WHERE FirstName LIKE '_eorge'
[charlist]  : 字符列中的任何单一字符        SELECT * FROM Persons  WHERE City LIKE '[ALN]%'              表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:
[^charlist]或者[!charlist]:不在字符列中的任何单一字符 SELECT * FROM Persons WHERE City LIKE '[!ALN]%'    表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人

在数据库中修改一个数据表的表名 如果有多个人同时连接的话要属性-选项 设为单个用户访问
 执行sp_renamedb 存储过程进行更名操作
exec sp_renamedb 't' ,'tt'

获取一个数据库中的存储过程select * from sysobjects where xtype='P'

select * from sysobjects where xtype='P'
select name from sysobjects where xtype = 'P'

select text from dbo.syscomments

sp_helptext 'usp_tb_stat_ywl_reprot_dw'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值