常用數據庫語句總結
join更新:
update A set A_NAME = B.B_NAME from {Table1} A left join {Table2} B ON A.B_ID = B.B_ID
join可以是left join可以是inner join也可以是right join,不同的join更新的數據大不相同,使用時注意區分!
同理刪除也可以join:
delete {Table1} from {Table1} a inner join {Table2} b on a.{field1} = b.{field1} and a.{field2} = b.{field2}
聯表更新:
新增表字段:
alter table [Table] add [Column] varchar(50) null
同理,修改表字段屬性:
alter table [表格名稱] alter column [字段名稱] [字段類型]
同理,刪除表字段:
alter table [表名稱] drop column [列名]
修改表字段名稱和上面的很不一樣:
exec sp_rename '[表格名稱].[列名]','[修改后列名]'
Exists的使用:
select * from {Table} a where {Column}={Value} and not exists(select 1 from {Table2} where {Column2} = a.{Column2})
Exists只有當聯表查詢的時候才能體現出它的威力
時間函數:
DATEADD(mm,-1,getdate()) 在已有時間上加減 指定的(日,月,小時等)數,返回新的時間
DATEDIFF(day,getdate(),'2008.10.28') 計算兩個時間的差值,返回的是數字
上述兩個函數的第一個參數是一個枚舉,參考(datepart):摸這里;這兩個函數使用同一個枚舉。
分區排序:
select Row_Number() Over(Partition by {Field1} Order by {Field2} desc) RN,* from {Table1}
Stuff與Group by結合使用:
SELECT id, data=STUFF((SELECT ','+[values] FROM {Table} t WHERE id=t1.id FOR XML PATH('')), 1, 1, '') FROM {Table} t1 GROUP BY id