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 ...
随机推荐
- linux后台server开发环境的部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))
linux后台server开发环境部署配置 引言 背景 随着互联网业务的不断增多.开发环境变得越来越复杂,为了便于统一server端的开发部署环境,特制定本配置文档. 使用软件 CentOS 6.3( ...
- C#操作Xml:使用XmlReader读Xml
XmlDocument和XElement在读取Xml时要将整个Xml文档放到内存中去操作,这样做操作简单,但是很费内存和IO(可能是磁盘IO或者网络IO):而在有些场景下我们必须考虑尽可能节省内存和I ...
- 基于 Android 的 3D 视频样本代码
作者:Mark Liu 下载样本代码 简单介绍 在Android 中,创建一个可以播放视频剪辑的应用很easy:创建一个採用 3D 图形平面的游戏应用也很easy.可是,创建一个可以在 3D 图形对象 ...
- js中从blob提取二进制
文章结构: 一.所遇到的问题 二.解决方法 一. 服务器端通过websocket向浏览器端传输图片(二进制),需要根据不同的图片把图片显示在不同的位置,可行的一个方法是先把图片转化成二进制数组,再把二 ...
- 详细的图文介绍如何利用XAMPP本地建站的环境配置教程
原文:详细的图文介绍如何利用XAMPP本地建站的环境配置教程 WordPress 是一个简便快捷,用途广,人气旺的一个开源的博客建站程序.很有很多等您去发现. 简便快捷:在性能上易于操作.易于浏览: ...
- 移动客户端与服务端Session那点秘密
众所周知,做过Web开发的小伙伴可能知道,在浏览器向服务器发一个请求,服务器端会为当前的访问者创建一个session会话,随着浏览器的关闭而会话结束.但是移动客户端咋整呢(IOS/Android啥的) ...
- svg的自述
svg可缩放矢量图形(Scalable Vector Graphics). SVG 使用 XML 格式定义图像. SVG 是使用 XML 来描述二维图形和绘图程序的语言. 什么是SVG? SVG 指可 ...
- 图片alpha blending的计算
转载时请注明出处和作者联系方式:http://blog.csdn.net/mimepp作者联系方式:YU TAO <yut616 at sohu dot com> 一幅彩色图像的每一个像素 ...
- loadrunner必用函数web_reg_save_param获取多个符合边界值条件的使用方法
在做loadrunner性能脚本开发时,常常碰见一个需求:符合web_reg_save_param函数中定义的左右边界值的值有多个,而我们的常规写法默认返回的是符合条件的第一个,而有时我们却需要使用后 ...
- String 的intern() 方法说明
1.说明 Java中string.intern()方法调用会先去字符串常量池中查找相应的字符串,如果字符串不存在,就会在字符串常量池中创建该字符串然后再返回. 2.源码说明 public native ...