• 收藏几个有意思的SQL脚本


    快速获取表test的记录总数 : 
    select rows from sysindexes where id = object_id('test'and indid in (0,1)

    提取数据库内所有表的字段详细说明的SQL语句 :

    SELECT 
    (
    case when a.colorder=1 then d.name else '' end) N'表名'

    a.colorder N
    '字段序号'

    a.name N
    '字段名'

    (
    case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else ''
     
    end) N'标识'

    (
    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) N'主键'

    b.name N
    '类型'

    a.length N
    '占用字节数'

    COLUMNPROPERTY(a.id,a.name,'PRECISION'as N'长度'

    isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0as N'小数位数'

    (
    case when a.isnullable=1 then ''else '' end) N'允许空'

    isnull(e.text,'') N'默认值'

    isnull(g.[value],''AS N'字段说明'
     
    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
     sysproperties g 
    on a.id=g.id AND a.colid =
     g.smallid 
    order by object_name(a.id),a.colorder

    获取表结构[把 'sysobjects' 替换 成 'tablename' 即可]

    SELECT CASE IsNull(I.name, ''
    When '' Then ''
     
    Else '*'
     
    End as
     IsPK, 
    Object_Name(A.id) as
     t_name, 
    A.name 
    as
     c_name, 
    IsNull(SubString(M.text1254), ''as
     pbc_init, 
    T.name 
    as
     F_DataType, 
    CASE IsNull(TYPEPROPERTY(T.name, 'Scale'), ''

    WHEN '' Then Cast(A.prec as varchar

    ELSE Cast(A.prec as varchar+ ',' + Cast(A.scale as varchar

    END as
     F_Scale, 
    A.isnullable 
    as
     F_isNullAble 
    FROM Syscolumns as
     A 
    JOIN Systypes as
     T 
    ON (A.xType = T.xUserType AND A.Id = Object_id('sysobjects'
    ) ) 
    LEFT JOIN ( SysIndexes as
     I 
    JOIN Syscolumns as
     A1 
    ON ( I.id = A1.id and A1.id = object_id('sysobjects'and (I.status & 0x800= 0x800 AND A1.colid <=
     I.keycnt) ) 
    ON ( A.id = I.id AND A.name = index_col('sysobjects'
    , I.indid, A1.colid) ) 
    LEFT JOIN SysComments as
     M 
    ON ( M.id = A.cdefault and ObjectProperty(A.cdefault, 'IsConstraint'= 1
     ) 
    ORDER BY A.Colid ASC

    四种方法取表里n到m条纪录:

    1.
    select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入
    set rowcount n
    select * from 表变量 order by columnname desc

    2.
    select top n * from (select top m * from tablename order by columnname) a order by columnname desc

    3.如果tablename里没有其他identity列,那么:
    select identity(int) id0,* into #temp from tablename

    取n到m条的语句为:
    select * from #temp where id0 >=and id0 <= m

    如果你在执行
    select identity(int) id0,* into #temp from tablename
    这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
    exec sp_dboption 你的DB名字,'select into/bulkcopy',true


    4.如果表里有identity属性,那么简单:
    select * from tablename where identitycol between n and m 
  • 相关阅读:
    There is an overlap in the region chain修复
    There is an overlap in the region chain
    region xx not deployed on any region server
    python 中的re模块,正则表达式
    TCP粘包问题解析与解决
    yield from
    Git push提交时报错Permission denied(publickey)...Please make sure you have the correct access rights and the repository exists.
    mysql 中Varchar 与char的区别
    Mysql 字符集及排序规则
    请实现一个装饰器,限制该函数被调用的频率,如10秒一次
  • 原文地址:https://www.cnblogs.com/msn/p/567947.html
Copyright © 2020-2023  润新知