SqlServer 常用命令说明 联系客服

发布时间 : 星期四 文章SqlServer 常用命令说明更新完毕开始阅读db348b09581b6bd97f19eada

友恒通有限公司

from ZY_BRJSK

where jsrq between '20050101' and '2005011024' and ybjszt=2 and jlzt in (0,1,2) group by hzxm

having sum(zje)>10000

不带聚合函数的 HAVING 子句 SELECT hzxm FROM ZY_BRJSK

where jsrq between '20050101' and '2005011024' and ybjszt=2 and jlzt in (0,1,2) GROUP BY hzxm

HAVING hzxm LIKE '张%'

11、order by ?. [ ASC | DESC ]

对结果集排序。ASC 和 DESC 关键字用于指定行是按升序还是按降序排序。使用union时,只能对最后结果排序。

12、union

UNION 运算符使您得以将两个或多个 SELECT 语句的结果组合成一个结果集。使用 UNION 组合的结果集都必须具有相同的结构。而且它们的列数必须相同,并且相应的结果集列的数据类型必须兼容。

UNION 运算符从结果集中删除重复的行。如果使用 ALL 关键字,那么结果中将包含所有行并且将不删除重复的行。

Select hzxm,sum(zje) zje from ZY_BRJSK

where jsrq between '200312101' and '2003121024' and ybjszt=2 and jlzt in (0,1,2) group by hzxm union

Select '合计',sum(zje) from ZY_BRJSK

where jsrq between '200312101' and '2003121024' and ybjszt=2 and jlzt in (0,1,2) order by sum(zje)

二、delete 命令

DELETE 语法的简化形式为: DELETE table_or_view [FROM table_sources ] [WHERE search_condition ]

1、删除全部行

Delete #temp = TRUNCATE TABLE #temp

如果要删除在表中的所有行,则 TRUNCATE TABLE 比 DELETE 快。DELETE 以物理

第 5 页 共 53 页

友恒通有限公司

方式一次删除一行,并在事务日志中记录每个删除的行。TRUNCATE TABLE 则释放所有与表关联的页。因此,TRUNCATE TABLE 比 DELETE 快且需要的事务日志空间更少。

注意drop table 与delete 的区别

2、 在行集上使用delete delete from #temp where …

3、在游标的当前行上使用 DELETE

下例显示在名为 cs_dxmdm 的游标上所做的删除。它只影响当前从游标提取的单行。

DELETE FROM #dxmdm

WHERE CURRENT OF cs_dxmdm

4、据与关联表、子查询上使用delete delete ZY_BRSYK

from ZY_BRSYK a,ZYB_BRYJK b where a.syxh=b.syxh and a.brzt=9

三、update 命令

简单格式:

update table_name set 列=表达式 [FROM table_sources] [WHERE search_condition]

1、 使用简单的update

UPDATE YF_YFZKC SET djsl = 0

2、 把 WHERE 子句和 UPDATE 语句一起使用

UPDATE YF_YFZKC SET jxje=0

Where abs(jxje)>1000000

3、通过 UPDATE 语句使用来自另一个表的信息 update #temp

set ksmc =b.name

from #temp a,YY_KSBMK b where a.ksdm=b.id

第 6 页 共 53 页

友恒通有限公司

4、 在游标的当前行上使用update

update #dxmdm set zje=@zje

WHERE CURRENT OF cs_dxmdm

四、insert命令(表必须存在)

所提供的数据值必须与列的列表匹配。数据值的数目必须与列数相同,每个数据值的数据类型、精度和小数位数也必须与相应的列匹配。 1、使用 INSERT...SELECT 插入多行

insert #mzybtemp (hzxm,pzh,jzks,jzrq,jzcs,zje,ybdm,sjh,zzbz,sfzh,zddm,bjqk) select hzxm,convert(varchar(17),substring(cardno,1,10)),ksdm,

substring(sfrq,1,8),1,zje-zfyje-yhje,ybdm,sjh,substring(zhbz,1,1), substring(sfzh,1,18),zddm,substring(zhbz,2,1) from VW_MZBRJSK a (nolock)

where sfrq between @ksrq and @jssj and ybjszt=2 and ghsfbz in (0,1)

and substring(zhbz,4,1)='0' and substring(zhbz,12,1)='0' and exists(select 1 from YY_YBFLK b (nolock)

where b.ybdm=a.ybdm and b.pzlx=10)

2、 使用 INSERT...Values 插入一行。

如果没有指定列的列表,指定值的顺序必须与表或视图中的列顺序一致。 insert into #temp(syxh,jsxh) values (@syxh,@jsxh)

3、SET IDENTITY_INSERT 表 ON|OFF 允许将显式值插入表的标识列中

如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。

CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40)) GO

-- Inserting values into products table.

INSERT INTO products (product) VALUES ('screwdriver') INSERT INTO products (product) VALUES ('hammer') INSERT INTO products (product) VALUES ('saw') INSERT INTO products (product) VALUES ('shovel') GO

--删除第三行 DELETE products

第 7 页 共 53 页

友恒通有限公司

WHERE product = 'saw' GO

-- 试图插入id=3的记录,将报错

INSERT INTO products (id, product) VALUES(3, 'garden shovel') GO

-- SET IDENTITY_INSERT to ON时,能插入id=3的记录. SET IDENTITY_INSERT products ON GO

INSERT INTO products (id, product) VALUES(3, 'garden shovel'). GO

SET IDENTITY_INSERT products OFF GO

第二节 函数 一、聚合函数

SUM、AVG、COUNT、MAX 和 MIN 忽略空值,而 COUNT(*) 不忽略。

1、 count()

COUNT(*) 返回组中项目的数量。它对每行分别进行计数,包括含有空值null的行。

COUNT(ALL expression)=count(expression) 对组中的每一行都计算 expression 并返回非空值的数量。

COUNT(DISTINCT expression) 对组中的每一行都计算 expression 并返回唯一非空值的数量。

select count(*) 总行数,

count(zlf_pt) 有值的行数, count(all zlf_pt) 有值的行数,

count(distinct zlf_pt) 不重复的行数 from YY_KSBMK

总行数 有值的行数 有值的行数 不重复的行数 ----------- ----------- ----------- ----------- 205 61 61 3

2、 sum()

sum(ALL expression)=sum(expression) 对所有的非空的值求和 sum(DISTINCT expression) 返回唯一非空值的和 例:

create table #temp (aa int,bb money) insert #temp values(1,null)

第 8 页 共 53 页