SqlServer日常积累(一)
1. 将一个表的数据插入另一个表
情况一:目标表已存在
(1)如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:
Insert Into 目标表 Select * From 来源表;
--例如
Insert Into newArticles Select * From articles;
(2)如果只希望导入指定字段,可以用这种方法:
Insert Into 目标表 (字段1, 字段2, ...) Select 字段1, 字段2, ... From 来源表;
情况二:目标表不存在
(1)如果将一个表的数据放在另外一个不存在的表:
Select * Into 目标不存在的表 From 来源表
(2)如果只希望导入指定字段,可以用这种方法:
Select 字段1,字段2,... Into 目标不存在的表 From 来源表
2. sql修改表的字段类型
alter table 表名 alter column 字段名 新的字段类型
--例如
alter table mytable alter column mycol1 int default 0
3. 远程导入表数据(不同服务器数据库之间的数据操作)
方法一:
(title,author,riqi,content,ispic,istop,pic,zhaiyao)
select Title,Author,UpdateTime,Content,IncludePic,OnTop,DefaultPicUrl,cast(lmd as varchar(20)) from Article
启用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
5. 用第二个表数据更新主表字段
方式一(适用于多字段):
UPDATE tableA
SET name = B.name, age = B.age
FROM tableA A,tableB B WHERE A.Id = B.Id
方式二(适用于单字段):
UPDATE tableA
SET name = (SELECT B.name FROM tableB B
WHERE B.Id = Id)
6. 添加行号列(row_number()此函数2005后数据库可用)
select row_number()over(order by userid )as RowNum, * from tableName
7.动态语句中添加变量
(1)非字符串类型变量
declare
@Number int,@sql nvarchar(1000)
set @Number = 19;
set @sql = 'select Time, Humidity, EquipmentNum
from DataMonitoring
where Id = '+convert(nvarchar(10),@Number);
exec(@sql);
(2)字符串类型变量
declare
@Char nvarchar(20),@sql nvarchar(1000)
set @Char = '00:00';
set @sql = 'select Time, Humidity, EquipmentNum
from DataMonitoring
where Time = '''+@Char+'''';
exec(@sql);
8.选取数据插入临时表并添加自增行号
declare
@maxRowNum int, @sql nvarchar(1000)
select Time, Humidity, EquipmentNum, RowNum = identity(int,1,1)
into #temp0 from DataMonitoring where Time = '00:00' select @maxRowNum = max(RowNum) from #temp0; set @sql = 'select Time, Humidity, EquipmentNum, RowNum = identity(int,'+convert(nvarchar(10),@maxRowNum+1)+',1)
into ##temp0 from DataMonitoring where Time = ''01:00''';
exec(@sql);
select * from ##temp0 union select * from #temp0 order by RowNum;
drop table #temp0; drop table ##temp0;
9. @Result = @@ROWCOUNT
返回受上一语句影响的行数。 如果行数大于 20 亿,请使用 @@ROWCOUNT_BIG。
10. 在sql存储过程中,不能使用表明变量(如:@tableName),若想使用表明变量只可使用动态Sql语句。
Create Procedure GetList
@tablename varchar(20)
AS
BEGIN
declare @sqlcommand varchar(max) --sql名称串变量
set @sqlcommand ='select * from '+@tablename --构造这个字符串
exec(@sqlcommand ) --执行sql命令
END
GO
SqlServer日常积累(一)的更多相关文章
- SqlServer日常积累(三)
1.TRUNCATE 和 DELETE TRUNCATE操作没有记录删除操作日志 主要的原因是因为 TRUNCATE 操作不会激活触发器,因为TRUNCATE操作不会记录各行删除操作的日志,所以当你需 ...
- SqlServer日常积累(二)
1.Like运算符:将字符串表达式与 SQL表达式中的模式进行比较匹配. 语法 :expression Like 'pattern' ,expression为匹配字段,pattern为匹配字符串.可以 ...
- Python 日常积累
包管理 >from ... import ... 的用法和直接import的区别 直接使用import时,如果需要使用到导入模块内的属性和方法,必须使用模块名.属性和模块名.方法的方式进行调用 ...
- 日常积累oracle 有关信息
对于VARCHAR2类型,我们在内存使用和效率上需要做出一个权衡.对于VARCHAR2(长度>=2000)变量,PL/SQL动态分配内存来存放实际值,但对于VARCHAR2(长度<2000 ...
- 日常积累之JSON.stringify和JSON.parse substr
1.substr(start,len) 从字符串中读取内容,第一个参数是读取的首位置,如果为负数,则从末尾倒数计数. 第二个参数是要读取的长度. eg: var str = "silence ...
- 苹果浏览器和uc浏览器在移动端的坑(日常积累,随时更新)
先mark 1 . 移动端uc浏览器不兼容css3 calc() 2 . ie8下a标签没有内容给宽高也不能触发点击跳转 3 . safari输入框加上readOnly="ture&qu ...
- SQL 性能调优日常积累
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习.摘录.并汇总部分资料与大家分享! (1)选择最有效率的表名顺序(只在基于规则的优化器中有效) ORACLE 的解析器按照从右到左 ...
- SQL 性能调优日常积累【转】
阅读目录 (1)选择最有效率的表名顺序(只在基于规则的优化器中有效) (2)WHERE子句中的连接顺序 (3)SELECT子句中避免使用 ‘ * ‘ (4)减少访问数据库的次数 (5)在SQL*Plu ...
- sqlserver日常维护脚本
SQL code --备份declare @sql varchar(8000) set @sql='backup database mis to disk=''d:\databack\mis\mis' ...
随机推荐
- opencv hog算子
梯度直方图特征(HOG) 是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功 ...
- UEFI引导模式
Author: JinDate: 20140827System: windows 刚帮楼下的公司解决了个问题. 原来的办公电脑,预装linux,他们重装成win7.新买的电脑预装成win8,安装出问题 ...
- 成为一名JAVA高级工程师你需要学什么【转】
宏观上: 1.技术广度方面至少要精通多门开源技术吧,研究过struts\spring等的源码. 2.项目经验方面从头到尾跟过几个大项目,头是指需求阶段,包括需求调研.尾是指上线交付之后,包括维护阶段. ...
- HeapAlloc 和 GlobalAlloc 以及 VirtualAlloc 三者之间的关系(转)
VirtualAlloc 一次分配 1PAGE 以上的 RAM. 每次分配都是 PAGE 的整数倍. 你不会想为了分配 1 个 BYTE 的空间而浪费剩下的 4095 字节. OK, 你可以自己写算法 ...
- 通过adb shell操作android真机的SQLite数据库
要通过命令行直接操作android真机上的SQLite数据库,可以直接通过adb shell来完成,不过,前提是必须获得root权限. 另外,android系统其实就是linux的shell,这个应该 ...
- 【原】移动web资源整理(安卓、ios移动端兼容性问题归整)
meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wi ...
- OPC Server开发的几大境界
OPC server的开发相对OPC client 更加困难,OPC server 的开发主要应用COM技术,主要应用书籍为潘爱民写的<COM入门和应用>,大量的技术有很大的可重用性,在开 ...
- arcgis andriod GeometryEngine使用
intersectionMenuItem.setChecked(true); showGeometry(GeometryEngine.intersection(inputPolygon1, input ...
- 序列化人人网框架下的DAO?也就是在Spring下序列化DAO的问题(spring+quartz集群下)
人人网框架地址:http://code.google.com/p/paoding-rose/ 问题发生: 用Quartz作集群时用JobDataMap传递DAO,提示DAO未序列化,可框架的DAO为接 ...
- Java Net版短网址(ShortUrl)的算法及实现 待续
算法 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3) ...