随笔分类 - SQLServer:T-SQL语法
摘要:普通行列转换(version 1.0)仅针对sql server 2000提供静态和动态写法,version 2.0增加sql server 2005的有关写法。问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94想变成(得到如下结果):姓名 语文 数学 物理---- ---- ---- ----李四 74 84 94张三 74 83 93-------------------*/create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)in
阅读全文
摘要:微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)…… (一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别: 其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻...
阅读全文
摘要:对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建立数据库中,对这四种类型往往比较模糊,这里做一下对比。定长或变长所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;有var前缀的,表示是实际存储空间是变长的,比如varchar,nvarchar变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。Unicode或非Unicode数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要
阅读全文
摘要:sql server中变量要先申明后赋值: 局部变量用一个@标识,全局变量用两个@(常用的全局变量一般都是已经定义好的); 申明局部变量语法:declare @变量名 数据类型;例如:declare @num int; 赋值:有两种方法式(@num为变量名,value为值) set @num=val
阅读全文
摘要:Case具有两种格式。简单Case函数和Case搜索函数。 这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。 下面我们来看一下,使用Case函数都能做些什么事情。 一,已知数据按照另外一种方式进行分组,分析。 有如下数据...
阅读全文
摘要:--方法1查询表改为动态select * from sysobjectsexec('select ID,Name from sysobjects')exec sp_executesql N'select ID,Name from sysobjects'--多了一个N为unicode--方法2:字段名,表名,数据库名之类作为变量时,用动态SQL declare @FName varchar(20)s...
阅读全文
摘要:1. 聚合函数(1) AVG函数功能返回组中值的平均值。空值将被忽略语法AVG ( [ ALL | DISTINCT ] expression )(2) MAX函数功能返回表达式的最大值语法MAX ( [ ALL | DISTINCT ] expression )(3) MIN函数功能返回表达式的最小值语法MIN ( [ ALL | DISTINCT ] expression )(4) SUM函数...
阅读全文
摘要:--sql循环declare @i int;set @i=1;while (@i<=5)beginprint @i;set @i=@i+1;end--调用函数select top 10 dbo.TestFunction(id) as returnvalue from userinfo--调用自带函数select convert(char(8),getdate(),101)--函数SET AN...
阅读全文
摘要:回顾一下some any all 用法userinfo表里面有100条数据,其中一个用户名为qixuejia.1.some,any用法一样(不知道有没有其他的不同)select count(*) from userinfo where 'qixuejia' <> some(select userid from userinfo)where 条件成立 该条语句返回100.2.allsel...
阅读全文
摘要:1. 在UPDATE语句中使用子查询同时改变多行的值UPDATE employee SET department=’Training’WHERE department <> ‘Training’ AND sales < (SELECT AVG(sales) FROM employeeWHERE department <>...
阅读全文
摘要:UNION的使用很简单。所需做的只是给出每条SELECT语句,在各条语句之间放上关键字UNION。表TEST:id edu age1本202本253本304本305本256中157中208中209专2010专2011专2012专3013专30UNION指示DBMS执行多条select语句,并把输出组合成单个查询结果集。UNION从查询结果中自动去除了重复的行。如果想返回所有匹配行,可使用UNION...
阅读全文
摘要:搜罗了网上的资料,加上自己测试的sql。1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面2. Havingwhere 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用wher...
阅读全文
摘要:[代码]usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Configuration;usingSystem.Data;usingSystem.Data.SqlClient;namespaceFood.DAL{publicclassDBHelper{privatestaticstringconnecti...
阅读全文
摘要:回顾一下ado.net,呵呵,今天做了一个小测试,公用一个连接,首先插入数据,然后显示,都没有错,执行3的时候出错了,原因是没有写红色的using语句,只知道SqlDataReader 以独占方式连接数据库,其他连接在它释放关闭前是不能使用的,那第一步用的连接,第二部照样可以用,why?Test1 Code highlighting produced by Actipro CodeHighligh...
阅读全文
摘要:SQL语句大全 --数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER
阅读全文