sql
一、表篇
1.清空表内容
TRUNCATE TABLE your_table_name;
2.存在删除
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME ='表名') DROP TABLE 表名;--存在则删除
3.连表插入
insert into 表(字段,字段,字段,字段) select 字段,字段,字段,字段 from 表
注意:插入字段必须与查询字段相匹配
例:
insert into LVS_WCB_Standard_Parameter(OwnerID,OwnerName,BookerID,BookerName,AddDate, UpdateDate,Status, DeviceQty,--数量 MastPKID, MULT,--报价参数模板 SBAmount,--设备单价 SBJSAmount,--设备结算单价 AZAmount,--安装单价 AZJSAmount--结算安装单价 ) select {0} as OwnerID, '{1}' as OwnerName, {0} as BookerID, '{1}' as BookerName, GETDATE() as AddDate, GETDATE() as UpdateDate, 2 as Status, 1 as DeviceQty,--数量 {3} as MastPKID, a.GroupName as MULT,--报价参数模板 a.SBJSAmount as SBAmount,--设备单价 a.SBJSAmount as SBJSAmount,--设备结算单价 0 AZAmount,--安装单价 0 AZJSAmount--结算安装单价 from LVS_Contract_ContractManageBJ a where a.SystemNo='{2}'
4.连表更新
update 表 set a.字段=c.字段 from 表 a left join 表 b on a.关联字段=b.关联字段 left join 表 c on b.关联关系=c.关联关系 where a.MastPKID
例:
update a set a.MULT=c.GroupName,a.DEDATE=c.PlanDeliveryDate,a.SBAmount=c.SBJSAmount from LVS_WCB_Standard_Parameter a left join LVS_Contract_ContractManage b on a.MastPKID=b.PKID left join LVS_Contract_ContractManageBJ c on b.baojiaNo=c.SystemNo where a.MastPKID={0}
二、列篇
1.修改旧列名为新列名
EXEC sp_rename 'LVS_Base_SalesContractPartsConfig.Units', 'PartNumber', 'COLUMN';
其中 Units为旧列
PartNumber为新列
LVS_Base_SalesContractPartsConfig 为修改的表
2.为表新增一列
ALTER TABLE 表 ADD 列名 类型
3.修改当前列的长度
注:遵循小改大原则,如果该列有内容且占有50字符那么不可以改小于50字符
ALTER TABLE 表名 ALTER COLUMN 字段名 新数据类型(新长度);
三、视图篇
1.存在删除
IF OBJECT_ID('dbo.MyView', 'V') IS NOT NULL DROP VIEW dbo.MyView; GO
OBJECT_ID
函数接收两个参数:
-
第一个参数是视图的完全限定名(包括架构名,这里假设是
dbo
),格式为[架构名].[视图名]
。 -
第二个参数是一个字符串,用于指定你想要查询的对象类型。对于视图,这个值应该是
'V'
。
2.删除
drop view VIEW_CTABLE
四、存储过程篇
1.存在删除
IF OBJECT_ID('dbo.MyStoredProcedure', 'P') IS NOT NULL DROP PROCEDURE dbo.MyStoredProcedure; GO
OBJECT_ID
函数接收两个参数:
-
第一个参数是存储过程的完全限定名(包括架构名,这里假设是
dbo
),格式为[架构名].[存储过程名]
。 -
第二个参数是一个字符串,用于指定你想要查询的对象类型。对于存储过程,这个值应该是
'P'
。
2.删除
DROP PROCEDURE dbo.MyStoredProcedure;
五、约束篇
1.查看当前数据库所有 约束名、约束所在表、约束所在列
SELECT k.name AS ConstraintName, OBJECT_NAME(p.OBJECT_ID) AS TableName, COL_NAME(pc.OBJECT_ID,pc.column_id) AS ColumnName FROM sys.key_constraints k INNER JOIN sys.tables p ON k.parent_object_id = p.object_id INNER JOIN sys.index_columns ic ON ic.object_id = p.object_id AND ic.index_id = k.unique_index_id INNER JOIN sys.columns pc ON ic.object_id = pc.object_id AND ic.column_id = pc.column_id WHERE k.type = 'PK'
六、函数篇
1.如果条件为 TRUE,则返回 YES",如果条件为 FALSE则返回 "NO":
SELECT IIF(500<1000, 'YES', 'NO');
2.解决datetime类型为空赋1900默认值问题
select IIF(getdate() is null,'',convert(varchar(20),getdate(),23))