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'                          --删除链接登录名
  • 相关阅读:
    如何在Ubuntu Server 18.04上安装Microsoft的Procmon
    如何在Ubuntu 20.04上安装Wine 5.0
    如何在Kali Linux 2020中启用SSH服务
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Apache Groovy
    如何使用命令在Ubuntu 20.04 Linux上安装Vmware Tools
    在Ubuntu 20.04 LTS Focal Fossa上安装Zabbix Agent
    hdu 2089 不要62
    hdu 2093 成绩排名
    hdu 2104 hide handkerchief
    leetcode147对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/zoumin123/p/7072865.html
Copyright © 2011-2022 走看看