Sql 常用语句

--删除重复数据   
--(重复全备份)
select att.* into RnsAttachmentsDeleteAllBack0810 from RnsAttachments att
inner join                              
(select t.ForeignId,t.ProjectForeignId from RnsAttachments t
where t.ProjectForeignId is not null
group by t.ForeignId,t.ProjectForeignId having count(1)>1) tt
on att.ForeignId= tt.ForeignId and att.ProjectForeignId = tt.ProjectForeignId;

--重复数据只留一条
select ProjectForeignId,ForeignId,max(Id)maxid into RnsAttachmentsNotDeleteId from
RnsAttachmentsDeleteAllBack0810  group by ProjectForeignId,ForeignId ;

--删除不留下来的数据。
delete del from RnsAttachments del 
inner join RnsAttachmentsDeleteAllBack0810 Delsearch
on del.id=Delsearch.id 
left join RnsAttachmentsNotDeleteId noDel
on del.id=noDel.maxid 
where noDel.maxid is  null;
处理重复数据
SELECT  ( CASE WHEN a.colorder = 1 THEN d.name
               ELSE ''
          END ) AS 表名 ,--如果表名相同就返回空  
        a.colorder AS 字段序号 ,
        a.name AS 字段名 ,
        ( CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN ''
               ELSE ''
          END ) AS 标识 ,
        ( CASE WHEN ( SELECT    COUNT(*)
                      FROM      sysobjects--查询主键  
                      WHERE     ( name IN (
                                  SELECT    name
                                  FROM      sysindexes
                                  WHERE     ( id = a.id )
                                            AND ( indid IN (
                                                  SELECT    indid
                                                  FROM      sysindexkeys
                                                  WHERE     ( id = a.id )
                                                            AND ( colid IN (
                                                              SELECT
                                                              colid
                                                              FROM
                                                              syscolumns
                                                              WHERE
                                                              ( id = a.id )
                                                              AND ( name = a.name ) ) ) ) ) ) )
                                AND ( xtype = 'PK' )
                    ) > 0 THEN ''
               ELSE ''
          END ) AS 主键 ,--查询主键END  
        b.name AS 类型 ,
        a.length AS 占用字节数 ,
        COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 长度 ,
        ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小数位数 ,
        ( CASE WHEN a.isnullable = 1 THEN ''
               ELSE ''
          END ) AS 允许空 ,
        ISNULL(e.text, '') AS 默认值 ,
        ISNULL(g.[value], '') AS 字段说明
FROM    syscolumns a
        LEFT JOIN systypes b ON a.xtype = b.xusertype
        INNER JOIN sysobjects d ON a.id = d.id
                                   AND d.xtype = 'U'
                                   AND d.name <> 'dtproperties'
        LEFT JOIN syscomments e ON a.cdefault = e.id
        LEFT JOIN sys.extended_properties g ON a.id = g.major_id
                                               AND a.colid = g.minor_id
        where d.name in('RnsEmployees','RnsProjects','RnsProjectRelatives','RnsProjectCompanyRelatives','RnsCompanies','RnsJobMapping')
ORDER BY a.id ,
        a.colorder;
表字段说明
        select 
  ROW_NUMBER() OVER (ORDER BY a.object_id) AS No, 
  a.name AS 表名,
  isnull(g.[value],'-') AS 说明
from
  sys.tables a left join sys.extended_properties g
  on (a.object_id = g.major_id AND g.minor_id = 0);
表说明
--增加表说明
EXECUTE sp_addextendedproperty   N'MS_Description','表说明',N'user',N'dbo',N'table',N'表名',NULL,NULL
EXECUTE sp_updateextendedproperty N'MS_Description','项目类型',N'user',N'dbo',N'table',N'ProjectType',NULL,NULL;

--增加字段
ALTER TABLE 表名 ADD    字段名 int not NULL default 8;

--增加字段注释  DemandOrderCostList:表名、CarType:表对应字段、收费车型:注释内容
EXEC sp_addextendedproperty 'MS_Description', '收费车型', 'FreightForwarder', dbo, 'table', DemandOrderCostList, 'column', CarType;

--增加字段注释
EXEC sp_addextendedproperty @name='MS_Description', @value=N'收费车型', @level0type =N'SCHEMA',
@level0name=N'dbo', @level1type ='table', @level1name='DemandOrderCostList', 
@level2type=N'COLUMN',@level2name=N'CarType';

--sp_addextendedproperty的使用,8个参数(@name与@value,@level0type与@level0name,@level1type与@level1name,@level2type与@level2name),4对,
--@name:为列添加扩展信息,@name就等于'Caption'
-- 为列添加说明信息,@name等于'MS_Description'

--@value是要添加的值(如:列注释)

--@level0type:指定我们要修改的列的表所于那个数据库架构,'user''SCHEMA'(推荐,因为在sql server的未来版本中,将删除'user'--@level0name指定我们要修改的表所在架构的名称 如:dbo

--@level1type:指明我们要修改的列所属对象是表,还是视图等。本篇是修改表中的列,所以为'table',
--@level1name: 指明要修改的列所属表的名称

--@level2type:指明我们要修改的对象是列,还是主键,还是约束等。本篇修改的是列,所以为'column'
--@level2name:指明要修改列的列名
表结构修改

 增加默认值:

ALTER TABLE PriceSheet
ADD CONSTRAINT DF_PriceSheet_IsMust DEFAULT 0 FOR IsMust;

 创建索引:

更多内容参见:https://blog.51cto.com/u_16099164/7883712

主键索引:
ALTER TABLE t_EnterpriseHead ADD CONSTRAINT PK_EnterpriseHead_001 PRIMARY KEY CLUSTERED ( EnterpriseCode );

维一索引:
create unique index uq_t_EnterpriseHead001 on t_EnterpriseHead (EnterpriseCode)

 

https://blog.51cto.com/u_16099164/7883712
posted @ 2021-08-10 12:55  丁焕轩  阅读(23)  评论(0编辑  收藏  举报