[原]常用sqlserver数据库使用sql语句

1、表结构文档生成查询语句:

SELECT
     架构名        = Case When A.colorder=1 Then s.[name] Else ‘‘ End,
     表名       = 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,
     字段说明   = isnull(G.[value],‘‘),
     标识       = 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,‘‘)
 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
 left join sys.tables as t on t.[name]=D.name
 left join sys.schemas as s on t.schema_id = s.schema_id
 --where d.name=‘OrderInfo‘    --如果只查询指定表,加上此条件
 --where s.[name]!=‘dbo‘ and s.[name] in (‘HR‘) --架构名的查询范围
 Order By s.[name],D.name,A.id,A.colorder

2、数据库自动备份的脚本代码

declare @diskPath varchar(250)
declare @name varchar(300)
set @diskPath=‘C:\Backup\MyLogSystem_‘+
convert(varchar(100),getdate(),112)+ replace(CONVERT(varchar(100), GETDATE(), 108),‘:‘,‘‘)+‘.bak‘
set @name=N‘MyLogSystem-完整数据库备份‘
BACKUP DATABASE[MyLogSystem]TO
DISK=@diskPath
WITH NOFORMAT, NOINIT,
NAME = @name,
SKIP, NOREWIND, NOUNLOAD

3、不同服务器间查询导入导出数据

/*不同服务器数据库之间的数据操作*/

--创建链接服务器
exec sp_addlinkedserver   ‘ITSV ‘, ‘ ‘, ‘SQLOLEDB ‘, ‘远程服务器名或ip地址 ‘
exec sp_addlinkedsrvlogin  ‘ITSV ‘, ‘false ‘,null, ‘用户名 ‘, ‘密码 ‘ 

--查询示例
select * from ITSV.数据库名.dbo.表名 

--导入示例
select * into 表 from ITSV.数据库名.dbo.表名 

--以后不再使用时删除链接服务器
exec sp_dropserver  ‘ITSV ‘, ‘droplogins ‘ 

--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset 

--查询示例
select * from openrowset( ‘SQLOLEDB ‘, ‘sql服务器名 ‘; ‘用户名 ‘; ‘密码 ‘,数据库名.dbo.表名) 

--生成本地表
select * into 表 from 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
--把本地表导入远程表 

4、打开和关闭sql查询excel服务.

要用拥有服务器sysadmin角色权限的登录帐号,
先执行下列语句打开SQL SERVER的‘Ad Hoc Distributed Queries‘开关。

exec sp_configure ‘show advanced options‘,1;reconfigure;
exec sp_configure ‘Ad Hoc Distributed Queries‘,1;reconfigure;

配置选项 ‘show advanced options‘ 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。
配置选项 ‘Ad Hoc Distributed Queries‘ 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。

执行查询后,再用相反顺序的语句,关闭‘Ad Hoc Distributed Queries‘开关。

exec sp_configure ‘Ad Hoc Distributed Queries‘,0;reconfigure;
exec sp_configure ‘show advanced options‘,0;reconfigure;

5、PIVOT行转列sql函数

--1、建测试表
create table Insurances (

   RefID                uniqueidentifier     not null,

   HRMS                 nvarchar(20)         null,

   Name                 nvarchar(20)         null,

   InsuranceMoney       money                null,

   InsuranceName        nvarchar(100)        not null,

   constraint PK_INSURANCES primary key (RefID)

)

--2、插入多条数据

insert into Insurances values (newid(),1,‘张三‘,200,‘养老保险‘)

insert into Insurances values (newid(),1,‘张三‘,300,‘医疗保险‘)

insert into Insurances values (newid(),2,‘李四‘,250,‘养老保险‘)

insert into Insurances values (newid(),2,‘李四‘,350,‘医疗保险‘)

insert into Insurances values (newid(),3,‘王二‘,150,‘养老保险‘)

insert into Insurances values (newid(),3,‘王二‘,300,‘医疗保险‘)

--3、聚合行转列查询
select HRMS,Name,InsuranceMoney,InsuranceName From Insurances

select * from
(
select HRMS,Name,InsuranceMoney,InsuranceName from Insurances
) p

Pivot (
sum(InsuranceMoney)
FOR InsuranceName IN
( [医疗保险], [养老保险]))
as pvt

--4、如果pivot函数不支持 需改变但求数据库的等级
sp_dbcmptlevel  BBS, 100

6、mssql查询区分大小写的语句

SELECT *
FROM TbUser
WHERE UserName=‘taobao2‘ collate Chinese_PRC_CS_AI_WS 

7、SQl插入数据的同时返回主键值的语句

insert into dbo.BenefitItem
(BenefitItemNO,BenefitCategoryID,BenefitItemName,RecordStatus) values(‘flx006‘,3,‘test7‘,‘Active‘)
select scope_identity()

8、查询表结构语句2

SELECT
      SO.name as 表名,
      SC.name  as 表列名,
      SC.colid as 索引,
      ST.name as 类型
  FROM
      sysobjects   SO, -- 对象表
      syscolumns   SC, -- 列名表
      systypes     ST  -- 数据类型表
WHERE
so.name=‘cf_popuplst‘  and
     SO.id = SC.id
   AND   SO.xtype = ‘U‘    -- 类型U表示表,V表示视图
   AND   SO.status >= 0 --加一个条件:SO.status >= 0,否则会将系统的临时表显示出来
   AND   SC.xtype = ST.xusertype
ORDER BY
     SO.name, SC.colorder         -- 按表名、列名排序

9、SQL获取视图的Model(Entity)

declare @TableName nvarchar(500)
set @TableName=‘Huashanlin_Talent_ProgressView‘ --不带架构名的视图名

select
‘public ‘+
(
    CASE (A.DataType)
    when ‘int‘ then ‘int?‘
    when ‘nvarchar‘  then ‘string‘
    when ‘varchar‘  then ‘string‘
    when ‘smalldatetime‘  then ‘DateTime?‘
    when ‘datetime‘  then ‘DateTime?‘
    when ‘decimal‘ then ‘decimal?‘
    when ‘money‘ then ‘decimal?‘
    when ‘bit‘ then ‘bool?‘
    else ‘error‘
    end
)
+‘ ‘+A.ColumnName+‘ { get; set; }‘ as ModelContent,
A.ColumnName,A.DataType,A.DataLength,A.Description,
A.IsNullable,A.IsPrimaryKey
from
(
    select
    col.COLUMN_NAME as ColumnName,
    col.DATA_TYPE as DataType,
    col.CHARACTER_OCTET_LENGTH as DataLength,
    col.IS_NULLABLE as IsNullable,
    ccu.CONSTRAINT_NAME as IsPrimaryKey,
    de.value as Description
    from INFORMATION_SCHEMA.COLUMNS col
    left join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ccu
        on ccu.TABLE_NAME=col.TABLE_NAME and ccu.COLUMN_NAME=col.COLUMN_NAME and ccu.CONSTRAINT_NAME like ‘PK_%‘
    left join ::fn_listextendedproperty (NULL, ‘user‘, ‘dbo‘, ‘table‘, @TableName, ‘column‘, default) as de
        on col.COLUMN_NAME = de.objname COLLATE Chinese_PRC_CI_AS
    where col.TABLE_NAME=@TableName
) as A

10、SQL获取表的Model(Entity)

declare @TableName varchar(50)

set @TableName=‘Huashanlin_Talent_ProgressData‘ --表名不需要带架构名

select
‘public ‘+
(
    CASE (A.DataType)
    when ‘int‘ then (
        case
        (
            select top 1 ind.is_primary_key
            from sys.index_columns ic
            left join sys.indexes ind
                on ic.object_id=ind.object_id and ic.index_id=ind.index_id and ind.name like ‘PK_%‘
            where ic.object_id=A.object_id and ic.column_id=A.column_id
        )
            when 1 then ‘int‘
            else ‘int?‘
        end
    )
    when ‘nvarchar‘  then ‘string‘
    when ‘varchar‘  then ‘string‘
    when ‘smalldatetime‘  then ‘DateTime?‘
    when ‘datetime‘  then ‘DateTime?‘
    when ‘bit‘ then ‘bool?‘
    else ‘error‘
    end
)
+‘ ‘
+A.ColumnName+‘ { get; set; }‘ as ModelContent,
(
    select top 1 ind.is_primary_key
    from sys.index_columns ic
    left join sys.indexes ind
        on ic.object_id=ind.object_id and ic.index_id=ind.index_id and ind.name like ‘PK_%‘
    where ic.object_id=A.object_id and ic.column_id=A.column_id
) as IsPrimaryKey,
A.ColumnName,A.IsNullable,A.DataType
from
(
    select
    col.name as ColumnName,
    col.max_length as DataLength,
    col.is_nullable as IsNullable,
    t.name as DataType,
    obj.object_id,
    col.column_id
    from sys.objects obj
    inner join sys.columns col
        on obj.object_id=col.object_id
    left join sys.types t
        on t.user_type_id=col.user_type_id
    where obj.name=@TableName
) as A
时间: 2024-10-14 21:31:29

[原]常用sqlserver数据库使用sql语句的相关文章

sqlserver数据库的sql语句使用

             T-SQL查询语句 1. tansact-SQL编程语言 美国国家标准协会(ANSI)和国际标准组织(ISO)为 SQL定义了标准,微软通过用Transact-SQL和ANSI-SQL兼容,Transact-SQL还包含了几种能够增强性能的扩展. T-SQL的组成:   数据定义语言(Date Definition Language)语句简称DDL语句 DDL语句用来建立数据库,数据库对象(create,alter,drop) create object_name al

[数据库]简单SQL语句总结

1.在查询结果中显示列名:a.用as关键字:select name as '姓名'   from students order by ageb.直接表示:select name '姓名'   from students order by age 2.精确查找:a.用in限定范围:select * from students where native in ('湖南', '四川') b.between...and:select * from students where age between 2

在线数据库表(sql语句)生成java实体类工具

相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设计的一定是数据库表结构,而不是实体类.实体类仅仅是对底层数据结构的有损压缩,它仅仅是数据载体,不具备数据归档能力. 因此,很多时候,我们需要将原始的SQL建表语句转换成java实体类,这项工作看似简单,但若人工完成,工作量也是相当可观的,而且难免会出现差错. 到目前为止,笔者还没有发现比较靠谱的此类

SQL Server 【附】创建&quot;商品管理数据库&quot;、&quot;学生选课数据库&quot;的SQL语句

附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', filename='D:\商品管理系统\商品管理数据库_m.mdf', size=6mb,filegrowth=1mb,maxsize=unlimited) log on(name='商品管理数据库_l', filename='D:\商品管理系统\商品管理数据库_l.ldf', size=1,filegrowth=1

清理数据库事务——SQL语句

清除流程内部的所有相关数据 eg1: declare @procedureTemp table ( [ProcedureCode] varchar(10) ) declare @ProcedureCode varchar(10) INSERT into @procedureTemp SELECT ProcedureCode FROM WorkFlowProcedure WHILE EXISTS(select [ProcedureCode] from @procedureTemp) begin -

在线数据库表(sql语句)生成java实体类工具 - 参考手册

SQL建表语句 说明 格式良好的SQL建表语句,可以是直接从PowerDesigner.Navicat等工具中导出SQL建表语句.所谓格式良好,是指建表指令与表名必须在一行,字段名称.类型.注释必须在一行,因为这个工具是用正则实现的,并不是语法解析器,当然,以后有时间的话,会改进成解析器. 举例 -- ---------------------------- -- Table structure for t_activity -- ---------------------------- DRO

关系型数据库和sql语句相关概念

定义 数据仓库,保存数据的.是一个文件系统,也是使用文件的方式保存数据的,但是访问数据(增加删除 修改  查询)必须使用标准的sql语句来访问 常见的关系型数据库 *Oracle        -- 大型的应用,收费的. *MySQL       -- 小型的数据库,免费开源的!被Oracle收购了,从6.x版本开始收费. *SQLServer     -- 微软 *DB2           -- IBM的公司,银行的企业. 相关概念 *在电脑上安装数据库的服务器,在数据库服务器中创建多个数据

数据库基本----SQL语句大全

学会数据库是很实用D~~记录一些常用的sql语句...有入门有提高有见都没见过的...好全...收藏下...其实一般用的就是查询,插入,删除等语句而已....但学学存储过程是好事...以后数据方面的东西就不用在程序里搞喽..而且程序与数据库只要一个来回通讯就可以搞定所有数据的操作.... 一.基础 1.说明:创建数据库Create DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 d

MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系

数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于excel),用来存放多行内容/多条记录 5. 记录:事物一系列典型的特征 6. 数据:描述事物特征的符号 MySQL数据库就是一个套接字软件,用来管理其他机器上的数据文件 MySQL介绍: MySQL是一个关系型数据库管理系统:就是一个基于socket编写的C/S架构胡软件 客户端软件 mysql