显示列表
 Union的用法2008-07-08

Union
把多次查询的结果合并成一个表返回。


Select [ID],[Name] From [T1]
Union
Select [ID],[Name] From [T2]

[T1]和[T2]的结构可以不一样,但查询的字段类型要一样。

Union:不用 Order By 时,自动对返回结果排序。
Union All:不用 Order By 时,不对返回结果排序。


例子
如 [T1] 表记录很多,在查询时,如果使用 Order By 会严重影响查询速度

方法1
Select [ID],[Name] From [T1] Where [ClassID]=1 Order By [IsPayment] Desc


方法2
创建一个视图
Create View [V_T1_IsPayment] As Select * From [T1] Where [IsPayment]=1

Select [ID],[Name] From [V_T1_IsPayment] Where [ClassID]=1
Union All
Select [ID],[Name] From [T1] Where [ClassID]=1 And [IsPayment]=0

这样,就不用 Order By 使 IsPayment=1 的排在前面
方法1和方法2查询的结果是一样的,但方法2速度会快,省了排序的时间。
ClassID、IsPayment 都要建索引。



查看全文 | 分类(MSSQL) | 访问(69) | 编辑

删除主键
Alter Table 表名 Drop Constraint 主键名

创建主键
Alter Table 表名 Add Constraint 主键名 Primary Key(主键字段)

修改字段
Alter Table 表名 Alter Column 字段 数据类型 NULL | NOT NULL Default "默认值"

查看全文 | 分类(MSSQL) | 访问(18) | 编辑

Company_Name 表中有三千万条数据。
创建一个聚集索引用了20分钟。
Create Clustered Index Company_Name_Name
On [Company_Name]([Name])

创建一个非聚集索引用了7分钟。
Create NonClustered Index Company_Name_ID
On [Company_Name]([ID])

查看全文 | 分类(MSSQL) | 访问(11) | 编辑

表 Company 有 2,620,000 条记录

1. Select Count(*) From [Company]
第一次:
第二次:


Order By

Or




标签:未完待续 
查看全文 | 分类(MSSQL) | 访问(16) | 编辑
 索引维护2008-06-24

一、DBCC SHOWCONTIG
显示指定的表或视图的数据和索引的碎片信息。


语法
DBCC SHOWCONTIG
[(
 { 'table_name' | table_id| 'view_name' | view_id }
 [ , 'index_name' | index_id ]
)]


参数
1. 'table_name'|table_id|'view_name'|view_id
指定要检查碎片信息的表或视图。
如果未指定,则检查当前数据库中的所有表和索引视图。


2.'index_name'|index_id
指定要检查其碎片信息的索引。
如果未指定,将处理指定表或视图的聚集索引。


例子
DBCC SHOWCONTIG('Book')

DBCC SHOWCONTIG('Book', 'Book_BookName')

 


二、DBCC INDEXDEFRAG
指定表或视图的索引碎片整理。

语法
DBCC INDEXDEFRAG
(
    { 'database_name' | database_id | 0 }
        , { 'table_name' | table_id | 'view_name' | view_id }
    [ , { 'index_name' | index_id } [ , { partition_number | 0 } ] ]
)

参数
1.'database_name' | database_id | 0
对其索引进行碎片整理的数据库。如果指定 0,则使用当前数据库。

2.'table_name' | table_id | 'view_name' | view_id
对其索引进行碎片整理的表或视图。

3.'index_name' | index_id
要进行碎片整理的索引的 ID 的名称。如果未指定,该语句就对指定表或视图的所有索引进行碎片整理。

例子
DBCC INDEXDEFRAG(0, 'Book', 'Book_BookName')

查看全文 | 分类(MSSQL) | 访问(19) | 编辑
 常犯的错误2008-06-19

1. 将 Exec 的执行结果放入变量

 

标签:错误 
查看全文 | 分类(MSSQL) | 访问(15) | 编辑
 Substring 函数2008-06-19

Substring 函数
返回字符表达式、二进制表达式、文本表达式或图像表达式的一部分。

标签:SQL函数 
查看全文 | 分类(MSSQL) | 访问(57) | 编辑
 CharIndex 函数2008-06-19

CharIndex 函数
返回字符串中指定表达式的起始位置。

标签:SQL函数 
查看全文 | 分类(MSSQL) | 访问(34) | 编辑
 CONVERT 函数2008-06-19

CONVERT
将一种数据类型的表达式转换为另一种数据类型的表达式。

语法:
CONVERT(data_type[(length)], expression [,style])

参数:
1.data_type
目标数据类型。
length:指定目标数据类型长度的可选整数。 默认值为 30。

2.expression
要转换数据类型的表达式

3.style
可选参数。是一个整数表达式。
指定 CONVERT 函数如何转换 expression 的整数表达式。
如 data_type 为 date 或 time 数据类型,则 style 可以为下表中显示的值之一
值  输出格式
1   mm/dd/yyyy
2   yy.mm.dd
3   dd/mm/yyyy
10  mm-dd-yy
20  yyyy-mm-dd hh:mi:ss
21  yyyy-mm-dd hh:mi:ss.mmm
......
不同的数据类型,style 会不一样。


一个例子
把时间格式转成字符串格式。

declare @datetime1 datetime;
set @datetime1 = '2008-1-1 10:10:10';
print convert(nvarchar, @datetime1);
print convert(nvarchar, @datetime1, 20);
print convert(nvarchar(10), @datetime1, 20);


输出:
01  1 2008 10:10AM
2008-01-01 10:10:10
2008-01-01

标签:SQL函数 
查看全文 | 分类(MSSQL) | 访问(81) | 编辑

1.查询每个月加入的记录总数
Select convert(varchar(7), [AddTime], 20) as [AddTime],count(*) as [Count]
From [Article] Group By convert(varchar(7), [AddTime], 20)
Order By [AddTime] Desc

每天的记录数:convert(varchar(10), [AddTime], 20)
每年的记录数:convert(varchar(4), [AddTime], 20)

2.A表和B表有关联外键,可以相互对换数据
Update [Article] Set [ClassName]=C.[ClassName]
From [Class] C Inner Join [Article] A On C.[ClassID]=A.[ClassID]

3.从一个表查询一些记录,导入另一个表
Insert Into [Tag]([TagName]) (Select [TagName] From [Tag])
重复一遍表的内容

标签:未完待续 
查看全文 | 分类(MSSQL) | 访问(16) | 编辑
 总数:19   页次:1/2   首 页   上一页   下一页   尾 页