• 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 只有这样你的下一步迁移才会正确执行。

        其他的功能以后再做讨论,

     
     
    分类: Django
     
    分类: SQLServer
    标签: SQLServer
  • 相关阅读:
    设置DELL R720 的CPU 风扇转速
    mysqldump 备份导出数据排除某张表或多张表
    MySQL 之 LOAD DATA INFILE 快速导入数据 (单表数据很大)
    ACL规则 反掩码的 写法
    配置Nginx 支持中文URL
    如何删除IE中的证书
    微软Surface 上网本 键盘失灵
    华为 S2700忘记console口密码
    Dell PowerEdge R710, R720 用U盘装系统
    用php做省份的三级联动 附带数据库
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3344751.html
Copyright © 2020-2023  润新知