zoukankan      html  css  js  c++  java
  • SQL 笔记

    1 Excel 直接导入到数据库

    exec sp_configure 'show advanced options',1 reconfigure;
    exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1

     STUFF  函数使用


    select zsfz,xsbh=STUFF((select ','+ b.xsbh from Base_xsxx b where b.zsfz=a.zsfz order by zsfz for XML path('')),1,1,'')
    from Base_xsxx a
    where zslc='D0805'
    group by zsfz

    insert into test1
    select * ,''
    from OPENROWSET('Microsoft.ACE.OLEDB.12.0' ,'Excel 8.0;HDR=YES;DATABASE=E:南大宿管南大宿管数据整理Final东湖东湖校区06.05修改.xls',sheet1$)

    2--查询数据库所有表记录
    SELECT a.name, b.rows
    FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id
    WHERE (a.type = 'u') AND (b.indid IN (0, 1))
    ORDER BY b.rows DESC

    3 表中某个字段有多条数据,排序后取其中一条

     select WORKER_NUMBER,WORKER_NAME,JOB_ATTHETIME,row_number() over(partition by WORKER_NUMBER order by JOB_ATTHETIME asc) rnn 
    from base_PersonnelBA_ManagePositionTime
    4 查询表备注信息
    SELECT 
        表名       = case when a.colorder=1 then d.name else '' end,
        表说明     = case when a.colorder=1 then isnull(f.value,'') else '' end,
        字段序号   = a.colorder,
        字段名     = a.name,
        标识       = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then ''else '' end,
        主键       = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
                         SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '' else '' end,
        类型       = b.name,
        占用字节数 = a.length,
        长度       = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
        小数位数   = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
        允许空     = case when a.isnullable=1 then ''else '' end,
        默认值     = isnull(e.text,''),
        字段说明   = isnull(g.[value],'')
    FROM 
        syscolumns a
    left join 
        systypes b 
    on 
        a.xusertype=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  
    left join
    sys.extended_properties f
    on 
        d.id=f.major_id and f.minor_id=0
    where 
        d.name='base_cyxx'  --and a.name='Worker_AddressG'  --如果只查询指定表,加上此红色where条件,tablename是要查询的表名;去除红色where条件查询说有的表信息
    order by 
        a.id,a.colorder
    View Code

    5 sql 添加备注

    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'学院名称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'base_cyxx', @level2type=N'COLUMN',@level2name=N'xymc'

    6 查询数据库所有表的记录数

    SELECT a.name, b.rows
    FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id
    WHERE (a.type = 'u') AND (b.indid IN (0, 1))
    ORDER BY b.rows DESC

    7 字段截取 

    substring,charindex
    declare @fileName varchar(100)
    set @fileName='aaa.exe'
    select substring(@fileName,charindex('.',@fileName)+1,len(@fileName))

     8 开窗函数 

    对于排序开窗函数来讲,它支持的开窗函数分别为:ROW_NUMBER(行号)、RANK(排名)、DENSE_RANK(密集排名)和NTILE(分组排名)。

    select  FName, FSalary, FCity, FAge,  
    row_number() over(order by FSalary) as rownum,  
    rank() over(order by FSalary) as rank,  
    dense_rank() over(order by FSalary) as dense_rank,  
    ntile(3) over(order by FSalary)as ntile ,
    COUNT(FName) OVER(PARTITION BY FCITY) as FCITYcount,
    COUNT(FName) OVER(PARTITION BY FAGE) as FAGEcount
    from  T_Person 
    order by  FAGEcount

    --分组排名http://www.lmwlove.com/ac/ID1089
    ROW_NUMBER()OVER(PARTITION BY [课程] ORDER BY [分数] desc) as id 

     跨服务器导入数据

    不同服务器数据库之间的数据操作
     
    --创建链接服务器 
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用户名 ', '密码 ' 
     
    --查询示例 
    select * from ITSV.数据库名.dbo.表名 
     
    --导入示例 
    select * intofrom ITSV.数据库名.dbo.表名 
     
    --以后不再使用时删除链接服务器 
    exec sp_dropserver  'ITSV ', 'droplogins ' 
     
    --连接远程/局域网数据(openrowset/openquery/opendatasource) 
    --1、openrowset 
     
    --查询示例 
    select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
     
    --生成本地表 
    select * intofrom openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
     
    --把本地表导入远程表 
    insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
    select *from 本地表 
     
    --更新本地表 
    update b 
    set b.列A=a.列A 
     from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b 
    on a.column1=b.column1 
     
    --openquery用法需要创建一个连接 
     
    --首先创建一个连接创建链接服务器 
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    --查询 
    select * 
    FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    --把本地表导入远程表 
    insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    select * from 本地表 
    --更新本地表 
    update b 
    set b.列B=a.列B 
    FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a  
    inner join 本地表 b on a.列A=b.列A 
     
    --3、opendatasource/openrowset 
    SELECT   * 
    FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta 
    --把本地表导入远程表 
    insert opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 
    select * from
     
     
    --4。
    --EXEC AT使用 必须启动rpc
    EXEC sp_addlinkedserver 'chinancl',' ','SQLOLEDB','CHINANCL-CMS'   --新建连接
    EXEC sp_addlinkedsrvlogin 'chinancl','false',null,'sa','sa'        --用户名 密码
    EXEC sp_serveroption 'chinancl','rpc out',true                     --启动RPC
     
    EXEC
    ('create database text ') at [chinancl]
    EXEC
    (' use text
       create table text (id int)') at [chinancl]
     
    exec sp_dropserver 'chinancl','droplogins'                          --删除链接登录名
  • 相关阅读:
    北京一家JAVA开发公司面试题(留给后人)
    线人
    线人
    潜罪犯
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/zoumin123/p/7072865.html
Copyright © 2011-2022 走看看