C军

不玩博客了!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  SQLServer:T-SQL语法

T-SQL编程
摘要:UDF的定义 和存储过程很相似,用户自定义函数也是一组有序的T-SQL语句,UDF被预先优化和编译并且尅作为一个单元爱进行调用。UDF和存储过程的主要区别在于返回结果的方式。 使用UDF时可传入参数,但不可传出参数。输出参数的概念被更为健壮的返回值取代了。和系统函数一样,可以返回标量值,这个值的好处是它并不像在存储过程中那样只限于整形数据类型,而是可以返回大多数SQL Server数据类型。 UDF有以下两种类型: 返回标量值的UDF。 返回表的UDF。 创建语法:CREATE FUNCTION [.]([ [AS] [.] [= [READONLY]] [,...n] ])R... 阅读全文
posted @ 2013-07-02 17:55 逆心 阅读(5332) 评论(1) 推荐(2) 编辑

摘要:存储过程(stored procedure)有时也称sproc,它是真正的脚本,更准确地说,它是批处理(batch),但都不是很确切,它存储与数据库而不是单独的文件中。 存储过程中有输入参数,输出参数以及返回值等。一、创建存储过程 创建存储过程的方法和创建数据库中任何其他对象一样,除了他使用AS关键字外。存储过程的基本语法如下: CREATE PROCEDURE|PROC [ [schema.] [VARYING] [=] [OUT[PUT]] [READONLY] [, [schema.] [VARYING] [=] [OUT[PUT]] [READONLY] [,..... 阅读全文
posted @ 2013-07-02 13:18 逆心 阅读(3258) 评论(2) 推荐(2) 编辑

摘要:游标是面向行的,它会使开发人员变懒,懒得去想用面向集合的查询方式实现某些功能。 在性能上,游标会迟更多的内存,减少可用的并发,占用带宽,锁定资源,当然还有更多的代码量。 用一个比喻来说明为什么游标会占用更多的资源。当你从ATM机取款的时候,是一次取1000的效率更高呢,还是10次100呢?既然游标那么多缺点,为什么要学习游标呢? 现存系统有一些游标,我们查询必须通过游标来实现。 作用一个备用方式,当使用while、子查询,临时表,表变量,自建函数或其他方式仍然无法实现某些查询的时候,可以使用游标实现。 游标的定义语法:DECLARE cursor_name CURSOR [ ... 阅读全文
posted @ 2013-06-28 18:22 逆心 阅读(3489) 评论(2) 推荐(2) 编辑

摘要:CASE简介 基于列的逻辑表达式,其实就是CASE表达式.可以用在SELECT,UPDATE,DELETE,SET以及IN,WHERE,ORDER BY和HAVING子句之后。由于这里讲的是T-SQL查询,所以只说到CASE表达式在SELECT子句和ORDER BY子句中的使用。 CASE表达式的作用与编程语言中的IF…THEN…ELSE逻辑类似。只是CASE表达式在T-SQL中并不能控制T-SQL程序的流程,只是作为基于列的逻辑使用。 一个简单的示例,假设有这样一张表: 在查询的时候,对于列Sex,如果是False就显示男,如果是True就显示女。 语句如下: SELECT ... 阅读全文
posted @ 2013-06-25 11:31 逆心 阅读(6831) 评论(0) 推荐(1) 编辑

摘要:T-SQL变量 变量的种类: 在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable) 1、全局变量是由系统定义的,在整个SQL Server实例内都能访问到的变量,全部变量以@@开头,用户只能访问,不能赋值。 2、局部变量由用户定义,生命周期只在一个批处理内有效。局部变量以@作为第一个字符,由用户自己定义和复制。 示例: DECLARE @i int --声明一个int类型局部变量 SET @i = 10 --通过SET对局部变量进行赋值 DECLARE @Name nvarchar(20) ... 阅读全文
posted @ 2013-06-24 16:55 逆心 阅读(2427) 评论(1) 推荐(3) 编辑

摘要:运行时生成语句 1、用EXECUTE执行动态命令 EXECUTE命令可以执行存储过程、函数和动态的字符串命令。注意此语句的作用正如前面在介绍批处理时,如果批中的第一条语句是"EXECUTE存储过程",则可以 省略关键字"EXECUTE"。 语法: { EXEC | EXECUTE } ( { @string_variable | [N]'tsql_string } [+...n] ) [ AS { LOGIN | USER } = 'name' ] [;] 参数说明: EXEC:是EXECUTE的简写,两者皆可... 阅读全文
posted @ 2013-06-24 11:43 逆心 阅读(3758) 评论(0) 推荐(1) 编辑

摘要:运算符 1、算术运算符算术运算符说明+加法-减法*乘法/除法%取模,两个整数相除后的余数 2、位运算符位运算符说明&(与、and)按位逻辑与运算|(或、OR)按位逻辑或运算~(非、NOT)按位逻辑非运算(互斥OR)按位互斥运算3、比较运算符比较运算符说明>大于=等于>=大于等于不等于!=不等于!>不大于!、=、、!=、!>、!<各种比较运算符6^、&、|位运算符7NOT逻辑非8AND逻辑与9ALL、ANY、BETWEEN、IN、LIKE、OR、SOM逻辑运算符10=赋值运算符 阅读全文
posted @ 2013-06-17 22:31 逆心 阅读(1213) 评论(0) 推荐(1) 编辑

摘要:1、USE语句 USE语句用于设置当前数据库,如果没有USE语句,那么就由执行脚本的任何用户来确定执行脚本时当前数据库是正确的。如果只是一个通用脚本,那么省去USE语句实际上可能更有益。通常,如果在脚本中命名特定于数据库的表(非系统表),那么需要使用USE命令。如果脚本用于修改一个特定的数据库,那么可以发现这是非常有帮助的。否则默认的脚本都对master执行。USE master 2、声明变量 DECLARE语句的语法相当简单: DECLARE @ [= ][, @ [= ][, @ [= ]]] 可以一次仅仅声明一个变量,也可以一次声明几个变量。人们常常以一... 阅读全文
posted @ 2013-06-17 12:40 逆心 阅读(1892) 评论(0) 推荐(1) 编辑

摘要:CREATE 语句 CREATE语句的开头都是一样的,然后是特定的细节。 CREATE 一、CREATE DATABASE CREATE DATABASE命令用于创建一个数据库,创建一个数据库的最基本语法如下所示: CREATE DATABASE CREATE DATABASE的完整语法CREATE DATABASE [ON [PRIMARY] ([NAME = ,] FILENAME = [, SIZE = ] [, MAXSIZE = ] [, FILEGROWTH = ])] [LOG ON ([NAME = ,] FI... 阅读全文
posted @ 2013-06-07 23:52 逆心 阅读(8684) 评论(0) 推荐(3) 编辑

摘要:控制流语句 批处理: 一个批处理段是由一个或者多个语句组成的一个批处理,之所以叫批处理是因为所有语句一次性被提交到一个SQL实例。 批处理是分批提交到SQL Server示例,因此在不同的批处理里局部变量不可访问。 在不同批处理中,流程控制语句不能跨批处理。 如果想让多个语句分多次提交到SQL实例,则需要使用GO关键字。GO关键字本身并不是一个SQL语句,GO关键字可以看作是一个批处理结束的标识符,当遇到GO关键字时,当前GO之前的语句会作为一个批处理直接传到SQL实例执行。 不同的批处理局部变量不可访问,例如: DECLARE @i int; SET @i... 阅读全文
posted @ 2013-03-10 23:22 逆心 阅读(18563) 评论(2) 推荐(5) 编辑

摘要:一、标识符 在T-SQL语言中,对SQLServer数据库及其数据对象(比如表、索引、视图、存储过程、触发器等)需要以名称来进行命名并加以区分,这些名称就称为标识符。 通常情况下,SQLServer数据库、数据库以及各种数据对象都应该有一个标识符,但对于某些对象来说,比如约束,标识符是可选的。推... 阅读全文
posted @ 2013-03-08 22:54 逆心 阅读(3514) 评论(0) 推荐(1) 编辑