多语言展示
当前在线:172今日阅读:23今日分享:25

SQL操作小技巧

在使用SQL Server中的一些小技巧29sql server 基础教程
工具/原料
1

SQL server数据库

2

一台电脑

装数据库

挂起操作我们在安装Sql或sp补丁的时候系统提示之前常有挂起的安装操作,要求重启,这里往往重启无用,解决办法:到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager删除PendingFileRenameOperations 即可问题解决

1

1.把某个字段重新生气序列(从1到n):DECLARE @i intSet @i = 0Update Table1 Set @i = @i + 1,Field1 = @i

2

2.按成绩排名次Update 成绩表Set a.名次 = (Select Count(*) + 1From 成绩表 bWhere a.总成绩 < b.总成绩)From 成绩表 a

3

3.查询外部数据库Select a.*From OpenRowSet('Microsoft.Jet.OLEDB.4.0','c:/test.mdb';'admin';'',Table1) a

4

4.查询Excel文件Select * From OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source='c:/test.xls';User ID=Admin;Password=;Extended properties=Excel 8.0')...Sheet1$

二 分页
1

我们在sql存储过程中在查询结果中包含行号之后分页就容易多了,方法如下:--传入页码和每页个数CREATE proc FD_Get@pageIndex int=1,@pageSize int=20你也可以直接在代码中写分页,然后用Linq返回IQueryable的延迟加载方式,Skip和Take完之后var query=from t in context.t select t;var list=query.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();

2

分页查询SELECT *   FROM #temp   WHERE RowIndex > (@pageIndex - 1) * @pageSize AND RowIndex <= @pageIndex * @pageSize  ORDER BY RowIndex

库操作
1

收缩数据库--重建索引DBCC REINDEXDBCC INDEXDEFRAG--收缩数据和日志DBCC SHRINKDBDBCC SHRINKFILE压缩数据库dbcc shrinkdatabase(dbname)

2

数据库给存在用户权限exec sp_change_users_login 'update_one','newname','oldname'go

3

检查数据备份集RESTORE VERIFYONLY from disk='E:\dvbbs.bak'

4

修复数据库ALTER DATABASE [dvbbs] SET SINGLE_USERGODBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCKGOALTER DATABASE [dvbbs] SET MULTI_USERGO

删除数据库中重复数据的几个方法
1

一是完全重复的记录,也即所有字段均重复的记录,这时我们可以用select distinct * from tableName就可以得到无重复记录的结果集。如果该我们需要删除重复的记录(只保留1条记录),可以按以下方法删除    select distinct * into #Tmp from tableName    drop table tableName    select * into tableName from #Tmp    drop table #Tmp解决问题

2

二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集    select identity(int,1,1) as autoID, * into #Tmp from tableName    select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID    select * from #Tmp where autoID in(select autoID from #tmp2)    最后一个select即得到了Name,Address不重复的结果集

部分操作

获取行号1)使用排名函数row_number:select row_number() over(order by id) as rowindex (速度较慢)2)使用identity函数生成自增字段:select identity(int, 1, 1) as rowindex into #temp from student(速度较快)3)新建一个包含identity(1,1)约束字段的临时表,再把查询结果插入:Create Table #temp  (  rowindex int identity(1,1) PRIMARY KEY, name varchar(50))insert #temp(name)select name from t(效率和前者相同)

跟踪数据库操作

有时我们需要跟踪数据库来操作工具就用SQL Server Profiler,事件选择:一般只选择RPC:Completed和SQL:BatchCompleted跟踪存储过程和批处理语句就够了列筛选器:TextData的“类型于”可以帮助我们过滤掉我们只想看的结果,可以用%key%实现模糊过滤

备份数据库

1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server2、SQL Server组-->双击打开你的服务器-->双击打开数据库目录3、选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择备份数据库4、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份

注意事项
1

以上为个人工作中积累的经验及各位网友的贡献的经验 总结而来

2

删库 这操作还是尽量的不要乱来的好

推荐信息