您的位置:首页 > 数据库

数据库编程语句总结

2014-01-10 13:43 260 查看
创建一个触发器,当插入或者更新成绩时,该触发器检查插入的数据是否处于设定的范围之内(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'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: