T-SQL 随机返回特定行数据和分页查询
T-SQL 随机返回特定行数据和分页查询
T-SQL 语言相较于标准SQL添加了很多特性,为了提高SQL Server的表现,是有必要深入了解的,面试时一般也会包含这两个小问题。
首先,是在一个AdventureWorks中Person.Address中随机返回5行信息,可以如下写:

SELECT TOP 5 *
FROM
(
SELECT *,NEWID() as RandomID
FROM Person.Address
) t
ORDER BY t.RandomID

关键在于调用了内置函数NEWID()生成的随机数,并排序,取前5行。
分页查询,需要查询Person.Address中按城市排序后的第50-200行,当然可以写一个存储过程来专门按参数来查询。
SELECT * FROM
(
SELECT *,ROW_NUMBER() OVER (ORDER BY City) as RowNumber
FROM Person.Address
) AS t
WHERE t.RowNumber BETWEEN 50 AND 200
关键是采用了ROW_NUMBER()函数,计算在所有查询行中当前行是排行第几,再筛选最后的结果。
总结:用一些语言的特性,虽然绑定了平台,不过,在一个大平台上,就无所谓了,用它还是值得的。
Django数据库迁移
如果你用过Django的数据库就会发现一个比较令人纠结的地方:数据库更改。
我们知道添加或者删除一个models.Model 需要在数据库里相应的操作,这需要我们进入数据库命令行手动添加或删除,因为syncdb命令无法进行数据库的更改只能进行更新操作。手动修改过于麻烦,也许更残忍的方法就是直接删除整个database,然后重新建立一个database,这个方法对于项目初期尚可以。
但是幸运的是,我们有south来完成数据库的迁移。
下载安装:
easy_install south
设置:
把south 放进 settings.py 里的 INSTALLED_APPS

执行 syncdb 命令

我们看到一个信息 Creating table south_migrationhistory 顾名思义 我们知道生成了一个记录migration历史的表。
我们把自己的app (本文是blog)加入到Migration中去
执行 python manage.py convert_to_south blog

可以看到 我们在blog文件夹里自动生成了migrations文件夹,里面存放着 迁移文件0001_initial.py 。
好了,到现在我们可以随意修改model了,哈哈 。
如果你修改了model,首先执行 python manage.py schemamigration yourapp --auto,然后就会生成一个0002_auto__xxxx.py文件
但是这还没有修改到数据库,我们再执行 python manage.py migrate yourapp 就一切OK了。
上面的功能对于一般情况的使用已经足够了,接下来我们讲一讲其他的功能:
convert_to_south命令只能够使用在你所运行这一命令的第一台机器上,如果你把服务器部署在你的 VCS,你需要在每一台有你的codebase的机器(确保你已经升级了model 和scheme 表)上执行命令 manage.py migrate myapp 0001 --fake 只有这样你的下一步迁移才会正确执行。
其他的功能以后再做讨论,
T-SQL 随机返回特定行数据和分页查询的更多相关文章
- ADO.NET笔记——使用Connection连接数据库,使用Command对象的ExecuteReader()方法创建DataReader对象返回多行数据
使用Connection连接数据库,使用DataReader访问数据库,并返回多行数据. 相关步骤: 需要引入两个命名空间 using System.Data; using System.Data.S ...
- 通过DBCC Page查看在SQL Server中哪行数据被锁住了?
原文:通过DBCC Page查看在SQL Server中哪行数据被锁住了? 如何查看被锁的是哪行数据?通过dbcc page可以. 要想明白这个问题: 首先,需要模拟阻塞问题,这里直接模拟了阻塞问题的 ...
- MySQL大数据量分页查询方法及其优化
MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适 ...
- 利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
在Asp.net Web API中,对业务数据的分页查询处理是一个非常常见的接口,我们需要在查询条件对象中,定义好相应业务的查询参数,排序信息,请求记录数和每页大小信息等内容,根据这些查询信息,我们在 ...
- 防SQL注入:生成参数化的通用分页查询语句
原文:防SQL注入:生成参数化的通用分页查询语句 前些时间看了玉开兄的“如此高效通用的分页存储过程是带有sql注入漏洞的”这篇文章,才突然想起某个项目也是使用了累似的通用分页存储过程.使用这种通用的存 ...
- sql 随机抽取几条数据的方法 推荐
传说用这个语句管用:select top 5 * from tablename order by newid() 我放到sql的查询分析器里去执行果然管用,随机抽取5条信息,不停的换,结果我应用到程序 ...
- Oracle sql%rowcount 返回影响行数;sql server @@RowCount返回影响行数
sql server中,返回影响行数是:If @@RowCount<1 Oracle中,返回影响行数是:If sql%rowcount<1 例: sqlserver: create pro ...
- SQL 随机取出一条数据
今天遇到一需求,需要随机取出一条数据.网上找了下,sqlserver自带的有newID()这个函数,可以随机出来一个guid,用来取随机数还是蛮不错的. 直接上SQL: select top 1 *, ...
- sql%rowcount 返回影响行数
oracle中.返回影响行数是:If sql%rowcount 举例: update ut_calenderStatus t set t.calenderstatus=pi_flg, t.m=pi_M ...
随机推荐
- hdu 新生晚会
Problem Description 开学了,杭电又迎来了好多新生.ACMer想为新生准备一个节目.来报名要表演节目的人很多,多达N个,但是只需要从这N个人中选M个就够了,一共有多少种选择方法? ...
- Android - "cause failed to find target android-14" 问题
"cause failed to find target android-14" 问题 本文地址: http://blog.csdn.net/caroline_wendy Andr ...
- crawler_x-requested-with 请求头
在分析微博热点话题时 拿到异步请求后,有个关键参数 x-request-with 不携带不给正确响应 在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的He ...
- Android Permission denied 错误 ( 附Android权限大全 )
Android Permission denied 错误(附Android权限大全) java.net.SocketException: Permission denied (maybe missin ...
- 【设计模式】Abstract Factory模式
抽象工厂模式是工厂方法模式的进一步强化.当工厂函数仅仅须要产生一种类型的产品(全部产品都继承自同一抽象基类)时,使用工厂方法模式就可以. 可是.当用户程序须要创建多种类型的产品,而这些产品又有一定的内 ...
- UVA - 817 According to Bartjens
Description According to Bartjens The wide dissemination of calculators and computers has itsdisad ...
- ECLIPSE实现了界面显示所有类
按下接口名称CTRL+T实现全面实施的接口类显示 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- 发现新大陆:一个最简单的破解SSL加密网络数据包的方法
1. 简介 相信能访问到这篇文章的同行基本上都会用过流行的网络抓包工具WireShark,用它来抓取相应的网络数据包来进行问题分析或者其他你懂的之类的事情. 一般来说,我们用WireShark来抓取包 ...
- 日积月累系列之国籍控件(js源码)
一直苦于没有好的国籍控件可以用,于是抽空写了一个国籍控件,现分享给大家. 主要功能和界面介绍 国籍控件主要支持中文.英文过滤以及键盘上下事件. 源码介绍 国籍控件核心是两个文件,navtionalit ...
- shell 批量压缩指定文件夹及子文件夹内图片
shell 批量压缩指定文件夹及子文件夹内图片 用户上传的图片,一般都没有经过压缩,造成空间浪费.因此须要编写一个程序,查找文件夹及子文件夹的图片文件(jpg,gif,png),将大于某值的图片进行压 ...