zoukankan      html  css  js  c++  java
  • 收藏几个有意思的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 
  • 相关阅读:
    sublime插件时间
    git与github
    字符编码笔记:ASCII,Unicode和UTF-8
    阮一峰:互联网协议入门
    从理论到实践,全方位认识DNS
    ci事务
    linux下启动oracle
    Java连接Oracle
    我的博客终于开通了,加油!
    FILTER 执行次数
  • 原文地址:https://www.cnblogs.com/msn/p/567947.html
Copyright © 2011-2022 走看看