[原]常用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
[原]常用sqlserver数据库使用sql语句的更多相关文章
- 总结一些关于操作数据库是sql语句还是存储过程问题
总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...
- mysql(数据库,sql语句,普通查询)
第1章 数据库 1.1 数据库概述 l 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. l 什 ...
- Oracle学习总结(7)—— 常用的数据库索引优化语句总结
不管是用C/C++/Java等代码编写的程序,还是SQL编写的数据库脚本,都存在一个持续优化的过程.也就是说,代码优化对于程序员来说,是一个永恒的话题. 近期,我们对之前编写的数据库脚本进行了全面的自 ...
- [数据库]简单SQL语句总结
1.在查询结果中显示列名:a.用as关键字:select name as '姓名' from students order by ageb.直接表示:select name '姓名' from ...
- SQL Server 【附】创建"商品管理数据库"、"学生选课数据库"的SQL语句
附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', file ...
- 在线数据库表(sql语句)生成java实体类工具
相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设 ...
- Oracle数据库 基础SQL语句练习
一.说明 第一次使用Oracle,想做一些练习,熟悉一些oracle. 表:使用的是scott用户,默认的表 具体表讲解,可以参考该文档:https://www.cnblogs.com/xjcheng ...
- 常用的几条sql语句
### 常用的几条sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,v ...
- sqlServer存储过程与sql语句的区别
sqlServer 存储过程与sql语句的区别 sql存储过程与sql语句的区别: 从以下几个方面考虑: 1.编写: 存储过程:编写比较难: sql语句:相对简单: 2.性能: 存储过程:高,可移 ...
随机推荐
- Create executable jar
META-INF Manifest-Version: 1.0 Class-Path: . Main-Class: package.ClassName package package ClassName ...
- 从0开始学Swift笔记整理(二)
这是跟在上一篇博文后续内容: --函数中参数的传递引用 类是引用类型,其他的数据类型如整型.浮点型.布尔型.字符.字符串.元组.集合.枚举和结构体全部是值类型. 有的时候就是要将一个值类型参数以引用方 ...
- Replication--复制延迟的诊断和解决
要解决复制延迟问题,需要首先定位复制延迟发生点,再找出复制延迟的原因,再做相应处理. 复制延迟发生点:1. 发布服务器2. 分发服务器3. 订阅服务器4. 发布服务器与分发服务器和分发服务器与订阅服务 ...
- GitLab:解决Merge Request中Commits不更新的问题
最近在使用 GitLab 的 Merge Requests 功能进行 Code Review .操作流程是这样的: 1)开发人员A要给一个项目增加一个新功能,先在这个项目上创建一个 Git 分支. 2 ...
- 用AutoHotKey彻底解决“Ctrl键+鼠标滚动”时的缩放问题
“Ctrl键+鼠标滚动”会造成代码编辑窗口的字体缩放,这是自Visual Studio 2010以来引入的一个新特性,也是一个恼人的问题,详见VS2010中尴尬的代码窗口缩放功能. 于是,每次安装Vi ...
- input text 的事件及方法
事件 描述onactivate 当对象设置为活动元素时触发.onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发.onbeforeactivate 对象要被设置为当前元素 ...
- python脚本实现集群检测和管理
python脚本实现集群检测和管理 场景是这样的:一个生产机房,会有很多的测试机器和生产机器(也就是30台左右吧),由于管理较为混乱导致了哪台机器有人用.哪台机器没人用都不清楚,从而产生了一个想法-- ...
- java 连接 MySQL
java 连接 MySQL 1.准备工作 需要下载的工具: MySQL:http://www.mysql.com/downloads/ MySQL的可视化工具SQLyog:https://www.we ...
- 如何绕过chrome的弹窗拦截机制
如何绕过chrome的弹窗拦截机制 在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的.举个例子: var btn = $('#btn'); btn.click(fun ...
- 为什么说外卖O2O行业的未来在于尖端技术?
7月13日,百度公司董事长兼CEO李彦宏在发布会上谈及百度外卖时表示,百度外卖里有非常多的人工智能技术的应用,比如同样的商家订单,先配送后配送,时间路线规划等等,都有人工智能的技术,涉及机器学习的问题 ...